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

在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