#aws-cloudformation-custom-resource #chalice
Вопрос:
Я создал чистую лямбда-функцию python в чаше app.py
python, вот так:
@app.lambda_function('R53CloudformationResourceConflict')
def r53_cloudformation_resource_conflict(event, context):
logger.info(event)
logger.info(context)
Теперь следующая часть, которую я пытаюсь сделать, — это вызвать эту лямбду в качестве пользовательского ресурса из отдельного шаблона формирования облака ( 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 добавляется {{ app-name }}- {{ chalice-stage }}
к имени чистой лямбда — функции. Таким образом, в данном случае конечным именем лямбды является custom-lambda-dev-R53CloudformationResourceConflict
.
Теперь я застрял на том, чтобы динамически знать, как будет называться моя лямбда-функция(разные этапы, возможно, изменение имени приложения), и динамически ссылаться на это в отдельном стеке формирования облака(см. yml).
Я нашел https://chalice.readthedocs.io/en/stable/topics/configfile.html#lambda-specific-configuration это может помочь, но опять же это исправлено, а не динамично.
Существует ли относительно простой способ ссылаться на эту чистую лямбда-функцию, созданную python chalice, в отдельном шаблоне формирования облака в том же репозитории?
Ответ №1:
В приложении «Чаша» у вас будет несколько этапов: разработка/разработка/тестирование.
Лямбда-имена действительно предсказуемы и не меняются.
{appname}-{env}-{lambdaname}
Давайте предположим, что приложение «чаша» — это адский мир, а ваше лямбда-имя = приветствие:
Если вы хотите ссылаться на свой prod-лямбда: helloworld-prod-приветствия Если вы хотите ссылаться на свой тестовый лямбда: helloworld-test-приветствия Если вы хотите ссылаться на своего разработчика лямбда: helloworld-dev-приветствия
Вы выбираете, какой этап вы развертываете во время развертывания чаши:
chalice deploy --stage prod
Вы можете найти этапы, определенные в вашей заявке, в файле .chalice/config.json
Поиск ключевых этапов.
Также вы должны хранить и проверять свои «государственные файлы» .chalice/deployed/{stage}.json