UNPKG

raindancers-network

Version:
61 lines 10.3 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.PythonApiIngestToS3 = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdk = require("aws-cdk-lib"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs = require("constructs"); class PythonApiIngestToS3 extends constructs.Construct { constructor(scope, id, props) { super(scope, id); const lambdaExecutionRole = new aws_cdk_lib_1.aws_iam.Role(this, 'LambdaExecutionRole', { roleName: `${id}-lambda-execution-role`, assumedBy: new aws_cdk_lib_1.aws_iam.ServicePrincipal('lambda.amazonaws.com'), }); //note the inclusion of 'service role'. lambdaExecutionRole.addManagedPolicy(aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')); // this potentially too permissive. lambdaExecutionRole.addToPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ actions: ['kms:Decrypt'], effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, resources: ['*'], })); this.function = new aws_cdk_lib_1.aws_lambda.Function(this, 'Function', { role: lambdaExecutionRole, code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(props.codeSource, { bundling: { image: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_10.bundlingImage, command: [ 'bash', '-c', 'pip install -r requirements.txt -t /asset-output && cp -au . /asset-output', ], }, }), runtime: props.runtime ?? aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_10, handler: props.handler, architecture: props.architecture ?? aws_cdk_lib_1.aws_lambda.Architecture.X86_64, deadLetterQueueEnabled: props.deadLetterQueueEnabled ?? true, environment: props.envVars, logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.TWO_YEARS, memorySize: props.memorySize ?? 512, retryAttempts: props.retryAttempts ?? 2, timeout: props.timeOut ?? cdk.Duration.seconds(300), }); if (props.secrets) { props.secrets.forEach((secret) => { const partialArn = 'arn:aws:secretsmanager:' + secret.environment.region + ':' + secret.environment.account + ':secret:' + secret.secretName; console.log('partialArn: ' + partialArn); const secretFromPartialArn = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretPartialArn(this, `SecretFromPartialArn-${secret.secretName}`, partialArn); secretFromPartialArn.grantRead(this.function); }); } ; props.ingestBucket.grantReadWrite(this.function); } } exports.PythonApiIngestToS3 = PythonApiIngestToS3; _a = JSII_RTTI_SYMBOL_1; PythonApiIngestToS3[_a] = { fqn: "raindancers-network.apilambda.PythonApiIngestToS3", version: "1.29.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaUxhbWJkYS9hcGlMYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsNkNBTXFCO0FBRXJCLHlDQUF5QztBQXNCekMsTUFBYSxtQkFBb0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQUkzRCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ2xGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxtQkFBbUIsR0FBYSxJQUFJLHFCQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUM5RSxRQUFRLEVBQUUsR0FBRyxFQUFFLHdCQUF3QjtZQUN2QyxTQUFTLEVBQUUsSUFBSSxxQkFBRyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO1NBQzVELENBQUMsQ0FBQztRQUVILHVDQUF1QztRQUN2QyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FDbEMscUJBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsMENBQTBDLENBQUMsQ0FDdkYsQ0FBQztRQUVGLG1DQUFtQztRQUNuQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FDckQ7WUFDRSxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDeEIsTUFBTSxFQUFFLHFCQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDeEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ2pCLENBQ0YsQ0FBQyxDQUFDO1FBR0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHdCQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDeEQsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixJQUFJLEVBQUUsd0JBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUM3QixLQUFLLENBQUMsVUFBVSxFQUNoQjtnQkFDRSxRQUFRLEVBQUU7b0JBQ1IsS0FBSyxFQUFFLHdCQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhO29CQUNuRCxPQUFPLEVBQUU7d0JBQ1AsTUFBTTt3QkFDTixJQUFJO3dCQUNKLDRFQUE0RTtxQkFDN0U7aUJBQ0Y7YUFDRixDQUNMO1lBQ0UsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksd0JBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVztZQUN4RCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksd0JBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUNsRSxzQkFBc0IsRUFBRSxLQUFLLENBQUMsc0JBQXNCLElBQUksSUFBSTtZQUM1RCxXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDMUIsWUFBWSxFQUFFLHNCQUFJLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDMUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksR0FBRztZQUNuQyxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztTQUNwRCxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDL0IsTUFBTSxVQUFVLEdBQVcseUJBQXlCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUNySixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsQ0FBQztnQkFDekMsTUFBTSxvQkFBb0IsR0FBRyxnQ0FBYyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDdkksb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVoRCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQUEsQ0FBQztRQUVGLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVuRCxDQUFDOztBQWpFSCxrREFrRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgYXdzX2xvZ3MgYXMgbG9ncyxcbiAgYXdzX3MzIGFzIHMzLFxuICBhd3NfbGFtYmRhLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNtYW5hZ2VyLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0TmFtZXMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudmlyb25tZW50OiBjZGsuRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHNlY3JldE5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQeXRob25BcGlJbmdlc3RUb1MzUHJvcHMge1xuICByZWFkb25seSBjb2RlU291cmNlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhhbmRsZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5nZXN0QnVja2V0OiBzMy5CdWNrZXQ7XG4gIHJlYWRvbmx5IHNlY3JldHM/OiBTZWNyZXROYW1lc1tdO1xuICByZWFkb25seSBhcmNoaXRlY3R1cmU/OiBhd3NfbGFtYmRhLkFyY2hpdGVjdHVyZSB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgcnVudGltZT86IGF3c19sYW1iZGEuUnVudGltZSB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW52VmFycz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSB0aW1lT3V0PzogY2RrLkR1cmF0aW9uIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBtZW1vcnlTaXplPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSByZXRyeUF0dGVtcHRzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBkZWFkTGV0dGVyUXVldWVFbmFibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIFB5dGhvbkFwaUluZ2VzdFRvUzMgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG5cbiAgZnVuY3Rpb246IGF3c19sYW1iZGEuRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHl0aG9uQXBpSW5nZXN0VG9TM1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGxhbWJkYUV4ZWN1dGlvblJvbGU6IGlhbS5Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdMYW1iZGFFeGVjdXRpb25Sb2xlJywge1xuICAgICAgcm9sZU5hbWU6IGAke2lkfS1sYW1iZGEtZXhlY3V0aW9uLXJvbGVgLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgfSk7XG5cbiAgICAvL25vdGUgdGhlIGluY2x1c2lvbiBvZiAnc2VydmljZSByb2xlJy5cbiAgICBsYW1iZGFFeGVjdXRpb25Sb2xlLmFkZE1hbmFnZWRQb2xpY3koXG4gICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUnKSxcbiAgICApO1xuXG4gICAgLy8gdGhpcyBwb3RlbnRpYWxseSB0b28gcGVybWlzc2l2ZS5cbiAgICBsYW1iZGFFeGVjdXRpb25Sb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KFxuICAgICAge1xuICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0J10sXG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0sXG4gICAgKSk7XG5cblxuICAgIHRoaXMuZnVuY3Rpb24gPSBuZXcgYXdzX2xhbWJkYS5GdW5jdGlvbih0aGlzLCAnRnVuY3Rpb24nLCB7XG4gICAgICByb2xlOiBsYW1iZGFFeGVjdXRpb25Sb2xlLFxuICAgICAgY29kZTogYXdzX2xhbWJkYS5Db2RlLmZyb21Bc3NldChcbiAgICAgICAgcHJvcHMuY29kZVNvdXJjZSxcbiAgICAgICAge1xuICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICBpbWFnZTogYXdzX2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzEwLmJ1bmRsaW5nSW1hZ2UsXG4gICAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICAgICdiYXNoJyxcbiAgICAgICAgICAgICAgJy1jJyxcbiAgICAgICAgICAgICAgJ3BpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQgLXQgL2Fzc2V0LW91dHB1dCAmJiBjcCAtYXUgLiAvYXNzZXQtb3V0cHV0JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcblx0ICApLFxuICAgICAgcnVudGltZTogcHJvcHMucnVudGltZSA/PyBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTAsXG4gICAgICBoYW5kbGVyOiBwcm9wcy5oYW5kbGVyLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBwcm9wcy5hcmNoaXRlY3R1cmUgPz8gYXdzX2xhbWJkYS5BcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgZGVhZExldHRlclF1ZXVlRW5hYmxlZDogcHJvcHMuZGVhZExldHRlclF1ZXVlRW5hYmxlZCA/PyB0cnVlLFxuICAgICAgZW52aXJvbm1lbnQ6IHByb3BzLmVudlZhcnMsXG4gICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5UV09fWUVBUlMsXG4gICAgICBtZW1vcnlTaXplOiBwcm9wcy5tZW1vcnlTaXplID8/IDUxMixcbiAgICAgIHJldHJ5QXR0ZW1wdHM6IHByb3BzLnJldHJ5QXR0ZW1wdHMgPz8gMixcbiAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVPdXQgPz8gY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zZWNyZXRzKSB7XG4gICAgICBwcm9wcy5zZWNyZXRzLmZvckVhY2goKHNlY3JldCkgPT4ge1xuICAgICAgICBjb25zdCBwYXJ0aWFsQXJuIDpzdHJpbmcgPSAnYXJuOmF3czpzZWNyZXRzbWFuYWdlcjonICsgc2VjcmV0LmVudmlyb25tZW50LnJlZ2lvbiArICc6JyArIHNlY3JldC5lbnZpcm9ubWVudC5hY2NvdW50ICsgJzpzZWNyZXQ6JyArIHNlY3JldC5zZWNyZXROYW1lO1xuICAgICAgICBjb25zb2xlLmxvZygncGFydGlhbEFybjogJyArIHBhcnRpYWxBcm4pO1xuICAgICAgICBjb25zdCBzZWNyZXRGcm9tUGFydGlhbEFybiA9IHNlY3JldHNtYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0UGFydGlhbEFybih0aGlzLCBgU2VjcmV0RnJvbVBhcnRpYWxBcm4tJHtzZWNyZXQuc2VjcmV0TmFtZX1gLCBwYXJ0aWFsQXJuKTtcbiAgICAgICAgc2VjcmV0RnJvbVBhcnRpYWxBcm4uZ3JhbnRSZWFkKHRoaXMuZnVuY3Rpb24pO1xuXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJvcHMuaW5nZXN0QnVja2V0LmdyYW50UmVhZFdyaXRlKHRoaXMuZnVuY3Rpb24pO1xuXG4gIH1cbn0iXX0=