如何根据从哪个存储库部署特定的 Lambdas 添加设置?
How to add settings for specific Lambdas based on which repository they're being deployed from?
我正在尝试使用 bash 脚本更改 Lambda 的最大事件年龄设置。无服务器目前似乎不支持此设置,因此我计划在从 GitHub.
部署后将其作为 bash 脚本执行
方法:
我正在考虑在 aws 中查询特定 CloudFormation 堆栈中的 Lambda。我猜想在部署回购协议时,会创建一个新的 CF 堆栈。然后,我想遍历函数并使用 put-function-event-invoke-config
更改每个 lambda 的最大事件年龄设置。
问题:
put-function-event-invoke-config
好像需要一个函数名。在查询 CF 堆栈时,我得到的是 lambda ARN。我可能会做一些字符串操作来获取 lambda 名称,但这似乎是一种混乱的方式。
我做的对吗?有没有更好的方法?
编辑:
lambda 已经存在并已部署。我想我需要做的是 运行 某种脚本,它能够遍历从单个存储库部署的 lambda 列表(有多个存储库部署到同一环境)并更改maximum-event-age 设置,默认值为 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"
},
我知道 运行 这个命令可以改变最大事件年龄:
$ 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 堆栈中的所有函数并修改 maximum-event-age 的设置?
put-function-event-invoke-config
接受 ARN,这意味着可以根据堆栈名称查询 CFN,堆栈名称对应于从中部署它的存储库。
但是,我决定使用 list-functions
来查询 Lambda,然后使用 list-tags
因为我们的部署是由 repo 名称标记的。这似乎是比查询 CFN 更好的选择(CFN 输出 ARN 包含一个后缀,这意味着 put-function-event-invoke-config
不会 运行 在它们上面)。
然后我可以 运行 通过 for 循环在 bash 中输出文本并使用 put-function-event-invoke-config
添加最大事件年龄设置。
我正在尝试使用 bash 脚本更改 Lambda 的最大事件年龄设置。无服务器目前似乎不支持此设置,因此我计划在从 GitHub.
部署后将其作为 bash 脚本执行方法:
我正在考虑在 aws 中查询特定 CloudFormation 堆栈中的 Lambda。我猜想在部署回购协议时,会创建一个新的 CF 堆栈。然后,我想遍历函数并使用 put-function-event-invoke-config
更改每个 lambda 的最大事件年龄设置。
问题:
put-function-event-invoke-config
好像需要一个函数名。在查询 CF 堆栈时,我得到的是 lambda ARN。我可能会做一些字符串操作来获取 lambda 名称,但这似乎是一种混乱的方式。
我做的对吗?有没有更好的方法?
编辑:
lambda 已经存在并已部署。我想我需要做的是 运行 某种脚本,它能够遍历从单个存储库部署的 lambda 列表(有多个存储库部署到同一环境)并更改maximum-event-age 设置,默认值为 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"
},
我知道 运行 这个命令可以改变最大事件年龄:
$ 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 堆栈中的所有函数并修改 maximum-event-age 的设置?
put-function-event-invoke-config
接受 ARN,这意味着可以根据堆栈名称查询 CFN,堆栈名称对应于从中部署它的存储库。
但是,我决定使用 list-functions
来查询 Lambda,然后使用 list-tags
因为我们的部署是由 repo 名称标记的。这似乎是比查询 CFN 更好的选择(CFN 输出 ARN 包含一个后缀,这意味着 put-function-event-invoke-config
不会 运行 在它们上面)。
然后我可以 运行 通过 for 循环在 bash 中输出文本并使用 put-function-event-invoke-config
添加最大事件年龄设置。