[英]Python AWS CDK Custom resource only executes the first time
我已将 Python 3.8 lambda function 作为 cdk 堆栈中的自定义资源连接起来。 堆栈运行并触发了 lambda 执行。 但是,在对堆栈进行后续更新时,它不会调用 lambda 自定义资源。
这是lambda
def lambda_handler(event, context):
print('lambda executed')
print('request: {}'.format(json.dumps(event)))
return { 'PhysicalResourceId': "1234" }
这就是它在堆栈中的连接方式
from constructs import Construct
from aws_cdk import (
Stack,
custom_resources as cr,
aws_lambda as _lambda,
CustomResource
)
cust_res_lambda = _lambda.Function(
self, 'crLambda',
runtime=_lambda.Runtime.PYTHON_3_8,
code=_lambda.Code.from_asset('my-resources'),
handler='lambda.lambda_handler',
function_name='cr_Lambda'
)
res_provider = cr.Provider(
self,'crProvider',
on_event_handler= cust_res_lambda
)
CustomResource(self, 'cust_res',service_token= res_provider.service_token,properties={"curr_account":"4563563","curr_region":"us-east-1", "res_id": ''})
为什么我第二次部署 cdk 堆栈时自定义资源 lambda 没有被调用?
TL;DR 因为您的资源没有改变。
docs :当您将 Lambda function 与自定义资源相关联时,只要创建、更新或删除自定义资源,就会调用 function。
换句话说,当自定义资源添加到堆栈、从堆栈中删除或更改其属性时,CloudFormation(隐藏在 CDK 抽象背后)将调用您的 Lambda。 1个
因此,如果您希望在每次部署时调用 CR Lambda 的 flavor 2 ,请将时间戳作为属性包含在内。 时间戳值将更改每次部署,导致 CR Lambda 触发更新事件。
executeOnEveryDeployment
选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.