【问题标题】:AWS CDK custom resource backed by a Lambda Function由 Lambda 函数支持的 AWS CDK 自定义资源
【发布时间】:2020-02-17 18:53:16
【问题描述】:

CloudFormation itslef 支持由 lambda 或 ec2 支持的自定义资源。

但是,我在 AWS CDK 上找不到类似的东西。现在看来,您可以定义自定义资源的唯一方法是指定资源、操作和参数。

这是否意味着使用当前的 CDK 我可以选择是调用 lambda 函数还是特定的“CLI”命令?谁能解释一下 AWS CDK 中自定义资源背后的基本逻辑?

附:我完全知道如何在 CloudFormation 上操作自定义资源。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-cdk


    【解决方案1】:

    您引用的自定义资源位于包@aws-cdk/aws-cloudformation

    您可以在documentation 中找到一个 TypeScript 示例:

    interface CopyOperationProps {
      sourceBucket: IBucket;
      targetBucket: IBucket;
    }
    
    class CopyOperation extends Construct {
      constructor(parent: Construct, name: string, props: CopyOperationProps) {
        super(parent, name);
    
        const lambdaProvider = new lambda.SingletonFunction(this, 'Provider', {
          uuid: 'f7d4f730-4ee1-11e8-9c2d-fa7ae01bbebc',
          runtime: lambda.Runtime.PYTHON_3_7,
          code: lambda.Code.fromAsset('../copy-handler'),
          handler: 'index.handler',
          timeout: Duration.seconds(60),
        });
    
        new CustomResource(this, 'Resource', {
          provider: CustomResourceProvider.lambda(lambdaProvider),
          properties: {
            sourceBucketArn: props.sourceBucket.bucketArn,
            targetBucketArn: props.targetBucket.bucketArn,
          }
        });
      }
    }
    

    【讨论】:

    • 谢谢。这比使用 Tropospheres 自定义资源要方便得多。
    • @jogold 这样的话,如果我要返回一些东西......你知道我怎样才能得到lambda返回的值吗?提前致谢
    • 如果您将 { myAttribute: '...' } 作为自定义资源中的数据返回,请在 CustomResourcegetAtt('myAttribute') 上使用 getAtt() 方法。
    • 很高兴再次回答这个问题,因为代码示例已弃用...
    猜你喜欢
    • 2021-10-15
    • 2017-10-23
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 2020-12-06
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多