Функция Python Chalice Pure Lambda — имя ссылки в отдельном шаблоне формирования облака

#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