我正在使用Serverless创建一个提供其静态内容的Web应用程序,例如S3存储桶中的网络字体。 S3存储桶被配置为我的serverless.yml文件中的资源。它的CORS配置将AllowOrigin设置为通配符。

我想将其更改为具有由Serverless创建的服务的http端点的AllowOrigin,例如31alib51b6.execute-api.eu-west-1.amazonaws.com

我想知道是否可以在serverless.yml文件本身中进行配置。

我的示例serverless.yml文件:

service: example-service

provider:
  name: aws
  runtime: nodejs4.3
  region: eu-west-1

functions:
  web:
    handler: handler.handler
    name: ${self:service}-${self:provider.stage}
    description: ${self:service} web application - ${self:provider.stage}
    events:
      - http:
        path: web
        method: get
      - http:
        path: web/{proxy+}
        method: get

resources:
  Resources:
    S3Assets:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:service}-${self:provider.stage}-assets
        CorsConfiguration:
          CorsRules:
            - AllowedMethods:
                - GET
                - HEAD
              AllowedOrigins:
                - "*"

最佳答案

您可以使用以下语句定义AllowedOrigin:

    CorsConfiguration:
      CorsRules:
        - AllowedMethods:
            - GET
            - HEAD
          AllowedOrigins:
            - Fn::Join:
              - ""
              - - "https://"
                - Ref: ApiGatewayRestApi
                - ".execute-api.eu-west-1.amazonaws.com"

“引用:ApiGatewayRestApi”引用生成的API的内部名称。

关于amazon-web-services - 如何配置无服务器S3存储桶资源以使用CORS AllowOrigin设置为其功能的http端点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41860539/

10-10 05:56