【问题标题】:allowing cloudformation in one region to access a lambda backed custom resource in a different region允许一个区域中的 cloudformation 访问不同区域中的 lambda 支持的自定义资源
【发布时间】:2020-01-03 14:46:10
【问题描述】:

我在 us-east-2 中有一个支持 lambda 的自定义资源。当我在 us-east-2 中运行 cloudformation 模板时,它工作得很好。当我去 us-east-1 并尝试相同的 cloudformation 模板时,我得到一个错误:

Function not found: arn:aws:lambda:us-east-1:account-id:function:func_name (Service: AWSLambda; Status Code: 404; Error Code: ResourceNotFoundException;

两个 VPC 之间存在 VPC 对等,但这似乎没有任何区别。而当我尝试在不同区域的同一个账户中部署相同的功能时,我得到一个错误,我需要找到一个解决方案。

【问题讨论】:

    标签: aws-lambda aws-cloudformation-custom-resource


    【解决方案1】:

    我认为一个区域中的 CloudFormation 模板不可能引用另一个区域中的 Lambda 自定义资源。

    您需要在希望将其用作自定义资源的任何区域复制该函数。

    【讨论】:

    • 这就是我所害怕的。所以我想我可以将区域附加到函数名称(如 function-us-east-1),然后我至少可以使用 !Join 来构建 Arn。该死的。
    • 在这里采用 SNS 方法会有什么好处吗?
    • 使用 Amazon SNS 主题允许您管理将接收消息的订阅者。它还简化了消息发送过程,因为 AWS Lambda 函数可以简单地将消息发送到 SNS 主题,而不必将电子邮件连同收件人列表一起发送到 Amazon SES。
    【解决方案2】:

    我认为您不能这样做,但唯一的方法是在多个区域复制完全相同的资源(通过 cfn)。我认为最好的选择是使用云形成以通用方式配置所有资源,以便您可以在需要时将其简单地部署到多个区域。

    我所说的泛型是指,不要对任何与 aws 环境相关的详细信息或系统级变量进行硬编码,而是在您尝试创建堆栈时通过 cli 命令将这些变量的值传递到模板中。

    【讨论】:

      【解决方案3】:

      现在看来可以使用新的 AWS 堆栈集了。

      堆栈集允许您通过以下方式在跨区域的 AWS 账户中创建堆栈 使用单个 AWS CloudFormation 模板。包括所有资源 在每个堆栈中由堆栈集的 AWS CloudFormation 定义 模板

      参考: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html

      【讨论】:

        猜你喜欢
        • 2021-06-09
        • 2018-02-20
        • 1970-01-01
        • 2019-05-23
        • 2013-05-08
        • 2019-07-23
        • 2016-06-09
        • 2015-12-08
        • 1970-01-01
        相关资源
        最近更新 更多