由Lambda函数支持的AWS CDK自定义资源

时间:2019-10-21 16:24:55

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

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

但是,我在AWS CDK上找不到类似的内容。现在似乎可以定义自定义资源的唯一方法是通过指定资源,操作和参数。

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

P.S。我完全知道如何在CloudFormation上操作自定义资源。

1 个答案:

答案 0 :(得分: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,
      }
    });
  }
}