Amazon cloudformation CloudFormation模板:减少样板代码
我正在尝试编写CF模板来部署一个由多个lambda组成的无服务器系统。在我的例子中,Lambda资源描述共享很多属性;唯一的区别是文件名和处理函数 如何在模板中定义类似于公共参数集的内容 这个样板太糟糕了:Amazon cloudformation CloudFormation模板:减少样板代码,amazon-cloudformation,boilerplate,Amazon Cloudformation,Boilerplate,我正在尝试编写CF模板来部署一个由多个lambda组成的无服务器系统。在我的例子中,Lambda资源描述共享很多属性;唯一的区别是文件名和处理函数 如何在模板中定义类似于公共参数集的内容 这个样板太糟糕了: LambdaCreateUser: Type: AWS::Lambda::Function Properties: Code: S3Bucket: Ref: BucketForLambdas S3Key:
LambdaCreateUser:
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket:
Ref: BucketForLambdas
S3Key: create_user.zip
Handler: create_user.lambda_handler
Runtime: python3.7
Role:
Fn::GetAtt: [ LambdaRole , "Arn" ]
Environment:
Variables: { "EnvTable": !Ref EnvironmentTable, "UsersTable": !Ref UsersTable }
LambdaDeleteUser:
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket:
Ref: BucketForLambdas
S3Key: delete_user.zip
Handler: delete_user.lambda_handler
Runtime: python3.7
Role:
Fn::GetAtt: [ LambdaRole , "Arn" ]
Environment:
Variables: { "EnvTable": !Ref EnvironmentTable, "UsersTable": !Ref UsersTable }
你要找的是在云结构的顶部有一层语法糖。AWS SAM模板的基本表示形式如下所示:
AWSTemplateFormatVersion:'2010-09-09'
转换:“AWS::Serverless-2016-10-31”
全球:
功能:
运行时:python3.7
环境:
变量:
表:!参考环境表
用户稳定:!Ref用户稳定
资源:
LambdaCreateUser:
类型:AWS::Serverless::Function
特性:
代码:
S3Bucket:
参考:巴克特福兰达斯
S3Key:创建_user.zip
处理程序:创建\u user.lambda\u处理程序
角色:!格塔特·兰博达罗
Lambdadeletueser:
类型:AWS::Serverless::Function
特性:
代码:
S3Bucket:
参考:巴克特福兰达斯
S3Key:delete_user.zip
处理程序:删除\u user.lambda\u处理程序
角色:!格塔特·兰博达罗
但这还不是结局。您可以将代码定义替换为代码的路径,甚至可以替换为内联代码,并使用
sam build
和sam package
来构建和上载工件。您还可以将角色定义替换为,以进一步减少样板代码。谢谢@Dunedan,我们一定会看一看。我的CF模板还部署了两个DynamoDB数据库,S3 bucket,用于Lambda的IAM角色和用于数据库的内联初始化Lambda,希望这一切都可以通过SAM实现(如果它只是CF的语法糖的话)。理想情况下,代码如下所示。比如,DefaultProperties是在其他地方定义的;函数定义中列出的属性将覆盖默认值<代码>LambdaCreateUser:类型:AWS::Serverless::函数属性:!Ref DefaultProperties S3Key:create_user.zip处理程序:create_user.lambda_处理程序LambdaDeleteUser:Type:AWS::Serverless::Function Properties:!Ref DefaultProperties S3Key:delete_user.zip处理程序:delete_user.lambda_处理程序