首页 > 解决方案 > 为什么导出 s3 存储桶名称和 arn 在无服务器框架中使用不同的语法?

问题描述

我有以下配置serverless.yml。它创建一个 s3 存储桶并导出其 ARN 和名称。我不明白为什么存储桶 ARN 值是 get byFn::GetAtt:: S3Bucket Arn但存储桶名称是 get by Ref S3Bucket。这两种语法有什么不同?

...
  Outputs:
    AttachmentsBucketArn:
      Value:
         Fn::GetAtt:
          - S3Bucket
          - Arn
      Export:
        Name: ${self:custom.stage}-ExtAttachmentsBucketArn

    AttachmentsBucketName:
      Value:
        Ref: S3Bucket
      Export:
        Name: ${self:custom.stage}-ExtAttachmentsBucket

标签: amazon-web-servicesamazon-s3serverless-framework

解决方案


它们直接映射到 CloudFormation 中AWS::S3::Bucket的返回值。

正如链接所解释的,使用:

  • Ref “返回存储桶名称”
  • GetAtt 带有Arn“返回指定存储桶的 Amazon 资源名称 (ARN)”。

推荐阅读