UNPKG

@cdklabs/aws-data-solutions-framework

Version:
61 lines 8.98 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"); /// !show class ExampleSparkEmrContainersStack extends cdk.Stack { constructor(scope, id) { super(scope, id); //Layer must be changed according to the Kubernetes version used 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, }); const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, { name: 'dailyjob', createNamespace: true, eksNamespace: 'dailyjobns', }); const execRole = emrEksCluster.createExecutionRole(this, 'ExecRole', s3ReadPolicy, 'dailyjobns', // the namespace of the virtual cluster 's3ReadExecRole'); //the IAM role name new cdk.CfnOutput(this, 'virtualClusterArn', { value: virtualCluster.attrArn, }); new cdk.CfnOutput(this, 'execRoleArn', { value: execRole.roleArn, }); //Driver pod template new cdk.CfnOutput(this, 'driverPodTemplate', { value: emrEksCluster.podTemplateS3LocationCriticalDriver, }); //Executor pod template new cdk.CfnOutput(this, 'executorPodTemplate', { value: emrEksCluster.podTemplateS3LocationCriticalExecutor, }); } } /// !hide const app = new cdk.App(); new ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmstZW1yLXJ1bnRpbWUtY29udGFpbmVycy1kZWZhdWx0LmxpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm9jZXNzaW5nL2V4YW1wbGVzL3NwYXJrLWVtci1ydW50aW1lLWNvbnRhaW5lcnMtZGVmYXVsdC5saXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7O0FBRXRDLG1DQUFtQztBQUNuQyxpREFBMkY7QUFFM0YsZ0NBQW1EO0FBQ25ELGdGQUFvRTtBQUVwRSxTQUFTO0FBQ1QsTUFBTSw4QkFBK0IsU0FBUSxHQUFHLENBQUMsS0FBSztJQUNwRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLGdFQUFnRTtRQUNoRSxNQUFNLFlBQVksR0FBRyxJQUFJLDBDQUFlLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sYUFBYSxHQUFHLCtCQUF5QixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDaEUsWUFBWSxFQUFFLGNBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRyxtREFBbUQsQ0FBQztZQUMxRyxpQkFBaUIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLDJFQUEyRTtZQUMvRywrQkFBK0IsRUFBRSxJQUFJLEVBQUUsaUVBQWlFO1lBQ3hHLGtCQUFrQixFQUFFLFlBQVk7U0FDakMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsSUFBSSx3QkFBYyxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxDQUFDLElBQUkseUJBQWUsQ0FBQztvQkFDL0IsT0FBTyxFQUFFO3dCQUNQLGNBQWM7cUJBQ2Y7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULDJDQUEyQzt3QkFDM0MsNkNBQTZDO3FCQUFDO2lCQUMvQyxDQUFDLENBQUM7U0FDSixDQUFDLENBQUM7UUFFSCxNQUFNLFlBQVksR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUMzRCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFO1lBQzlELElBQUksRUFBRSxVQUFVO1lBQ2hCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FDaEQsSUFBSSxFQUNKLFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUFFLHdDQUF3QztRQUN0RCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO1FBRXRDLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDM0MsS0FBSyxFQUFFLGNBQWMsQ0FBQyxPQUFPO1NBQzlCLENBQUMsQ0FBQztRQUVILElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3JDLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTztTQUN4QixDQUFDLENBQUM7UUFFSCxxQkFBcUI7UUFDckIsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUMzQyxLQUFLLEVBQUUsYUFBYSxDQUFDLG1DQUFvQztTQUMxRCxDQUFDLENBQUM7UUFFSCx1QkFBdUI7UUFDdkIsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUM3QyxLQUFLLEVBQUUsYUFBYSxDQUFDLHFDQUFzQztTQUM1RCxDQUFDLENBQUM7SUFFTCxDQUFDO0NBQ0Y7QUFDRCxTQUFTO0FBRVQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUIsSUFBSSw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IE1hbmFnZWRQb2xpY3ksIFBvbGljeURvY3VtZW50LCBQb2xpY3lTdGF0ZW1lbnQsIFJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgU3BhcmtFbXJDb250YWluZXJzUnVudGltZSB9IGZyb20gJy4uL2xpYic7XG5pbXBvcnQgeyBLdWJlY3RsVjMzTGF5ZXIgfSBmcm9tICdAYXdzLWNkay9sYW1iZGEtbGF5ZXIta3ViZWN0bC12MzMnO1xuXG4vLy8gIXNob3dcbmNsYXNzIEV4YW1wbGVTcGFya0VtckNvbnRhaW5lcnNTdGFjayBleHRlbmRzIGNkay5TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIFxuICAgIC8vTGF5ZXIgbXVzdCBiZSBjaGFuZ2VkIGFjY29yZGluZyB0byB0aGUgS3ViZXJuZXRlcyB2ZXJzaW9uIHVzZWRcbiAgICBjb25zdCBrdWJlY3RsTGF5ZXIgPSBuZXcgS3ViZWN0bFYzM0xheWVyKHRoaXMsICdrdWJlY3RsTGF5ZXInKTtcbiAgICBcbiAgICBjb25zdCBlbXJFa3NDbHVzdGVyID0gU3BhcmtFbXJDb250YWluZXJzUnVudGltZS5nZXRPckNyZWF0ZSh0aGlzLCB7XG4gICAgICBla3NBZG1pblJvbGU6IFJvbGUuZnJvbVJvbGVBcm4odGhpcywgJ0Vrc0FkbWluUm9sZScgLCAnYXJuOmF3czppYW06OjEyMzQ1Njc4OTEyOnJvbGUvcm9sZS1uYW1lLXdpdGgtcGF0aCcpLFxuICAgICAgcHVibGljQWNjZXNzQ0lEUnM6IFsnMTAuMC4wLjAvMzInXSwgLy8gVGhlIGxpc3Qgb2YgcHVibGljIElQIGFkZHJlc3NlcyBmcm9tIHdoaWNoIHRoZSBjbHVzdGVyIGNhbiBiZSBhY2Nlc3NpYmxlXG4gICAgICBjcmVhdGVFbXJPbkVrc1NlcnZpY2VMaW5rZWRSb2xlOiB0cnVlLCAvL2lmIHRoZSB0aGUgc2VydmljZSBsaW5rZWQgcm9sZSBhbHJlYWR5IGV4aXN0cyBzZXQgdGhpcyB0byBmYWxzZVxuICAgICAga3ViZWN0bExhbWJkYUxheWVyOiBrdWJlY3RsTGF5ZXIsXG4gICAgfSk7XG4gICAgXG4gICAgY29uc3QgczNSZWFkID0gbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgIHN0YXRlbWVudHM6IFtuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdzMzpHZXRPYmplY3QnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAnYXJuOmF3czpzMzo6OmF3cy1kYXRhLWFuYWx5dGljcy13b3Jrc2hvcHMnLFxuICAgICAgICAgICdhcm46YXdzOnMzOjo6YXdzLWRhdGEtYW5hbHl0aWNzLXdvcmtzaG9wcy8qJ10sXG4gICAgICAgIH0pXSxcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBjb25zdCBzM1JlYWRQb2xpY3kgPSBuZXcgTWFuYWdlZFBvbGljeSh0aGlzLCAnczNSZWFkUG9saWN5Jywge1xuICAgICAgICBkb2N1bWVudDogczNSZWFkLFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGNvbnN0IHZpcnR1YWxDbHVzdGVyID0gZW1yRWtzQ2x1c3Rlci5hZGRFbXJWaXJ0dWFsQ2x1c3Rlcih0aGlzLCB7XG4gICAgICAgIG5hbWU6ICdkYWlseWpvYicsXG4gICAgICAgIGNyZWF0ZU5hbWVzcGFjZTogdHJ1ZSxcbiAgICAgICAgZWtzTmFtZXNwYWNlOiAnZGFpbHlqb2JucycsXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgY29uc3QgZXhlY1JvbGUgPSBlbXJFa3NDbHVzdGVyLmNyZWF0ZUV4ZWN1dGlvblJvbGUoXG4gICAgICAgIHRoaXMsIFxuICAgICAgICAnRXhlY1JvbGUnLCBcbiAgICAgICAgczNSZWFkUG9saWN5LCBcbiAgICAgICAgJ2RhaWx5am9ibnMnLCAvLyB0aGUgbmFtZXNwYWNlIG9mIHRoZSB2aXJ0dWFsIGNsdXN0ZXIgXG4gICAgICAgICdzM1JlYWRFeGVjUm9sZScpOyAvL3RoZSBJQU0gcm9sZSBuYW1lXG4gICAgICAgIFxuICAgICAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAndmlydHVhbENsdXN0ZXJBcm4nLCB7XG4gICAgICAgICAgdmFsdWU6IHZpcnR1YWxDbHVzdGVyLmF0dHJBcm4sXG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ2V4ZWNSb2xlQXJuJywge1xuICAgICAgICAgIHZhbHVlOiBleGVjUm9sZS5yb2xlQXJuLFxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIC8vRHJpdmVyIHBvZCB0ZW1wbGF0ZVxuICAgICAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnZHJpdmVyUG9kVGVtcGxhdGUnLCB7XG4gICAgICAgICAgdmFsdWU6IGVtckVrc0NsdXN0ZXIucG9kVGVtcGxhdGVTM0xvY2F0aW9uQ3JpdGljYWxEcml2ZXIhLFxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIC8vRXhlY3V0b3IgcG9kIHRlbXBsYXRlXG4gICAgICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdleGVjdXRvclBvZFRlbXBsYXRlJywge1xuICAgICAgICAgIHZhbHVlOiBlbXJFa3NDbHVzdGVyLnBvZFRlbXBsYXRlUzNMb2NhdGlvbkNyaXRpY2FsRXhlY3V0b3IhLFxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICB9XG4gICAgfVxuICAgIC8vLyAhaGlkZVxuICAgIFxuICAgIGNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG4gICAgbmV3IEV4YW1wbGVTcGFya0VtckNvbnRhaW5lcnNTdGFjayhhcHAsICdFeGFtcGxlU3BhcmtFbXJTZXJ2ZXJsZXNzU3RhY2snKTtcbiJdfQ==