serverless教程三:使用AWS S3


在开发无服务器应用的时候,通过纯手工方式创建各种资源的话,效率会非常低,因此需要借助一些框架来提高开发效率。下面介绍如何在serverless中创建并使用AWS S3。

serverless教程

在serverless中定义S3 bucket

首先更新serverless.yml:

resources:
    Resources:
        DemoBucketUpload:
            Type: AWS::S3::Bucket
            Properties:
                BucketName: lcoding-demo-bucket

然后运行如下命令就会创建S3 bucket:

sls deploy

在创建S3 bucket的同时将本地文件同步到S3

首先安装依赖库:

npm install serverless-s3-sync

然后创建本地目录uploads并将相关文件添加到该目录中。

再次部署:

sls deploy

可以看到在创建/更新S3之后,将将本地目录uploads同步到S3:

S3 Sync: Syncing directories and S3 prefixes...
..
S3 Sync: Synced.
S3 Sync: Syncing metadata...
.
S3 Sync: Synced metadata.
S3 Sync: Updating bucket tags...
.
S3 Sync: Updated bucket tags.

所有人都能读的bucket

resources:
  Resources:
    DemoBucketUpload:
      Type: AWS::S3::Bucket
      Properties:
          BucketName: lcoding-dev-bucket

    DemoBucketPolicy:
      Type: AWS::S3::BucketPolicy
      Properties:
        Bucket:
          Ref: DemoBucketUpload
        PolicyDocument:
          Statement:
            - Sid: PublicReadGetObject
              Effect: Allow
              Principal: "*"
              Action:
              - s3:GetObject
              Resource:
                Fn::Join: [
                  "", [
                    "arn:aws:s3:::",
                    {
                      "Ref": "DemoBucketUpload"
                    },
                    "/*"
                  ]
                ]

用于host静态网站的bucket

websiteBucket:
  Type: AWS::S3::Bucket
  Properties:
    BucketName: lcoding-public-bucket
    AccessControl: PublicRead
    WebsiteConfiguration:
        IndexDocument: index.html
        ErrorDocument: index.html

# 类似的policy        

文章作者: 逻思
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 逻思 !
  目录