constructor()

in PetAdoptions/cdk/pet_stack/lib/services/stepfn.ts [17:68]


  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id);

    var lambdaRole = new iam.Role(this, 'stepfnlambdaexecutionrole', {
      assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
      managedPolicies: [
        iam.ManagedPolicy.fromManagedPolicyArn(this, 'first', 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess'),
        iam.ManagedPolicy.fromManagedPolicyArn(this, 'second', 'arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess'),
        iam.ManagedPolicy.fromManagedPolicyArn(this, 'third', 'arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess'),
        iam.ManagedPolicy.fromManagedPolicyArn(this, 'fourth', 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'),
        iam.ManagedPolicy.fromManagedPolicyArn(this, 'fifth', 'arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy')
      ]
    });

    var layerArn = "arn:aws:lambda:" + process.env.CDK_DEFAULT_REGION + ":580247275435:layer:LambdaInsightsExtension:14";
    //    var layerArn = "arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:2";
    var layer = lambda.LayerVersion.fromLayerVersionArn(this, `LambdaInsights`, layerArn);

    
    var adotLayerArn = "arn:aws:lambda:"+ process.env.CDK_DEFAULT_REGION + ":901920570463:layer:aws-otel-python38-ver-1-5-0:2"
    var adotlayer = lambda.LayerVersion.fromLayerVersionArn(this,'otelPythonLambdaLayer',adotLayerArn);

    var layers: lambda.ILayerVersion[] = [layer, adotlayer]

    const readDynamoDB_Step = new tasks.LambdaInvoke(this, 'ReadDynamoDB', {
      lambdaFunction: this.createStepFnLambda('lambda_step_readDDB', lambdaRole, layers)
    });

    const priceGreaterThan55_Step = new tasks.LambdaInvoke(this, 'PriceGreaterThan55', {
      lambdaFunction: this.createStepFnLambda('lambda_step_priceGreaterThan55', lambdaRole, layers)
    });

    const priceLessThan55_Step = new tasks.LambdaInvoke(this, 'PriceLessThan55', {
      lambdaFunction: this.createStepFnLambda('lambda_step_priceLessThan55', lambdaRole, layers)
    });

    const priceEquals55_Step = new sfn.Succeed(this, 'PriceIs55');

    const definition = readDynamoDB_Step
      .next(new sfn.Choice(this, 'IsPriceGreaterThan55?')
        .when(sfn.Condition.numberGreaterThan('$.Payload.body.price', 55), priceGreaterThan55_Step)
        .when(sfn.Condition.numberLessThan('$.Payload.body.price', 55), priceLessThan55_Step)
        .otherwise(priceEquals55_Step));


    this.stepFn = new sfn.StateMachine(this, 'StateMachine', {
      definition,
      tracingEnabled: true,
      timeout: Duration.minutes(5)
    });

  }