Aws lambda 允许一个区域中的cloudformation访问另一个区域中的lambda支持的自定义资源

Aws lambda 允许一个区域中的cloudformation访问另一个区域中的lambda支持的自定义资源,aws-lambda,aws-cloudformation-custom-resource,Aws Lambda,Aws Cloudformation Custom Resource,我在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: ResourceN

我在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;

两个专有网络之间存在专有网络对等,但这似乎没有任何区别。当我试图在不同地区的同一帐户中部署相同的功能时,我会遇到一个错误,我需要找到一个解决方案

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


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

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


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

看起来现在可以使用新的aws堆栈集

堆栈集允许您在AWS帐户中创建跨区域的堆栈 使用单个AWS CloudFormation模板。包括所有资源 在每个堆栈中,由堆栈集的AWS CloudFormation定义 模板

参考:

这就是我所害怕的。所以我想我可以把区域加在函数名上,比如function-us-east-1,然后我至少可以使用一个!加入以构建Arn。该死。在这里采用SNS方法会有什么好处吗?使用亚马逊SNS主题可以让你管理将接收消息的订阅者。它还简化了消息发送过程,因为AWS Lambda功能可以简单地向SNS主题发送消息,而不必向Amazon SES发送电子邮件以及收件人列表。