使用serverless-s3-sync上传本地文件夹到S3部署报错,求解决方案
问题解决:serverless-s3-sync部署错误及替代方案
错误原因
serverless-s3-sync插件要求custom.s3Sync必须是数组格式,你当前配置的是单个对象,不符合插件的配置规则,所以触发了这个错误。
修正后的配置
把单个配置对象放进数组里,修改后的serverless.yaml配置如下:
custom: s3Sync: - bucketName: "${self:custom.deploymentBucket}" bucketPrefix: "datasets/folder1/" localDir: ./GlueEtl
其他可行方法
如果不想依赖这个插件,还有两种常用方式可以实现本地文件夹上传S3的需求:
- Serverless内置S3部署配置:在
resources中定义S3对象,配合package指定要上传的文件,适合文件数量不多的场景:
package: include: - ./GlueEtl/** resources: Resources: MyDatasetBucket: Type: AWS::S3::Bucket Properties: BucketName: ${self:custom.deploymentBucket} GlueEtlFiles: Type: AWS::S3::Object Properties: Bucket: !Ref MyDatasetBucket Key: datasets/folder1/${fileBasename} Source: ./GlueEtl/${fileBasename}
- AWS CLI命令配合预部署脚本:在Serverless配置中添加预部署脚本,部署前自动执行S3同步命令:
scripts: deploy:pre: "aws s3 sync ./GlueEtl s3://${self:custom.deploymentBucket}/datasets/folder1/"
执行serverless deploy时会自动先运行这个脚本完成文件上传。
内容的提问来源于stack exchange,提问作者ista120
相关产品推荐
相关产品推荐

