Я создаю шаблон облачной статистики AWS для своей среды, и я не могу найти способ включить метод CORS для API-шлюза.
Я могу настроить его с помощью консоли AWS (вот официальный документ), но как я могу это сделать в шаблоне Cloudformation?
Я создаю шаблон облачной статистики AWS для своей среды, и я не могу найти способ включить метод CORS для API-шлюза.
Я могу настроить его с помощью консоли AWS (вот официальный документ), но как я могу это сделать в шаблоне Cloudformation?
После некоторых проб и ошибок я обнаружил, что следующий фрагмент шаблона CloudFormation будет производить эквивалентный метод OPTIONS по сравнению с мастером консоли CORS:
OptionsMethod:
Type: AWS::ApiGateway::Method
Properties:
AuthorizationType: NONE
RestApiId:
Ref: MyApi
ResourceId:
Ref: MyResourceOnWhichToEnableCORS
HttpMethod: OPTIONS
Integration:
IntegrationResponses:
- StatusCode: 200
ResponseParameters:
method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
method.response.header.Access-Control-Allow-Methods: "'POST,OPTIONS'"
method.response.header.Access-Control-Allow-Origin: "'*'"
ResponseTemplates:
application/json: ''
PassthroughBehavior: WHEN_NO_MATCH
RequestTemplates:
application/json: '{"statusCode": 200}'
Type: MOCK
MethodResponses:
- StatusCode: 200
ResponseModels:
application/json: 'Empty'
ResponseParameters:
method.response.header.Access-Control-Allow-Headers: false
method.response.header.Access-Control-Allow-Methods: false
method.response.header.Access-Control-Allow-Origin: false
* Примечание 1. Это пример использования значений по умолчанию для POST. Очевидно, вам нужно обновить Access-Control-Allow-Methods
, чтобы включить нужные значения.
* Примечание 2: Премия команды AWS CloudFormation за недавнюю поддержку YAML. Если вам нужно конвертировать в/из YAML/JSON, я нашел этот сайт удобным: http://www.json2yaml.com/
Поддержка API Gateway для автоматической конфигурации CORS в настоящее время работает только через консоль API Gateway. Вы можете настроить CORS самостоятельно при импорте API из swagger или при определении API через CloudFormation, но вы должны указать все параметры для настройки метода OPTIONS, а также добавить специальные заголовки CORS к вашим другим методам.
Эта страница показывает, как настроить CORS при импорте swagger. Настройка CORS через CloudFormation концептуально аналогична, но использует синтаксис CloudFormation, а не синтаксис swagger.
это только метод создания опции, все еще есть работа, которую нужно выполнить для ответа GET, POST и т.д., я создал завершенную облачную информацию "Здравствуй, мир!"
https://github.com/seraphjiang/aws-cors-cloudformation/tree/master
Попробуй это:
OPTIONS:
Type: AWS::ApiGateway::Method
Properties: ApiKeyRequired: false
RestApiId: !Ref YourAPI
ResourceId: !Ref YourResourceName
HttpMethod: OPTIONS
AuthorizationType: NONE
Integration:
Type: MOCK
IntegrationResponses:
- StatusCode: 200
ResponseParameters:
method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
method.response.header.Access-Control-Allow-Methods: "'GET,OPTIONS'"
method.response.header.Access-Control-Allow-Origin: "'*'"
ResponseTemplates:
application/json: ''
PassthroughBehavior: WHEN_NO_MATCH
RequestTemplates:
application/json: '{"statusCode": 200}'
Type: MOCK
MethodResponses:
- StatusCode: 200
ResponseModels:
application/json: 'Empty'
ResponseParameters:
method.response.header.Access-Control-Allow-Headers: false
method.response.header.Access-Control-Allow-Methods: false
method.response.header.Access-Control-Allow-Origin: false