Проблема в том, что синтаксис ${cf:...}
требует вывода существующего стека CloudFormation, а когда вы еще не развернули проект, стек и его выходные данные еще не существуют.
Если вам нужноПолучив доступ к этому выводу из «текущего» стека, вы должны посмотреть, как выход определяется в Serverless (этот пример взят из одного из моих проектов):
"ServiceEndpoint":{
"Description": "URL of the service endpoint",
"Value": {"Fn::Join":["", [
"https://",
{"Ref":"ApiGatewayRestApi"},
".execute-api.eu-central-1.",
{"Ref":"AWS::URLSuffix"},"/dev"]]}
}
Вы можете использовать тот же синтаксис для "«сгенерируйте» это значение в своем собственном стеке в тех местах, где оно вам нужно, заменив динамические части переменными без сервера, такими как ${self:provider.region}
и ${self:provider.stage}
, или любым другим, выбранным вашим проектом вместо них.Например, чтобы добавить его в среду Lambda:
provider:
environment:
SERVICE_ENDPOINT: {"Fn::Join":["", [
"https://",
{"Ref":"ApiGatewayRestApi"},
".execute-api.${self:provider.region}.",
{"Ref":"AWS::URLSuffix"},
"/${self:provider.stage}"]]}