raindancers-network
Version:
Extensions to the ec2.Vpc Constructs
61 lines • 10.3 kB
JavaScript
;
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=