it-swarm.asia

Aktifkan CORS untuk API Gateway di templat Cloudformation

Saya membuat template AWS Cloudformation untuk lingkungan saya dan saya tidak dapat menemukan cara untuk mengaktifkan metode CORS untuk API Gateway.

Saya dapat mengonfigurasinya menggunakan konsol AWS ( di sini adalah dokumen resmi ), tetapi bagaimana saya bisa melakukannya di templat Cloudformation?

14
dds

Setelah beberapa percobaan dan kesalahan, saya menemukan bahwa potongan template CloudFormation berikut akan menghasilkan metode OPSI yang setara bila dibandingkan dengan panduan konsol 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

* Catatan 1 : Ini adalah contoh dari mengambil default untuk POST. Jelas, Anda harus memperbarui Access-Control-Allow-Methods untuk memasukkan nilai yang Anda butuhkan.

* Catatan 2 : Kudos kepada tim AWS CloudFormation untuk baru-baru ini memperkenalkan dukungan YAML. Jika Anda perlu mengonversi ke/dari YAML/JSON, saya merasa situs ini berguna: http://www.json2yaml.com/

29
dannymac

Dukungan API Gateway untuk konfigurasi CORS otomatis saat ini hanya berfungsi melalui konsol API Gateway. Anda masih dapat mengatur sendiri CORS ketika mengimpor API dari kesombongan atau saat mendefinisikan API melalui CloudFormation, tetapi Anda harus menentukan semua parameter untuk mengatur metode OPSI serta menambahkan header spesifik CORS ke metode Anda yang lain.

Halaman ini menunjukkan cara mengatur CORS saat mengimpor kesombongan. Menyiapkan CORS melalui CloudFormation secara konseptual serupa, tetapi menggunakan sintaks CloudFormation daripada sintaks swagger.

2
MikeD at AWS

itu hanya membuat metode opsi, masih ada pekerjaan yang harus dilakukan pada GET, POST, dll metode tanggapan,

https://github.com/seraphjiang/aws-cors-cloudformation/tree/master

1
Huan Jiang

Coba ini: 

  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
0
Anoop