【问题标题】:Send SNS message via Cloudformation/lambda for updating security group通过 Cloudformation/lambda 发送 SNS 消息以更新安全组
【发布时间】:2019-08-03 10:09:29
【问题描述】:

我正在尝试“填充”连接到我的 ALB 的 SG,以允许来自 Cloudfront 的流量进入。

此 ALB/CF 分配是通过 Cloudformation 创建的。我目前有一个 Lambda 函数来处理来自 AmazonIpSpaceChanged 的​​ SNS 消息。但是,当我创建此 CF 堆栈时,需要触发 SNS 消息以最初填充 SG。

有没有办法创建一个 SNS 消息来触发这个 Lambda 函数?我查看了 SNS 支持的自定义资源,但这似乎不起作用。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudformation amazon-sns


    【解决方案1】:

    我个人也遇到过这个问题。我无法让我的 SNS 主题触发 lambda 函数。但是,我可以使用自定义资源来做到这一点。

    只要 lambda 函数与 CloudFormation 模板中的自定义资源相关联,就会在创建该自定义资源期间调用它。您将不得不依赖其中包含代码的 cloudformation 资源,因为如果它在 lambda 函数创建之前触发,它将无法工作。

    This is a link to the custom resource documentation

    【讨论】:

    • 我目前正在这样做。我正在使用 lambda 支持的函数创建自定义资源,该函数使用 python 获取 ip-ranges.json 文件,然后使用检索到的列表更新 SG。但是,我更愿意以不同的方式执行此操作,因为该 lambda 函数几乎是另一个 lambda 函数的副本,后者侦听来自 AWS 的 AmazonIpSpaceChanged 的​​ SNS 消息。
    • 好吧,你所有的可能性都已经在这里列出了,你可以从中挑选毒药,每个人都有自己的缺点编辑:至少我知道的所有可能性
    • 这正是我所担心的。这很奇怪,因为有一个 SNS 支持的自定义资源,我希望它可以实现这一点,但对于我的生活,我找不到关于它的好的文档或示例。
    【解决方案2】:

    为什么不直接从 CloudFormation 使用 AWS::EC2::SecurityGroupIngress 将规则添加到安全组?

      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
    

    【讨论】:

    • 在我向 AWS 发送 GET 请求以下载 ip-ranges.json 文件之前,我不知道 IP 范围。
    【解决方案3】:

    您可以使用的一个选项是 CloudFormation API 提供的通知功能:调用UpdateStack 时,您可以提供NotificationARNs 的列表,这是一个 SNS 主题列表,会收到有关您的每个 CloudFormation 相关更改的通知堆。您可以将通知 SNS 主题设置为您订阅 AWS Lambda 函数的 SNS 主题。这当然只有在您不将 SNS 主题创建为 CloudFormation 堆栈的一部分时才有效,您不依赖 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
    

    【讨论】:

    • 我想过这条路线,但它本质上是从头开始构建环境过程中的“手动”步骤。
    猜你喜欢
    • 2015-10-12
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2016-03-05
    • 2016-03-16
    • 2021-01-22
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多