AWS - 保存 json 文件到 S3
基于aws 的程序,如果有些数据我们并不经常用到,或者并没有导出到报表的需求,或者并不是业务数据,通常我们存储在 S3, 而不是存储到数据库 (例如 Dynamo)
存储数据到 S3 方法如下:
背景:AWS SDK + NodeJS + Serverless Lambda
1. lambda 中引用 aws sdk
const AWS = require('aws-sdk')
s3: new AWS.S3(),
2. 在lambda 保存数据到 S3
function save () {
const random = deps.crypto.randomBytes(24).toString('hex') //产生位移标识
const opts = {
ACL: 'public-read', //设置资源权限
Key: util.format('%s/rejected-registrations/%s/%s.json', deps.stage, params.accountId, random), //资源key
Body: JSON.stringify(params.customer), //自问文件类型为json
CacheControl: 'max-age=0'
}
const defaultBucket = 'test-internal-' + (deps.stage === 'master' ? 'master' : 'test') //根据业务获得bucket名称
opts .Bucket = opts .Bucket || defaultBucket
return s3.putObject(opts ).promise() //调用aws sdk s3 API, 保存数据到S3
}
3. 在lambda 的 serverless.yml 文件中添加本 lambda 对 S3 的读写权限