ответ

18

После нескольких проб и ошибок, я обнаружил, что следующий шаблон 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/

+1

не должен быть логическим в конце, а не 'true' вместо' false'? –

1

Поддержка API Gateway для автоматической конфигурации CORS в настоящее время работает только через консоль API Gateway. Вы можете настроить CORS самостоятельно при импорте API из swagger или при определении API через CloudFormation, но вы должны указать все параметры для настройки метода OPTIONS, а также добавить специальные заголовки CORS к другим вашим методам.

This page показывает, как настроить CORS при импорте заусенцев. Настройка CORS через CloudFormation концептуально похожа, но использует синтаксис CloudFormation, а не синтаксис swagger.