UNPKG

@cdklabs/aws-data-solutions-framework

Version:
37 lines 5.48 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 dsf = require("../../index"); /// !show class ExampleSparkEmrServerlessStack extends cdk.Stack { constructor(scope, id) { super(scope, id); const runtimeServerless = new dsf.processing.SparkEmrServerlessRuntime(this, 'SparkRuntimeServerless', { name: 'spark-serverless-demo', }); const s3ReadPolicyDocument = new aws_iam_1.PolicyDocument({ statements: [ aws_iam_1.PolicyStatement.fromJson({ actions: ['s3:GetObject'], resources: ['arn:aws:s3:::bucket_name'], }), ], }); // The IAM role that will trigger the Job start and will monitor it const jobTrigger = new aws_iam_1.Role(this, 'EMRServerlessExecutionRole', { assumedBy: new aws_iam_1.ServicePrincipal('lambda.amazonaws.com'), }); const executionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'EmrServerlessExecutionRole', s3ReadPolicyDocument); runtimeServerless.grantStartExecution(jobTrigger, executionRole.roleArn); new cdk.CfnOutput(this, 'SparkRuntimeServerlessStackApplicationArn', { value: runtimeServerless.application.attrArn, }); } } /// !hide const app = new cdk.App(); new ExampleSparkEmrServerlessStack(app, 'ExampleSparkEmrServerlessStack'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmstZW1yLXJ1bnRpbWUtc2VydmVybGVzcy1kZWZhdWx0LmxpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm9jZXNzaW5nL2V4YW1wbGVzL3NwYXJrLWVtci1ydW50aW1lLXNlcnZlcmxlc3MtZGVmYXVsdC5saXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7O0FBRXRDLG1DQUFtQztBQUNuQyxpREFBOEY7QUFFOUYsbUNBQW1DO0FBRW5DLFNBQVM7QUFDVCxNQUFNLDhCQUErQixTQUFRLEdBQUcsQ0FBQyxLQUFLO0lBQ3BELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFO1lBQ3JHLElBQUksRUFBRSx1QkFBdUI7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLHdCQUFjLENBQUM7WUFDOUMsVUFBVSxFQUFFO2dCQUNWLHlCQUFlLENBQUMsUUFBUSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLFNBQVMsRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUN4QyxDQUFDO2FBQ0g7U0FDRixDQUFDLENBQUM7UUFFSCxtRUFBbUU7UUFDbkUsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFJLENBQUMsSUFBSSxFQUFFLDRCQUE0QixFQUFFO1lBQzlELFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHNCQUFzQixDQUFDO1NBQ3hELENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLDRCQUE0QixFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFN0ksaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RSxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLDJDQUEyQyxFQUFFO1lBQ25FLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsT0FBTztTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFDRCxTQUFTO0FBRVQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUIsSUFBSSw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFBvbGljeURvY3VtZW50LCBQb2xpY3lTdGF0ZW1lbnQsIFJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZHNmIGZyb20gJy4uLy4uL2luZGV4JztcblxuLy8vICFzaG93XG5jbGFzcyBFeGFtcGxlU3BhcmtFbXJTZXJ2ZXJsZXNzU3RhY2sgZXh0ZW5kcyBjZGsuU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBcbiAgICBjb25zdCBydW50aW1lU2VydmVybGVzcyA9IG5ldyBkc2YucHJvY2Vzc2luZy5TcGFya0VtclNlcnZlcmxlc3NSdW50aW1lKHRoaXMsICdTcGFya1J1bnRpbWVTZXJ2ZXJsZXNzJywge1xuICAgICAgbmFtZTogJ3NwYXJrLXNlcnZlcmxlc3MtZGVtbycsXG4gICAgfSk7XG4gICAgXG4gICAgY29uc3QgczNSZWFkUG9saWN5RG9jdW1lbnQgPSBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBQb2xpY3lTdGF0ZW1lbnQuZnJvbUpzb24oe1xuICAgICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0J10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJ2Fybjphd3M6czM6OjpidWNrZXRfbmFtZSddLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgXG4gICAgLy8gVGhlIElBTSByb2xlIHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBKb2Igc3RhcnQgYW5kIHdpbGwgbW9uaXRvciBpdFxuICAgIGNvbnN0IGpvYlRyaWdnZXIgPSBuZXcgUm9sZSh0aGlzLCAnRU1SU2VydmVybGVzc0V4ZWN1dGlvblJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IGV4ZWN1dGlvblJvbGUgPSBkc2YucHJvY2Vzc2luZy5TcGFya0VtclNlcnZlcmxlc3NSdW50aW1lLmNyZWF0ZUV4ZWN1dGlvblJvbGUodGhpcywgJ0VtclNlcnZlcmxlc3NFeGVjdXRpb25Sb2xlJywgczNSZWFkUG9saWN5RG9jdW1lbnQpO1xuICAgIFxuICAgIHJ1bnRpbWVTZXJ2ZXJsZXNzLmdyYW50U3RhcnRFeGVjdXRpb24oam9iVHJpZ2dlciwgZXhlY3V0aW9uUm9sZS5yb2xlQXJuKTtcbiAgICBcbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnU3BhcmtSdW50aW1lU2VydmVybGVzc1N0YWNrQXBwbGljYXRpb25Bcm4nLCB7XG4gICAgICB2YWx1ZTogcnVudGltZVNlcnZlcmxlc3MuYXBwbGljYXRpb24uYXR0ckFybixcbiAgICB9KTtcbiAgfVxufVxuLy8vICFoaWRlXG5cbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG5uZXcgRXhhbXBsZVNwYXJrRW1yU2VydmVybGVzc1N0YWNrKGFwcCwgJ0V4YW1wbGVTcGFya0VtclNlcnZlcmxlc3NTdGFjaycpOyJdfQ==