У меня есть шаблон CloudFormation
с ресурсом функции Lambda
, который запускается событием CloudWatch при регистрации нового AMI
.В блоке ресурсов Lambda я передаю свой встроенный код в свойстве Code
.Функция запускает выполнение документа автоматизации SSM
, если идентификатор AMI
- это требуемый идентификатор, проанализированный в событии возврата.Ради вопроса, давайте назовем этот ресурс My Doc
в шаблоне.Итак, мой вопрос в том, как в моем шаблоне я должен ссылаться на ресурс документа автоматизации в моем встроенном коде в свойстве Code
ресурса Lambda
?Я вставил пример кода ниже, чтобы проиллюстрировать это.
Ресурсные блоки из шаблона:
"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
}
},
...