#amazon-web-services #amazon-cloudformation #aws-serverless #aws-sam
#amazon-веб-сервисы #aws-cloudformation #aws-бессерверный #aws-sam
Вопрос:
У меня есть шаблон AWS SAM, часть которого выглядит следующим образом:
# .......
InternalApiKey:
Type: AWS::ApiGateway::ApiKey
Properties:
Enabled: true
Name: !Sub internal_api_key_${Env}
Value: !Ref InternalApiKeyValue
StageKeys:
- RestApiId: !Ref ServerlessRestApi
StageName: Prod
InternalUsagePlan:
Type: AWS::ApiGateway::UsagePlan
Properties:
ApiStages:
- ApiId: !Ref ServerlessRestApi
Stage: Prod
InternalUsagePlanKey:
Type: AWS::ApiGateway::UsagePlanKey
Properties:
KeyId: !Ref InternalApiKey
KeyType: API_KEY
UsagePlanId: !Ref InternalUsagePlan
#......
Развертывание этого шаблона как двух разных приложений (CloudFormation stack) со sam deploy --stack-name=stack-a
sam deploy --stack-name=stack-b
следующей ошибкой и завершается ошибкой, даже если имена ключей api разные:
Ключ API уже существует (сервис: AmazonApiGateway; Код состояния: 409; Код ошибки: ConflictException; Идентификатор запроса: отредактирован; Прокси: null)
Как я могу развернуть два стека из этого шаблона?
Комментарии:
1. Другое значение ключа, и ваша проблема исчезнет. Поэтому, если вы сами устанавливаете значение ключа api, убедитесь, что они уникальны. Не уверен, почему это ограничение между разными этапами.
2. @AbdulMoeez Вот в чем причина! Я приму это, как только вы отправите это в качестве ответа.
Ответ №1:
Другое значение ключа, и ваша проблема исчезнет. Поэтому, если вы сами устанавливаете значение ключа api, убедитесь, что они уникальны. Не уверен, почему это ограничение между разными этапами.
Ответ №2:
Вам действительно нужно указывать значение для вашего ключа? Это необязательный параметр. Вы можете удалить его из своего шаблона, и AWS сгенерирует для вас уникальный ключ при каждом развертывании.