databricks-cdk
Version:
With this package databricks resources can be deployed with cdk
49 lines (48 loc) • 2.17 kB
JavaScript
;
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;