AWSCDK,首次部署时运行代码,但之后不再运行
创始人
2024-09-24 03:30:53
0

问题可能是由于 AWS CDK 在部署期间使用 CloudFormation 来管理资源。当需求没有发生变化时,CloudFormation 不会更新资源,这可能会导致在之后的部署中不再运行代码。为了避免这种情况,可以强制 CloudFormation 更新资源。这可以通过在 AWS CDK 中添加自定义资源并将其用作占位符来完成。

以下是一个使用自定义资源的示例:

import * as cdk from 'aws-cdk-lib';
import * as cloudformation from 'aws-cdk-lib/aws-cloudformation';
import * as iam from 'aws-cdk-lib/aws-iam';

export class MyStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const resource = new cloudformation.CustomResource(this, 'MyResource', {
      provider: cloudformation.CustomResourceProvider.lambda(new MyLambda(this, 'MyLambda')),
      properties: {
        // Add any required properties here
      }
    });

    // Grant the IAM role used by CloudFormation to invoke the Lambda function
    resource.role?.addToPolicy(new iam.PolicyStatement({
      actions: ['lambda:InvokeFunction'],
      resources: [resource.provider.serviceToken],
      effect: iam.Effect.ALLOW,
    }));
  }
}

class MyLambda extends cdk.Construct implements cloudformation.ICustomResourceProvider {
  public readonly serviceToken: string;

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

    // Define your Lambda function here
    const fn = new lambda.Function(this, 'MyFn', {
      runtime: lambda.Runtime.NODEJS_12_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset('./my-lambda'),
    });

    this.serviceToken = fn.functionArn;
  }

  public async onCreate(_event: cloudformation.Event): Promise {
    // Add code to run when the resource is created
    return { status: cloudformation.OperationStatus.SUCCESS };
  }
  
  public async onUpdate(_event: cloudformation.Event): Promise {
    // Add code to run when the resource is updated
    return { status: cloudformation.OperationStatus.SUCCESS };
  }

  public async onDelete(_event: cloudformation.Event): Promise {
    // Add code to run when the resource is deleted
    return { status: cloudformation.OperationStatus.SUCCESS };
  }
}

此代码创建了一个自定义资源,其中可以运行特定的代码

相关内容

热门资讯

玩家必备教程!微扑克机器人代打... 玩家必备教程!微扑克机器人代打,aapoker发牌机制,教你攻略(一直存在有挂)1、不需要AI权限,...
记者揭秘!aapoker辅助软... 记者揭秘!aapoker辅助软件,微扑克辅助软件,揭秘教程(固有是真的有挂)1、这是跨平台的微扑克辅...
玩家必备科普!德州之星有辅助挂... 1、玩家必备科普!德州之星有辅助挂吗,aapoker有外挂,2025版教程(本然有挂);代表性(透视...
推荐十款!wpk统计插件,德扑... 推荐十款!wpk统计插件,德扑ai智能机器人,扑克教程(从来有挂)是一款可以让一直输的玩家,快速成为...
分享一款!wopoker透明挂... 1、分享一款!wopoker透明挂,微扑克德州专用辅助器,玩家教程(本然真的有挂);代表性(透视辅助...
技术分享!wpk微扑克最新辅助... 技术分享!wpk微扑克最新辅助,德扑之星ai代打,揭秘攻略(往昔存在有挂)德扑之星ai代打辅助器中分...
玩家攻略推荐!微扑克俱乐部24... 玩家攻略推荐!微扑克俱乐部24小时,wepoke是真的有挂,揭秘教程(最初是有挂)是一款可以让一直输...
技术分享!wpk德州,微扑克a... 技术分享!wpk德州,微扑克ai辅助,辅助教程(一直有挂)(1)技术分享!wpk德州,微扑克ai辅助...
程序员教你!GG扑克辅助软件,... 程序员教你!GG扑克辅助软件,德州免费辅助神器app,AI教程(竟然是真的有挂)1)德州免费辅助神器...
总算了解!wpk辅助软件,we... 总算了解!wpk辅助软件,wepoke ai辅助,规律教程(总是是有挂)1、wepoke ai辅助a...