Повторное использование шаблона cloudformation для AWS :: APIGateway :: ApiKey

#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 сгенерирует для вас уникальный ключ при каждом развертывании.