我正在尝试在项目中使用S3服务。
我保存自定义变量并在我的提供者属性中使用:
service: snapnext
custom:
imagesBucketName: snapnext-images
provider:
name: aws
runtime: nodejs6.10
iamRoleStatements: # IAM permissions granted to all functions
- Effect: Allow
Action:
- S3:GetObject
Resource:
- Fn::Join:
- ''
- - 'arn:aws:s3:::'
- '${self:custom.imagesBucketName}/*'
environment:
IMAGES_BUCKET_NAME: ${self:custom.imagesBucketName}
functions:
downloadImage: # Define a new Function
handler: functions/downloadImage.handler
events:
- http:
path: images
method: post
resources:
Resources:
ImagesBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${self:custom.imagesBucketName}
AccessControl: PublicRead
plugins:
- serverless-offline
知道为什么会这样吗?
以及如何以更好的方式在无服务器框架中进行调试,尤其是对.yml
文件进行调试?
答案 0 :(得分:1)
您已将无服务器配置为创建名称为snapnext-images
的存储桶,当它尝试执行此操作时,它不会,因为...它已经存在。
提供的存储桶名称可用(存储桶名称与所有人共享),
这与自定义变量无关。
答案 1 :(得分:0)
您正在尝试在部署堆栈时创建s3资源。仅当存储桶名称已存在时,您将得到此错误。存储桶名称在区域和帐户之间应该是唯一的。 您需要在云形成中创建s3存储桶资源时要小心/专心。