使用下面的代码,我可以创建和部署一个 lambda,但我想在每次执行部署时调用它。此代码在 github 操作工作流中运行。
import os
from aws_cdk import (
core as cdk,
aws_lambda as lambda_,
aws_iam as iam,
aws_stepfunctions as invoke
)
class DMSAutoBackfill(cdk.Stack):
def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
lambda_fn = lambda_.Function(
self, "DmsAutoFillLambda",
code=lambda_.Code.from_asset(
os.path.join(os.path.abspath("."), "lambda_function")
),
handler="create_dms_backfill.event_handler",
environment={
'schema_name': os.getenv('schema_name', ''),
'table_name': os.getenv('table_name', '')
},
timeout=cdk.Duration.seconds(ADD_EMR_STEP_LAMBDA_TIMEOUT),
runtime=lambda_.Runtime.PYTHON_3_7,
)
我也尝试过使用CustomResourcefromaws_cdk但它没有用,它只在创建之后运行 lambda(第一次创建 cloudformation 资源),而不是在每次调用 github 操作之后(在 cloudformation 上生成更新)资源)。
更新
我选择创建一个boto3用于调用 lambda 的脚本,并使用 Github Actions 进行调用。
我得出的结论CDK是更好地用于创建和管理基础设施作为代码,而boto3更好地操作这些创建的资源。