【发布时间】:2021-11-10 03:42:27
【问题描述】:
我在 python chalice app.py 中创建了一个纯 python lambda 函数,如下所示:
@app.lambda_function('R53CloudformationResourceConflict')
def r53_cloudformation_resource_conflict(event, context):
logger.info(event)
logger.info(context)
现在我要做的下一部分是将此 lambda 称为来自单独的云形成模板 (cf.yml) 的自定义资源,如下所示:
AWSTemplateFormatVersion: 2010-09-09
Parameters:
LambdaFunctionName:
Type: String
Resources:
R53CloudformationResourceConflict:
Type: 'Custom::R53CloudformationResourceConflict'
Properties:
ServiceToken: !Join [ '', ['arn:aws:lambda:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':function:', !Ref LambdaFunctionName] ]
AppUrl: "some_app_url"
我的文件结构:
├── cf.yml
└── custom-lambda
├── app.py
└── requirements.txt
目前 python chalice 在纯 lambda 函数名称前添加 {{ app-name }}- {{ chalice-stage }}。所以对于这个例子,最终的 lambda 名称是 custom-lambda-dev-R53CloudformationResourceConflict。
现在我坚持的一点是动态地知道我的 lambda 函数将被调用(不同的阶段,可能是应用程序名称更改)并在单独的 Cloud Formation 堆栈(cf.yml)中动态地引用它。
我发现 https://chalice.readthedocs.io/en/stable/topics/configfile.html#lambda-specific-configuration 这可能会有所帮助,但同样是固定的,不是动态的。
有没有一种相对简单的方法来引用这个由 python chalice 创建的纯 lambda 函数在同一个 repo 的单独 Cloud Formation 模板中?
【问题讨论】:
标签: aws-cloudformation-custom-resource chalice