在Cloudformation模板中为API网关启用CORS

dds*_*dds 23 amazon-web-services cors aws-cloudformation aws-api-gateway

我正在为我的环境创建AWS Cloudformation模板,但我找不到为API Gateway方法启用CORS的方法.

我可以使用AWS控制台配置它(这是官方文档),但是如何在Cloudformation模板中执行此操作?

小智 44

经过一些试验和错误后,我发现与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
Run Code Online (Sandbox Code Playgroud)

*注1:这是取POST的默认值的示例.显然,您需要更新Access-Control-Allow-Methods以包含所需的值.

*注2:对最近推出YAML支持的AWS CloudFormation团队表示感谢.如果您需要转换为/从YAML/JSON转换,我发现这个网站很方便:http://www.json2yaml.com/

  • 不应该最终的布尔都是"真"而不是"假"吗? (3认同)