Рубрики
Uncategorized

Как предотвратить создание AWS SAM по умолчанию «стадия API Gateway

Привет, разработчики, я расскажу вам одну проблему AWS SAM относительно ресурса AWS :: Serverless :: API и … Tagged с помощью AWS, Learning, Cloudskills, DevOps.

Привет, разработчики,

Я собираюсь рассказать вам одну проблему AWS SAM, касающегося ресурса AWS:: Serverless:: API и преобразовать AWS:: Serverless-2016-10-31 поднят над Stackoverflow и их решение для борьбы с временной основой, потому что эта проблема все еще существует. Позвольте мне объяснить, что сначала проблема.

Заявление проблемы :

При создании AWS Server Bless API Gateway с использованием SAM Эта конфигурация для развертывания на стадии «Prod» вместе с образцом кода без сервера, но, создавая ресурсы, она создает два этапа под шлюзом API, который вы предоставили в соответствии с примером ниже, а один — по умолчанию Стадия Анкет Так что, если вы хотите создать собственную сцену, не может создать его, выбросить ошибку, это Стадия уже существует :

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: AWS SAM template with a simple API definition
Resources:
  ApiGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: prod
  ApiFunction: # Adds a GET api endpoint at "/" to the ApiGatewayApi via an Api event
    Type: AWS::Serverless::Function
    Properties:
      Events:
        ApiEvent:
          Type: Api
          Properties:
            Path: /
            Method: get
            RestApiId:
              Ref: ApiGatewayApi
      Runtime: python3.7
      Handler: index.handler
      InlineCode: |
        def handler(event, context):
            return {'body': 'Hello World!', 'statusCode': 200}

В AWS Sam есть ошибка Сценический псевдоним Это создает стадию по умолчанию вместе с именем сцены, которое вы предоставили, как Prod. Сначала вы удалите свой текущий, затем вы можете применить эти изменения.

Чтобы решить эту проблему, есть два способа, добавив OpenApiversion: '2.0' В вашем файле YAML:

Решение 1 : Под свойствами следующих Стаговое имя может добавить это. Эти свойства могут быть добавлены для AWS:: Serverless:: API или другие ресурсы, такие как AWS:: Serverless:: Lambda Анкет

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: AWS SAM template with a simple API definition
Resources:
  ApiGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: 'V1'
      OpenApiVersion: '2.0'
  ApiFunction: # Adds a GET api endpoint at "/" to the ApiGatewayApi via an Api event
    Type: AWS::Serverless::Function
    Properties:
      Events:
        ApiEvent:
          Type: Api
          Properties:
            Path: /
            Method: get
            RestApiId:
              Ref: ApiGatewayApi
      Runtime: python3.7
      Handler: index.handler
      InlineCode: |
        def handler(event, context):
            return {'body': 'Hello World!', 'statusCode': 200}

Решение 2 : Следующее в вашем шаблоне SAM на верхнем уровне и убедитесь, что вы определили стадию, используя «Стагновое» на вашем ресурсе AWS:: Serverless: API. Это будет глобальный уровень, если у вас есть несколько ресурсов, таких как API или Lambda и т. Д.

Globals:
  Api:
    OpenApiVersion: 3.0.1
    Cors: '*'

Resources:
  ImplicitApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: s3://sam-demo-bucket/member_portal.zip
      Handler: index.gethtml
      Runtime: nodejs12.x
      Events:
        GetHtml:
          Type: Api
          Properties:
            Path: /
            Method: get
  ExplicitApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: Prod

Примечание : Это решение работает только тогда, когда вы создаете API с нуля. Если API был создан ранее, и пользователь добавляет OpenApiversion: '2.0' Для этого это не удаляет сцену «сцены». Это должно быть добавлено с самого начала. Также этот пример для Yaml того же может быть применен для формата JSON.

Если вам нравится мой блог, пожалуйста, как статья, она побудит меня написать больше таких проблем, ориентированных на проблемы. Поделитесь своими ценными предложениями, я ценю ваши честные отзывы!. Если у вас есть какой -либо вопрос о том, что может связаться со мной по моей ручке в Твиттере @aviboy2006

Ссылка :

https://github.com/aws/serverless-application-model/blob/master/tests/translator/input/api_with_open_api_version.yaml#l3 https://github.com/aws/serverless-application-model/issues/191#issuecomment-551051431

Оригинал: «https://dev.to/aws-builders/how-to-prevent-aws-sam-from-creating-the-default-stage-in-api-gateway-stage-2o2g»