use*_*358 0 python python-3.x aws-cdk aws-cdk-custom-resource
我已将 Python 3.8 lambda 函数连接为 cdk 堆栈中的自定义资源。堆栈运行并触发 lambda 执行。然而,在堆栈的后续更新中,它不会执行任何调用 lambda 自定义资源的操作。
这是拉姆达
def lambda_handler(event, context):
print('lambda executed')
print('request: {}'.format(json.dumps(event)))
return { 'PhysicalResourceId': "1234" }
Run Code Online (Sandbox Code Playgroud)
这就是它在堆栈中的连接方式
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": ''})
Run Code Online (Sandbox Code Playgroud)
为什么我第二次部署 cdk 堆栈时没有调用自定义资源 lambda?
TL;DR 因为您的资源没有改变。
docs:当您将 Lambda 函数与自定义资源关联时,每当创建、更新或删除自定义资源时都会调用该函数。
换句话说,当自定义资源添加到堆栈、从堆栈中删除或其属性发生更改时,CloudFormation(潜伏在 CDK 抽象后面)将调用您的 Lambda。1
因此,如果您希望在每次部署时调用 CR Lambda 的风格2 ,请包含时间戳作为属性。时间戳值将更改每次部署,导致 CR Lambda 触发更新事件。
executeOnEveryDeployment选项。| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |