cloudformation apigateway отсутствует статус HTTP: прокси

#amazon-web-services #amazon-cloudformation #aws-api-gateway

#amazon-web-services #amazon-cloudformation #aws-api-gateway

Вопрос:

Я настраиваю ресурс шлюза API с помощью cloudformation и заметил, что поле ответа метода не содержит HTTP Status: Proxy , как это происходит, если вы создаете прокси-ресурс из консоли.

Мой CF-код:

   Api:
    Type: AWS::ApiGateway::RestApi
    Properties:
      EndpointConfiguration:
        Types:
          - 'PRIVATE'
      Name: 'why_did_aws_have_to_crash_today_APIG'
  Resource:
    Type: 'AWS::ApiGateway::Resource'
    Properties:
      ParentId: !GetAtt Api.RootResourceId
      PathPart: '{proxy }'
      RestApiId: !Ref Api
  Method:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref Resource
      HttpMethod: ANY
      AuthorizationType: NONE
      Integration:
        IntegrationHttpMethod: ANY
        Type: AWS_PROXY
        Uri: arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:execute-api:us-east-1:why-did-aws-have-to-crash-today/invocations
 

введите описание изображения здесь

Комментарии:

1. Итак, в чем ваш вопрос? API не работает? Какие-либо ошибки?

2. Если не настроен ответ метода, не будет ли ошибки?

3. Я не уверен. Вы проверили? Может быть, по умолчанию он будет установлен?

4. сбой с 500, {«сообщение»: «Внутренняя ошибка сервера»}

5. «почему-aws-пришлось-вылететь-сегодня» 🙂

Ответ №1:

Во-первых, это должно быть:

 IntegrationHttpMethod: POST
 

Из документов:

для интеграции с Lambda необходимо использовать HTTP-метод POST для запроса на интеграцию,

Во-вторых, если вы хотите явно добавить MethodResponses , то это должно быть:

       MethodResponses: 
        - ResponseModels: {"application/json": "Empty"}
          StatusCode: 200    
 

Комментарии:

1. И почему это должно быть ИнтеграциейHttpMethod: POST……

2. @dataviews Я обновил ответ.

3. Похоже, я столкнулся с другой проблемой. Странно, что я не могу получить это сообщение HTTP Status: Proxy для отображения в ответе метода при использовании CF, но моя проблема 500 была связана с тем, что у APIG не было разрешений на вызов прокси-службы (lambda). Если вы настроите его с консоли, вам будет предложено предоставить ему разрешения, в то время как в CF вы этого не делаете. И у меня есть IntegrationHttpMethod: установлено значение ANY, и оно работает, однако после просмотра этой документации я обновлю его до POST, где HttpMethod по-прежнему останется как ЛЮБОЙ

4. Я также отмечу, что пока ваш прокси-сервер (lambda) обрабатывает статус / сообщение ответа, похоже, что вам не нужны ответы MethodResponses . По крайней мере, я не использую это сейчас. По-моему, я где-то видел это в документации, если вы используете прокси для lambda

5. @dataviews Это был мой первоначальный комментарий MethodResponses .