无服务器 - 如何将 S3 存储桶名称作为环境变量传递给我的应用程序

Serverless — How to pass S3 bucket name as an environment variable to my app

我需要向我的应用程序提供无服务器为我创建的 S3 存储桶的名称。这是我的 serverless.yml 文件的简化版本。

service: dummy-service
app: dummy-service

custom:
  bucket: "I have no idea what to write here!"

provider:
  name: aws
  runtime: nodejs10.x
  region: eu-central-1
  iamRoleStatements:
    - Effect: Allow
      Action:
        - s3:PutObject
        - s3:GetObject
      Resource:
        - "Fn::Join":
          - ""
          - - "arn:aws:s3:::"
            - Ref: DummyBucket
            - "*"
  environment:
    BUCKET: ${self:custom.bucket}

resources:
  Resources:
    DummyBucket:
      Type: AWS::S3::Bucket

functions:
  createOrUpdate:
    handler: handler.dummy
    events:
      - http:
          path: dummy
          method: POST

我想出了如何在 iamRoleStatements 部分中进行引用。但是无法理解如何将其作为环境变量的字符串获取。

欢迎任何帮助。谢谢

您可以使用Ref获取存储桶名称

service: dummy-service
app: dummy-service

custom:
  bucket:
    Ref: DummyBucket

provider:
  name: aws
  runtime: nodejs10.x
  region: eu-central-1
  iamRoleStatements:
    - Effect: Allow
      Action:
        - s3:PutObject
        - s3:GetObject
      Resource:
        - "Fn::Join":
          - ""
          - - "arn:aws:s3:::"
            - Ref: DummyBucket
            - "*"
  environment:
    BUCKET: ${self:custom.bucket}

resources:
  Resources:
    DummyBucket:
      Type: AWS::S3::Bucket

functions:
  createOrUpdate:
    handler: handler.dummy
    events:
      - http:
          path: dummy
          method: POST