【发布时间】:2020-08-02 11:04:57
【问题描述】:
我正在尝试使用 bash 脚本更改 Lambda 的最大事件年龄设置。 Serverless 目前似乎不支持此设置,因此我计划在从 GitHub 部署后将其作为 bash 脚本进行。
方法:
我正在考虑在特定 CloudFormation 堆栈中查询 Lambda 的 aws。我猜当部署一个 repo 时,会创建一个新的 CF 堆栈。然后,我想遍历函数并使用put-function-event-invoke-config 更改每个 lambda 的最大事件年龄设置。
问题:
put-function-event-invoke-config 似乎需要一个函数名。在查询 CF 堆栈时,我得到的是 lambda ARN。我可以做一些字符串操作来获取 lambda 名称,但这似乎是一种混乱的方式。
我在正确的轨道上吗?有没有更好的办法?
编辑:
lambdas 已经存在并已部署。我认为我需要做的是运行某种脚本,该脚本能够遍历已从单个存储库部署的 lambda 列表(有多个存储库部署到同一环境)并更改最大事件-年龄设置,默认为 6 小时。
这是我使用 CLI 使用 aws cloudformation describe-stacks 查询 CFN 时的示例输出:
{
"StackId": "arn:aws:cloudformation:us-east-1:***:stack/my-repository-name/0sdg70gfs-6124-12ea-a910-93c4ahj3d140",
"StackName": "my-repository-name",
"Description": "The AWS CloudFormation template for this Serverless application",
"CreationTime": "2019-11-18T22:05:44.246Z",
"LastUpdatedTime": "2019-03-19T23:26:04.382Z",
"RollbackConfiguration": {},
"StackStatus": "UPDATE_COMPLETE",
"DisableRollback": false,
"NotificationARNs": [],
"Capabilities": [
"CAPABILITY_IAM",
"CAPABILITY_NAMED_IAM"
],
"Outputs": [
{
"OutputKey": "TestLambdaFunctionQualifiedArn",
"OutputValue": "arn:aws:lambda:us-east-1:***:function:my-test-function:3",
"Description": "Current Lambda function version"
},
我知道可以运行这个命令来改变maximum-event-age:
$ aws lambda --region us-east-1 put-function-event-invoke-config --function-name my-test-function --maximum-event-age-in-seconds 3600
但它似乎需要--function-name,我在上面查询的 CFN 输出中没有看到它。
如何以编程方式遍历 CFN 堆栈中的所有函数并修改最大事件年龄的设置?
【问题讨论】:
-
CFN 确实返回 lambda 函数名称,使用 !Ref。
-
我刚刚阅读了文档,但我不明白如何使用 Ref.你能进一步解释一下吗?我对此很陌生
-
很遗憾,我不确定您在做什么。你的描述很混乱。所以您正在使用 CloudFormation 创建您的 lambda?你能提供你使用的模板吗?要从模板中输出函数名称,请使用模板中的
Outputs部分。 -
@Marcin 我已经更新了这个问题,希望能更清楚。我也不确定你所说的模板是什么意思。那是无服务器 yaml 文件吗?让我知道是否仍不清楚我正在尝试做什么。谢谢你这么有耐心。
标签: amazon-web-services aws-lambda amazon-cloudformation serverless-framework