UNPKG

@cdklabs/aws-data-solutions-framework

Version:
54 lines 8.31 kB
"use strict"; 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); //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'], })], }); const s3ReadPolicy = new aws_iam_1.ManagedPolicy(this, 's3ReadPolicy', { document: s3Read, }); /// !show const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, { name: 'dailyjob', createNamespace: true, eksNamespace: 'dailyjobns', }); const execRole = emrEksCluster.createExecutionRole(this, 'ExecRole', s3ReadPolicy, 'dailyjobns', 's3ReadExecRole'); const interactiveSession = emrEksCluster.addInteractiveEndpoint(this, 'interactiveSession', { virtualClusterId: virtualCluster.attrId, managedEndpointName: 'interactiveSession', executionRole: execRole, }); //Virtual Cluster ARN new cdk.CfnOutput(this, 'virtualClusterArn', { value: virtualCluster.attrArn, }); //Interactive session ARN new cdk.CfnOutput(this, 'interactiveSessionArn', { value: interactiveSession.getAttString('arn'), }); /// !hide } } const app = new cdk.App(); new ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmstZW1yLXJ1bnRpbWUtY29udGFpbmVycy1pbnRlcmFjdGl2ZS1lbmRwb2ludC5saXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvY2Vzc2luZy9leGFtcGxlcy9zcGFyay1lbXItcnVudGltZS1jb250YWluZXJzLWludGVyYWN0aXZlLWVuZHBvaW50LmxpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFtQztBQUNuQyxpREFBMkY7QUFFM0YsZ0NBQW1EO0FBQ25ELGdGQUFvRTtBQUdwRSxNQUFNLDhCQUErQixTQUFRLEdBQUcsQ0FBQyxLQUFLO0lBQ2xELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3BDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsZ0VBQWdFO1FBQ2hFLE1BQU0sWUFBWSxHQUFHLElBQUksMENBQWUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFL0QsTUFBTSxhQUFhLEdBQUcsK0JBQXlCLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtZQUM5RCxZQUFZLEVBQUUsY0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFHLG1EQUFtRCxDQUFDO1lBQzFHLGlCQUFpQixFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsMkVBQTJFO1lBQy9HLCtCQUErQixFQUFFLElBQUksRUFBRSxpRUFBaUU7WUFDeEcsa0JBQWtCLEVBQUUsWUFBWTtTQUNuQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFjLENBQUM7WUFDOUIsVUFBVSxFQUFFLENBQUMsSUFBSSx5QkFBZSxDQUFDO29CQUMvQixPQUFPLEVBQUU7d0JBQ1AsY0FBYztxQkFDZjtvQkFDRCxTQUFTLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQztpQkFDekQsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLEdBQUcsSUFBSSx1QkFBYSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDM0QsUUFBUSxFQUFFLE1BQU07U0FDakIsQ0FBQyxDQUFDO1FBQ0wsU0FBUztRQUNULE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUU7WUFDNUQsSUFBSSxFQUFFLFVBQVU7WUFDaEIsZUFBZSxFQUFFLElBQUk7WUFDckIsWUFBWSxFQUFFLFlBQVk7U0FDN0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRW5ILE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUN6RixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsTUFBTTtZQUN2QyxtQkFBbUIsRUFBRSxvQkFBb0I7WUFDekMsYUFBYSxFQUFFLFFBQVE7U0FDeEIsQ0FBQyxDQUFDO1FBRUoscUJBQXFCO1FBQ3JCLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDekMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxPQUFPO1NBQ2hDLENBQUMsQ0FBQztRQUVILHlCQUF5QjtRQUN6QixJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQzlDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1NBQzlDLENBQUMsQ0FBQztRQUNKLFNBQVM7SUFDYixDQUFDO0NBQ0o7QUFHRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixJQUFJLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IE1hbmFnZWRQb2xpY3ksIFBvbGljeURvY3VtZW50LCBQb2xpY3lTdGF0ZW1lbnQsIFJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgU3BhcmtFbXJDb250YWluZXJzUnVudGltZSB9IGZyb20gJy4uL2xpYic7XG5pbXBvcnQgeyBLdWJlY3RsVjMzTGF5ZXIgfSBmcm9tICdAYXdzLWNkay9sYW1iZGEtbGF5ZXIta3ViZWN0bC12MzMnO1xuXG5cbmNsYXNzIEV4YW1wbGVTcGFya0VtckNvbnRhaW5lcnNTdGFjayBleHRlbmRzIGNkay5TdGFjayB7XG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgICAgIC8vTGF5ZXIgbXVzdCBiZSBjaGFuZ2VkIGFjY29yZGluZyB0byB0aGUgS3ViZXJuZXRlcyB2ZXJzaW9uIHVzZWRcbiAgICAgICAgY29uc3Qga3ViZWN0bExheWVyID0gbmV3IEt1YmVjdGxWMzNMYXllcih0aGlzLCAna3ViZWN0bExheWVyJyk7XG5cbiAgICAgICAgY29uc3QgZW1yRWtzQ2x1c3RlciA9IFNwYXJrRW1yQ29udGFpbmVyc1J1bnRpbWUuZ2V0T3JDcmVhdGUodGhpcywge1xuICAgICAgICAgICAgZWtzQWRtaW5Sb2xlOiBSb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdFa3NBZG1pblJvbGUnICwgJ2Fybjphd3M6aWFtOjoxMjM0NTY3ODkxMjpyb2xlL3JvbGUtbmFtZS13aXRoLXBhdGgnKSxcbiAgICAgICAgICAgIHB1YmxpY0FjY2Vzc0NJRFJzOiBbJzEwLjAuMC4wLzMyJ10sIC8vIFRoZSBsaXN0IG9mIHB1YmxpYyBJUCBhZGRyZXNzZXMgZnJvbSB3aGljaCB0aGUgY2x1c3RlciBjYW4gYmUgYWNjZXNzaWJsZVxuICAgICAgICAgICAgY3JlYXRlRW1yT25Fa3NTZXJ2aWNlTGlua2VkUm9sZTogdHJ1ZSwgLy9pZiB0aGUgdGhlIHNlcnZpY2UgbGlua2VkIHJvbGUgYWxyZWFkeSBleGlzdHMgc2V0IHRoaXMgdG8gZmFsc2VcbiAgICAgICAgICAgIGt1YmVjdGxMYW1iZGFMYXllcjoga3ViZWN0bExheWVyLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzM1JlYWQgPSBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgICAgc3RhdGVtZW50czogW25ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3MzOkdldE9iamVjdCcsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogWydhcm46YXdzOnMzOjo6YXdzLWRhdGEtYW5hbHl0aWNzLXdvcmtzaG9wcyddLFxuICAgICAgICAgICAgfSldLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgczNSZWFkUG9saWN5ID0gbmV3IE1hbmFnZWRQb2xpY3kodGhpcywgJ3MzUmVhZFBvbGljeScsIHtcbiAgICAgICAgICAgIGRvY3VtZW50OiBzM1JlYWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vLyAhc2hvd1xuICAgICAgICBjb25zdCB2aXJ0dWFsQ2x1c3RlciA9IGVtckVrc0NsdXN0ZXIuYWRkRW1yVmlydHVhbENsdXN0ZXIodGhpcywge1xuICAgICAgICAgICAgbmFtZTogJ2RhaWx5am9iJyxcbiAgICAgICAgICAgIGNyZWF0ZU5hbWVzcGFjZTogdHJ1ZSxcbiAgICAgICAgICAgIGVrc05hbWVzcGFjZTogJ2RhaWx5am9ibnMnLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBleGVjUm9sZSA9IGVtckVrc0NsdXN0ZXIuY3JlYXRlRXhlY3V0aW9uUm9sZSh0aGlzLCAnRXhlY1JvbGUnLCBzM1JlYWRQb2xpY3ksICdkYWlseWpvYm5zJywgJ3MzUmVhZEV4ZWNSb2xlJyk7XG5cbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVTZXNzaW9uID0gZW1yRWtzQ2x1c3Rlci5hZGRJbnRlcmFjdGl2ZUVuZHBvaW50KHRoaXMsICdpbnRlcmFjdGl2ZVNlc3Npb24nLCB7XG4gICAgICAgICAgIHZpcnR1YWxDbHVzdGVySWQ6IHZpcnR1YWxDbHVzdGVyLmF0dHJJZCxcbiAgICAgICAgICAgbWFuYWdlZEVuZHBvaW50TmFtZTogJ2ludGVyYWN0aXZlU2Vzc2lvbicsXG4gICAgICAgICAgIGV4ZWN1dGlvblJvbGU6IGV4ZWNSb2xlLFxuICAgICAgICAgfSk7XG5cbiAgICAgICAgLy9WaXJ0dWFsIENsdXN0ZXIgQVJOXG4gICAgICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICd2aXJ0dWFsQ2x1c3RlckFybicsIHtcbiAgICAgICAgICAgIHZhbHVlOiB2aXJ0dWFsQ2x1c3Rlci5hdHRyQXJuLFxuICAgICAgICB9KTtcblxuICAgICAgICAvL0ludGVyYWN0aXZlIHNlc3Npb24gQVJOXG4gICAgICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdpbnRlcmFjdGl2ZVNlc3Npb25Bcm4nLCB7XG4gICAgICAgICAgIHZhbHVlOiBpbnRlcmFjdGl2ZVNlc3Npb24uZ2V0QXR0U3RyaW5nKCdhcm4nKSxcbiAgICAgICAgIH0pO1xuICAgICAgICAvLy8gIWhpZGVcbiAgICB9XG59XG5cblxuY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcbm5ldyBFeGFtcGxlU3BhcmtFbXJDb250YWluZXJzU3RhY2soYXBwLCAnRXhhbXBsZVNwYXJrRW1yU2VydmVybGVzc1N0YWNrJyk7XG4iXX0=