Aws lambda 部署时ENV的自定义变量始终出错,无服务器框架
我试图在我的项目中使用S3服务 我保存自定义变量并在我的提供程序属性中使用:Aws lambda 部署时ENV的自定义变量始终出错,无服务器框架,aws-lambda,serverless-framework,aws-serverless,Aws Lambda,Serverless Framework,Aws Serverless,我试图在我的项目中使用S3服务 我保存自定义变量并在我的提供程序属性中使用: service: snapnext custom: imagesBucketName: snapnext-images provider: name: aws runtime: nodejs6.10 iamRoleStatements: # IAM permissions granted to all functions - Effect: Allow Action:
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
文件?您已将无服务器配置为创建一个名为snapnext images
的bucket,但当它尝试这样做时,它无法这样做,因为。。。它已经存在了
如果bucket名称可用(bucket名称与所有人共享),则:
- 在第一次部署之前确保bucket不存在,以便无服务器可以完成其工作;或
- 不要定义要创建的bucket,而要使用现有的bucket;或
- 如果要创建新bucket并保留现有bucket,请选择其他名称
这与自定义变量无关。在部署堆栈时,您正在尝试创建s3资源。您将只得到已存在的bucket名称的错误。bucket名称在区域和帐户之间应该是唯一的。 在云计算中创建s3存储桶资源时,您需要小心
- 在部署之前,请确保它不存在 很多时候,如果存储桶中有对象/文件,那么删除堆栈不会删除使用堆栈创建的S3存储桶。您需要编写一个在删除bucket事件时触发的自定义lambda,以便在删除bucket之前删除所有内容
snapnext映像
存储桶?例如,通过web控制台或以类似方式?嗨,Alex,thx For u响应。我已经尝试删除s3服务和云形成中的bucket。之后,我将在终端中运行命令serverless remove。当我再次尝试部署时,会出现相同的错误message@EndySantoso这个桶肯定存在。如果这个bucket是你的,请确保它已被删除,如果它不是你的,则必须选择另一个名称——bucket跨区域和帐户。