#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
.