有没有办法模块化 cloudformation 模板?
Is there a way to modularize cloudformation template?
现在我是这样使用模板的:
- 创建初始资源
- 导入现有资源 (S3)
- 根据现有资源使用新资源更新堆栈
这很无聊,因为我必须分三步部署堆栈,并根据资源进行注释。
我读过有关 cloudformation 模块的信息,但它们似乎无法解决将 3 步过程(初始化、导入现有、使用现有)合并到单个 cloudformation 模板中的问题。
这种情况有解决办法吗?
UPD:我知道我可以只使用资源 ARN 来引用现有资源而不导入它们,但这并不能解决我需要将其他内容附加到我的资源的情况(这里我创建事件通知以导入S3 桶):
# Import existing resource
S3DataBucket:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
# Modify template by adding event configuration
S3DataBucket:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
Properties:
NotificationConfiguration:
LambdaConfigurations:
- Event: s3:ObjectCreated:Put
Filter:
S3Key:
Rules:
- Name: prefix
Value: !Ref SomePrefix
Function: !GetAtt SomeLambda.Arn
看起来有一个未解决的问题,但 AWS 对修复它不太感兴趣:https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/79
同时,您可以考虑以下几点:
- AWS 已建议使用 eventbridge 的解决方法:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-eventbridgeconfig.html#cfn-s3-bucket-eventbridgeconfiguration-eventbridgeenabled
- 通知真的需要在 CFN 模板中吗?能不能像添加bucket一样手动添加?
- 您可以使用 AWS CLI 和一些 JSON/YAML 编辑器或 AWS CDK 编写“无聊工作”的脚本吗?
现在我是这样使用模板的:
- 创建初始资源
- 导入现有资源 (S3)
- 根据现有资源使用新资源更新堆栈
这很无聊,因为我必须分三步部署堆栈,并根据资源进行注释。
我读过有关 cloudformation 模块的信息,但它们似乎无法解决将 3 步过程(初始化、导入现有、使用现有)合并到单个 cloudformation 模板中的问题。
这种情况有解决办法吗?
UPD:我知道我可以只使用资源 ARN 来引用现有资源而不导入它们,但这并不能解决我需要将其他内容附加到我的资源的情况(这里我创建事件通知以导入S3 桶):
# Import existing resource
S3DataBucket:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
# Modify template by adding event configuration
S3DataBucket:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
Properties:
NotificationConfiguration:
LambdaConfigurations:
- Event: s3:ObjectCreated:Put
Filter:
S3Key:
Rules:
- Name: prefix
Value: !Ref SomePrefix
Function: !GetAtt SomeLambda.Arn
看起来有一个未解决的问题,但 AWS 对修复它不太感兴趣:https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/79
同时,您可以考虑以下几点:
- AWS 已建议使用 eventbridge 的解决方法:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-eventbridgeconfig.html#cfn-s3-bucket-eventbridgeconfiguration-eventbridgeenabled
- 通知真的需要在 CFN 模板中吗?能不能像添加bucket一样手动添加?
- 您可以使用 AWS CLI 和一些 JSON/YAML 编辑器或 AWS CDK 编写“无聊工作”的脚本吗?