Пользовательский ресурс AWS CDK, поддерживаемый лямбда-функцией - PullRequest
0 голосов
/ 21 октября 2019

CloudFormation itslef поддерживает пользовательские ресурсы, поддерживаемые лямбда или ec2.

Однако я не смог найти что-то похожее на AWS CDK. Единственный способ, которым вы можете определить пользовательские ресурсы, - это указать ресурсы, действия и параметры.

Означает ли это, что с текущим CDK я мог бы выбрать, вызывать ли лямбда-функцию или конкретную команду "CLI"? Может кто-нибудь объяснить основную логику пользовательских ресурсов в AWS CDK?

PS Я прекрасно знаю, как управлять пользовательскими ресурсами в CloudFormation.

1 Ответ

1 голос
/ 22 октября 2019

Пользовательский ресурс, на который вы ссылаетесь, находится в пакете @aws-cdk/aws-cloudformation.

Пример 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,
      }
    });
  }
}
...