UNPKG

databricks-cdk

Version:

With this package databricks resources can be deployed with cdk

49 lines (48 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StepFunctionsLambdas = void 0; const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs_1 = require("constructs"); class StepFunctionsLambdas extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); this.props = props; this.lambdaRole = new aws_cdk_lib_1.aws_iam.Role(this, "Role", { assumedBy: new aws_cdk_lib_1.aws_iam.ServicePrincipal("lambda.amazonaws.com"), managedPolicies: [ aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName("service-role/AWSLambdaBasicExecutionRole"), ] }); this.lambdaRole.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, actions: ["ssm:GetParameter"], resources: [ `arn:aws:ssm:${this.props.region}:${this.props.accountId}:parameter/databricks/*`, ] })); this.submitJobLambda = this.generateLambda({ functionName: "DatabricksSubmitJob", lambdaMethod: "submit-job" }); this.jobStatusLambda = this.generateLambda({ functionName: "DatabricksJobStatus", lambdaMethod: "job-status" }); } generateLambda(lambdaProps) { return new aws_cdk_lib_1.aws_lambda.DockerImageFunction(this, "Lambda", { functionName: lambdaProps.functionName, code: this.props.lambdaCode, timeout: aws_cdk_lib_1.Duration.seconds(15), role: this.lambdaRole, environment: { LAMBDA_METHOD: lambdaProps.lambdaMethod, USER_PARAM: this.props.databricksUserParam || "/databricks/deploy/user", PASS_PARAM: this.props.databricksPassParam || "/databricks/deploy/password", ACCOUNT_PARAM: this.props.databricksAccountParam || "/databricks/account-id" }, logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.THREE_MONTHS, }); } } exports.StepFunctionsLambdas = StepFunctionsLambdas;