gpt4 book ai didi

amazon-web-services - Lambda 函数的内联代码属性中的 CloudFormation 模板中的引用资源

转载 作者:行者123 更新时间:2023-12-03 07:17:48 26 4
gpt4 key购买 nike

我有一个 CloudFormation 模板,其中包含一个 Lambda 函数资源,该资源在注册新的 AMI 时由 CloudWatch 事件触发。在 Lambda 资源 block 中,我在 Code 属性中传递内联代码。如果 AMI id 是返回事件中解析的所需 ID,则该函数会触发 SSM 自动化文档执行。为了解决这个问题,我们在模板中将此资源称为 My Doc。所以,我的问题是,在我的模板中,如何在 Lambda 资源的 Code 属性的内嵌代码中引用自动化文档资源?我在下面粘贴了一个代码示例来帮助说明这一点。

模板中的资源 block :

"MyDoc": {
{
"Type" : "AWS::SSM::Document",
"Properties" : {
"Content" : JSON object,
"DocumentType" : Automation,
"Tags" : [ Resource Tag, ... ]
}
}

"MyLambdaFunction": {
"Type": "AWS::Lambda::Function",
"Properties": {
"Role": {
"Fn::GetAtt": [
"SomeRole",
"Arn"
]
},
"Code": {
"ZipFile": {
"Fn::Join": [
"\n",
[
"import json",
"import boto3",
"def lambda_handler(event, context):",
" ssm = boto3.client('ssm')",
" amiId = event['AMI-ID']",

" if 'base_ami in amiId:",
" ssm.start_automation_execution(DocumentName=THIS IS WHERE I NEED TO REFERENCE THE DOCUMENT RESOURCE)",
" else:",
" print("Not the base AMI id.")"
]
]
}
},
"Runtime": "python3.6",
"Timeout": 300,
"Handler": "index.lambda_handler",
"MemorySize": 512
}
},
...

最佳答案

如果我理解正确的话,为了让您的 Lambda 获取该文档,您首先必须将该文档的逻辑 ID 传递给 Lambda。您可以使用 Lambda Environment variables 中的 !Ref MyDoc 来完成此操作。 ,然后您可以将该变量拉入函数内并使用 GetDocument API call获取文档。

关于amazon-web-services - Lambda 函数的内联代码属性中的 CloudFormation 模板中的引用资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55836104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com