在使用无服务器部署 Lambda 时如何重用 S3 存储桶?
How do you reuse S3 buckets when deploying Lambdas with Serverless?
最近我们采用无服务器来处理 AWS 环境中 Lambda 函数的部署,但对于部署的每个独特函数,都会创建一个新的 S3 存储桶。这是低效的,对于无服务器创建的每个堆栈都有一个桶是理想的。有什么方法可以从 serverless.yml 文件中执行此操作吗?我已尝试对资源进行以下 yml 文件配置,但没有成功。
1 - 将存储桶列为要在 yml
中使用的资源
resources:
Resources:
ServerlessBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: serverless-test-bucket
输出:
Serverless: Packaging service...
Serverless: Removing old service versions...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading service .zip file to S3...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
............Serverless: Deployment failed!
Serverless Error ---------------------------------------
An error occurred while provisioning your stack: ServerlessBucket
- serverless-test-bucket already exists.
2 - 尝试引用 yml
中的存储桶
resources:
Resources:
ServerlessBucket:
Type: AWS::S3::Bucket
Properties:
Ref: serverless-test-bucket
输出:
Serverless: Packaging service...
Serverless: Removing old service versions...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading service .zip file to S3...
Serverless: Updating Stack...
Serverless Error ---------------------------------------
Template format error: Unresolved resource dependencies
[serverless-test-bucket] in the
Resources block of the template
这已添加到最近版本的无服务器中,但是该版本破坏了某些操作系统上的部署功能,因此随附的版本是 1.1.0。
这是在 serverless.yml 文件中完成的,方法是将 deploymentBucket 添加为 provider 下的一个字段。
示例:
provider:
name: aws
runtime: python2.7
stage: dev
region: us-east-1
deploymentBucket: bucketName
iamRoleStatements:
- Effect: "Allow"
Action:
- "*"
Resource: "*"
这是一个添加到无服务器框架的功能,但是有一个npm module可以帮助您实现这个功能,检查一下。
最近我们采用无服务器来处理 AWS 环境中 Lambda 函数的部署,但对于部署的每个独特函数,都会创建一个新的 S3 存储桶。这是低效的,对于无服务器创建的每个堆栈都有一个桶是理想的。有什么方法可以从 serverless.yml 文件中执行此操作吗?我已尝试对资源进行以下 yml 文件配置,但没有成功。
1 - 将存储桶列为要在 yml
中使用的资源resources:
Resources:
ServerlessBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: serverless-test-bucket
输出:
Serverless: Packaging service...
Serverless: Removing old service versions...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading service .zip file to S3...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
............Serverless: Deployment failed!
Serverless Error ---------------------------------------
An error occurred while provisioning your stack: ServerlessBucket
- serverless-test-bucket already exists.
2 - 尝试引用 yml
中的存储桶resources:
Resources:
ServerlessBucket:
Type: AWS::S3::Bucket
Properties:
Ref: serverless-test-bucket
输出:
Serverless: Packaging service...
Serverless: Removing old service versions...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading service .zip file to S3...
Serverless: Updating Stack...
Serverless Error ---------------------------------------
Template format error: Unresolved resource dependencies
[serverless-test-bucket] in the
Resources block of the template
这已添加到最近版本的无服务器中,但是该版本破坏了某些操作系统上的部署功能,因此随附的版本是 1.1.0。
这是在 serverless.yml 文件中完成的,方法是将 deploymentBucket 添加为 provider 下的一个字段。 示例:
provider:
name: aws
runtime: python2.7
stage: dev
region: us-east-1
deploymentBucket: bucketName
iamRoleStatements:
- Effect: "Allow"
Action:
- "*"
Resource: "*"
这是一个添加到无服务器框架的功能,但是有一个npm module可以帮助您实现这个功能,检查一下。