UNPKG

@cdklabs/aws-data-solutions-framework

Version:
51 lines 7.43 kB
"use strict"; // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 Object.defineProperty(exports, "__esModule", { value: true }); const cdk = require("aws-cdk-lib"); const aws_iam_1 = require("aws-cdk-lib/aws-iam"); const lib_1 = require("../lib"); const lambda_layer_kubectl_v33_1 = require("@aws-cdk/lambda-layer-kubectl-v33"); class ExampleSparkEmrContainersStack extends cdk.Stack { constructor(scope, id) { super(scope, id); const kubectlLayer = new lambda_layer_kubectl_v33_1.KubectlV33Layer(this, 'kubectlLayer'); const emrEksCluster = lib_1.SparkEmrContainersRuntime.getOrCreate(this, { eksAdminRole: aws_iam_1.Role.fromRoleArn(this, 'EksAdminRole', 'arn:aws:iam::12345678912:role/role-name-with-path'), publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false kubectlLambdaLayer: kubectlLayer, }); const s3Read = new aws_iam_1.PolicyDocument({ statements: [new aws_iam_1.PolicyStatement({ actions: [ 's3:GetObject', ], resources: [ 'arn:aws:s3:::aws-data-analytics-workshops', 'arn:aws:s3:::aws-data-analytics-workshops/*' ], })], }); const s3ReadPolicy = new aws_iam_1.ManagedPolicy(this, 's3ReadPolicy', { document: s3Read, }); /// !show emrEksCluster.addEmrVirtualCluster(this, { name: 'dailyjob', createNamespace: true, eksNamespace: 'dailyjobns', }); const execRole = emrEksCluster.createExecutionRole(this, 'ExecRole', s3ReadPolicy, // the IAM managed policy granting permissions required by the Spark job 'dailyjobns', // the namespace of the virtual cluster 's3ReadExecRole' //the IAM role name ); new cdk.CfnOutput(this, 'execRoleArn', { value: execRole.roleArn, }); /// !hide } } const app = new cdk.App(); new ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmstZW1yLXJ1bnRpbWUtY29udGFpbmVycy1leGVjcm9sZS5saXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvY2Vzc2luZy9leGFtcGxlcy9zcGFyay1lbXItcnVudGltZS1jb250YWluZXJzLWV4ZWNyb2xlLmxpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQzs7QUFFdEMsbUNBQW1DO0FBQ25DLGlEQUEyRjtBQUUzRixnQ0FBbUQ7QUFDbkQsZ0ZBQW9FO0FBR3BFLE1BQU0sOEJBQStCLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDcEQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFlBQVksR0FBRyxJQUFJLDBDQUFlLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sYUFBYSxHQUFHLCtCQUF5QixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDaEUsWUFBWSxFQUFFLGNBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRyxtREFBbUQsQ0FBQztZQUMxRyxpQkFBaUIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLDJFQUEyRTtZQUMvRywrQkFBK0IsRUFBRSxJQUFJLEVBQUUsaUVBQWlFO1lBQ3hHLGtCQUFrQixFQUFFLFlBQVk7U0FDakMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsSUFBSSx3QkFBYyxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxDQUFDLElBQUkseUJBQWUsQ0FBQztvQkFDL0IsT0FBTyxFQUFFO3dCQUNQLGNBQWM7cUJBQ2Y7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULDJDQUEyQzt3QkFDM0MsNkNBQTZDO3FCQUFDO2lCQUMvQyxDQUFDLENBQUM7U0FDSixDQUFDLENBQUM7UUFFSCxNQUFNLFlBQVksR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUMzRCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFFSCxTQUFTO1FBQ1QsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRTtZQUN2QyxJQUFJLEVBQUUsVUFBVTtZQUNoQixlQUFlLEVBQUUsSUFBSTtZQUNyQixZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsbUJBQW1CLENBQ2hELElBQUksRUFDSixVQUFVLEVBQ1YsWUFBWSxFQUFFLHdFQUF3RTtRQUN0RixZQUFZLEVBQUUsd0NBQXdDO1FBQ3RELGdCQUFnQixDQUFDLG1CQUFtQjtTQUNuQyxDQUFDO1FBRUYsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDckMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1NBQ3hCLENBQUMsQ0FBQztRQUNILFNBQVM7SUFDWCxDQUFDO0NBQ0Y7QUFHRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixJQUFJLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTWFuYWdlZFBvbGljeSwgUG9saWN5RG9jdW1lbnQsIFBvbGljeVN0YXRlbWVudCwgUm9sZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTcGFya0VtckNvbnRhaW5lcnNSdW50aW1lIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IEt1YmVjdGxWMzNMYXllciB9IGZyb20gJ0Bhd3MtY2RrL2xhbWJkYS1sYXllci1rdWJlY3RsLXYzMyc7XG5cblxuY2xhc3MgRXhhbXBsZVNwYXJrRW1yQ29udGFpbmVyc1N0YWNrIGV4dGVuZHMgY2RrLlN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgXG4gICAgY29uc3Qga3ViZWN0bExheWVyID0gbmV3IEt1YmVjdGxWMzNMYXllcih0aGlzLCAna3ViZWN0bExheWVyJyk7XG4gICAgXG4gICAgY29uc3QgZW1yRWtzQ2x1c3RlciA9IFNwYXJrRW1yQ29udGFpbmVyc1J1bnRpbWUuZ2V0T3JDcmVhdGUodGhpcywge1xuICAgICAgZWtzQWRtaW5Sb2xlOiBSb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdFa3NBZG1pblJvbGUnICwgJ2Fybjphd3M6aWFtOjoxMjM0NTY3ODkxMjpyb2xlL3JvbGUtbmFtZS13aXRoLXBhdGgnKSxcbiAgICAgIHB1YmxpY0FjY2Vzc0NJRFJzOiBbJzEwLjAuMC4wLzMyJ10sIC8vIFRoZSBsaXN0IG9mIHB1YmxpYyBJUCBhZGRyZXNzZXMgZnJvbSB3aGljaCB0aGUgY2x1c3RlciBjYW4gYmUgYWNjZXNzaWJsZVxuICAgICAgY3JlYXRlRW1yT25Fa3NTZXJ2aWNlTGlua2VkUm9sZTogdHJ1ZSwgLy9pZiB0aGUgdGhlIHNlcnZpY2UgbGlua2VkIHJvbGUgYWxyZWFkeSBleGlzdHMgc2V0IHRoaXMgdG8gZmFsc2VcbiAgICAgIGt1YmVjdGxMYW1iZGFMYXllcjoga3ViZWN0bExheWVyLFxuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IHMzUmVhZCA9IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICBzdGF0ZW1lbnRzOiBbbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnczM6R2V0T2JqZWN0JyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgJ2Fybjphd3M6czM6Ojphd3MtZGF0YS1hbmFseXRpY3Mtd29ya3Nob3BzJyxcbiAgICAgICAgICAnYXJuOmF3czpzMzo6OmF3cy1kYXRhLWFuYWx5dGljcy13b3Jrc2hvcHMvKiddLFxuICAgICAgICB9KV0sXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgY29uc3QgczNSZWFkUG9saWN5ID0gbmV3IE1hbmFnZWRQb2xpY3kodGhpcywgJ3MzUmVhZFBvbGljeScsIHtcbiAgICAgICAgZG9jdW1lbnQ6IHMzUmVhZCxcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLy8gIXNob3dcbiAgICAgIGVtckVrc0NsdXN0ZXIuYWRkRW1yVmlydHVhbENsdXN0ZXIodGhpcywge1xuICAgICAgICBuYW1lOiAnZGFpbHlqb2InLFxuICAgICAgICBjcmVhdGVOYW1lc3BhY2U6IHRydWUsXG4gICAgICAgIGVrc05hbWVzcGFjZTogJ2RhaWx5am9ibnMnLFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGNvbnN0IGV4ZWNSb2xlID0gZW1yRWtzQ2x1c3Rlci5jcmVhdGVFeGVjdXRpb25Sb2xlKFxuICAgICAgICB0aGlzLCBcbiAgICAgICAgJ0V4ZWNSb2xlJywgXG4gICAgICAgIHMzUmVhZFBvbGljeSwgLy8gdGhlIElBTSBtYW5hZ2VkIHBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyByZXF1aXJlZCBieSB0aGUgU3Bhcmsgam9iXG4gICAgICAgICdkYWlseWpvYm5zJywgLy8gdGhlIG5hbWVzcGFjZSBvZiB0aGUgdmlydHVhbCBjbHVzdGVyIFxuICAgICAgICAnczNSZWFkRXhlY1JvbGUnIC8vdGhlIElBTSByb2xlIG5hbWVcbiAgICAgICAgKTsgXG4gICAgICAgIFxuICAgICAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnZXhlY1JvbGVBcm4nLCB7XG4gICAgICAgICAgdmFsdWU6IGV4ZWNSb2xlLnJvbGVBcm4sXG4gICAgICAgIH0pO1xuICAgICAgICAvLy8gIWhpZGVcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgXG4gICAgY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcbiAgICBuZXcgRXhhbXBsZVNwYXJrRW1yQ29udGFpbmVyc1N0YWNrKGFwcCwgJ0V4YW1wbGVTcGFya0VtclNlcnZlcmxlc3NTdGFjaycpO1xuIl19