答えて

18

は、いくつかの試行錯誤の後、私は、CORSコンソール・ウィザードと比較した場合、次のCloudFormationテンプレートスニペットが同等OPTIONSメソッドを生成することがわかっ:

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:最近YAMLサポートを導入したAWS CloudFormationチームの功績。 YAML/JSONとの変換が必要な場合は、このサイトが便利であることがわかりました:http://www.json2yaml.com/

+1

最後のブール値は 'false'ではなく' true'であるべきですか? –

1

自動CORS設定のAPIゲートウェイサポートは、現在、APIゲートウェイコンソールを介してのみ機能します。 APIをSwaggerからインポートするときやCloudFormation経由でAPIを定義するときにCORSを自分で設定することはできますが、OPTIONSメソッドを設定するためのすべてのパラメータを指定し、他のメソッドにCORS固有のヘッダを追加する必要があります。

This pageは、スガッガをインポートする際にCORSを設定する方法を示しています。 CloudFormationを介してCORSを設定することは概念的には似ていますが、Swagger構文ではなくCloudFormation構文を使用します。

関連する問題