【问题标题】:AWS Api Gateway proxy for s3 bucket with Serverless Framework具有无服务器框架的 s3 存储桶的 AWS Api Gateway 代理
【发布时间】:2020-04-14 11:15:43
【问题描述】:

我正在使用包含不同资源(lambda 函数、cognito 用户池、cognito 身份池等)的无服务器框架部署项目

对于之前的项目,我们从控制台(手动)创建了第二个 Api 网关的配置(除了我们在 lambda 上使用无服务器配置的那个),只是作为我们的 s3 存储桶的代理,所以我们能够在不使用 lambda 的情况下从存储桶中添加和获取文件。

现在,我想为这个新项目做一些确切的事情,但不是从控制台手动创建第二个 Api 网关,有没有办法直接从无服务器配置中声明这个代理?

我搜索了不同的解决方案,但没有找到任何指南。

我试图在配置中做的是 amazon guide 解释的内容。

【问题讨论】:

    标签: amazon-s3 proxy aws-api-gateway serverless-framework


    【解决方案1】:

    您可以使用this 插件,该插件可以非常轻松地设置 API Gateway 服务代理(我是合作者之一)。

    serverless.yml 示例:

    service: s3-proxy
    
    provider:
      name: aws
      runtime: nodejs10.x
    
    plugins:
      - serverless-apigateway-service-proxy    
    
    custom:
      apiGatewayServiceProxies:
        - s3:
            path: /s3/{key}
            method: post
            action: PutObject
            bucket:
              Ref: S3Bucket
            key:
              pathParam: key
            cors: true
    
    resources:
      Resources:
        S3Bucket:
          Type: 'AWS::S3::Bucket'
    

    【讨论】:

    • 如果我使用的是 python 3.7 而不是 nodejs,我可以在项目的主 serverless.yml 文件中使用它吗?
    • 是的,您可以在主 serverless.yml 中使用它。您可以将它与 python 一起使用。该插件只是根据您提供的亚马逊指南将资源添加到您的 CloudFormation 模板中,因为如果您想自己做的话,有很多样板。
    • 我在 github 项目中看到也支持 SNS 服务...但似乎仅适用于主题...我可以通过某种方式将其配置为将 platform_endpoint 发送到网关以向单个发送通知设备还是不支持?
    • 我不确定我是否理解您关于 SNS 的问题。您介意在 GitHub 存储库中的问题中描述您的场景吗?该插件允许您设置 API 网关以使用 URL 直接将消息发布到 SNS。如果您将订阅者连接到 SNS 主题,它将收到发布的消息。
    • 我不想将消息发布到主题,而是发布到单个注册设备(通过它注册到 SNS 服务时的 ARN)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2022-10-13
    • 2020-07-10
    • 2023-04-06
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多