通过 Cloudformation/lambda 发送 SNS 消息以更新安全组
Send SNS message via Cloudformation/lambda for updating security group
我正在尝试 "populate" 连接到我的 ALB 的 SG 以允许来自 Cloudfront 的流量进入。
这个 ALB/CF dist 是通过 Cloudformation 创建的。我目前有一个 Lambda 函数可以处理来自 AmazonIpSpaceChanged 的 SNS 消息。但是,当我创建此 CF 堆栈时,需要触发 SNS 消息以最初填充 SG。
有没有办法创建 SNS 消息来触发此 Lambda 函数?我查看了 SNS 支持的自定义资源,但似乎没有用。
我也遇到过这个问题。我无法让我的 SNS 主题工作以触发 lambda 函数。但是,我能够使用自定义资源来做到这一点。
只要 lambda 函数与 CloudFormation 模板中的自定义资源相关联,它就会在创建该自定义资源的过程中被调用。您将不得不依赖于其中包含代码的 cloudformation 资源,因为如果它在创建 lambda 函数之前触发,它将无法工作。
为什么不使用 AWS::EC2::SecurityGroupIngress 直接从 CloudFormation 添加规则到安全组?
InboundRule:
Type: AWS::EC2::SecurityGroupIngress
Properties:
IpProtocol: tcp
FromPort: 0
ToPort: 65535
SourceSecurityGroupId:
Fn::GetAtt:
- XX_NEW_SECURITY_GROUP_XX
- GroupId
GroupId: sg-XX_EXISTING_GROUP_XX
您可以使用的一个选项是 CloudFormation API 提供的通知功能:调用 UpdateStack
时,您可以提供 NotificationARNs
列表,这是一个 SNS 主题列表获得有关堆栈的每个 CloudFormation 相关更改的通知。您可以将通知 SNS 主题设置为您订阅 AWS Lambda 函数的 SNS 主题。这当然只有在您不创建 SNS 主题作为 CloudFormation 堆栈的一部分时才有效,您不依赖 SNS 消息上的内容,只需要这样的消息作为触发器,如果您过滤 SNS 消息Lambda 函数仅对对您重要的消息做出反应(例如仅在堆栈创建时进行更新,而不是在堆栈删除时进行更新)。
使用 AWS CLI 及其 deploy
命令,指定通知 ARN 如下所示:
aws cloudformation deploy \
--template-file your-template.yaml \
--stack-name your-stack \
--notification-arns arn:aws:sns:us-east-1:1234567890123456:yourtopic
我正在尝试 "populate" 连接到我的 ALB 的 SG 以允许来自 Cloudfront 的流量进入。
这个 ALB/CF dist 是通过 Cloudformation 创建的。我目前有一个 Lambda 函数可以处理来自 AmazonIpSpaceChanged 的 SNS 消息。但是,当我创建此 CF 堆栈时,需要触发 SNS 消息以最初填充 SG。
有没有办法创建 SNS 消息来触发此 Lambda 函数?我查看了 SNS 支持的自定义资源,但似乎没有用。
我也遇到过这个问题。我无法让我的 SNS 主题工作以触发 lambda 函数。但是,我能够使用自定义资源来做到这一点。
只要 lambda 函数与 CloudFormation 模板中的自定义资源相关联,它就会在创建该自定义资源的过程中被调用。您将不得不依赖于其中包含代码的 cloudformation 资源,因为如果它在创建 lambda 函数之前触发,它将无法工作。
为什么不使用 AWS::EC2::SecurityGroupIngress 直接从 CloudFormation 添加规则到安全组?
InboundRule:
Type: AWS::EC2::SecurityGroupIngress
Properties:
IpProtocol: tcp
FromPort: 0
ToPort: 65535
SourceSecurityGroupId:
Fn::GetAtt:
- XX_NEW_SECURITY_GROUP_XX
- GroupId
GroupId: sg-XX_EXISTING_GROUP_XX
您可以使用的一个选项是 CloudFormation API 提供的通知功能:调用 UpdateStack
时,您可以提供 NotificationARNs
列表,这是一个 SNS 主题列表获得有关堆栈的每个 CloudFormation 相关更改的通知。您可以将通知 SNS 主题设置为您订阅 AWS Lambda 函数的 SNS 主题。这当然只有在您不创建 SNS 主题作为 CloudFormation 堆栈的一部分时才有效,您不依赖 SNS 消息上的内容,只需要这样的消息作为触发器,如果您过滤 SNS 消息Lambda 函数仅对对您重要的消息做出反应(例如仅在堆栈创建时进行更新,而不是在堆栈删除时进行更新)。
使用 AWS CLI 及其 deploy
命令,指定通知 ARN 如下所示:
aws cloudformation deploy \
--template-file your-template.yaml \
--stack-name your-stack \
--notification-arns arn:aws:sns:us-east-1:1234567890123456:yourtopic