如何将在一个 AWS 账户中创建的 Lambda 函数与另一个 AWS 账户中的 AWS CloudFormation 自定义资源一起使用?

1 分钟阅读
0

我想在一个账户中创建一个 AWS Lambda 函数,然后从另一个账户中的 AWS CloudFormation 自定义资源调用该函数。

简短描述

只有当 Lambda 函数和自定义资源位于同一 AWS 区域中时,您才能从不同账户中的自定义资源调用该 Lambda 函数。AWS::CloudFormation::CustomResourceServiceToken 属性必须位于您创建 AWS CloudFormation 堆栈的同一区域。您必须使用基于资源的策略向具有自定义资源的账户授予调用该 Lambda 函数的权限。

注意:如果您将一个 Lambda 函数与某个自定义资源关联,每次创建、更新或删除该自定义资源都会调用该函数。AWS CloudFormation 调用一个 Lambda API 来调用该函数并将所有请求数据传递给该函数。例如,请求数据包含请求类型和资源属性。

解决方法

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您运行的是最新版本的 AWS CLI

要向您的 Lambda 函数授予访问其他账户(账户 B)中自定义资源的权限,请在主账户(账户 A)中运行 AWS CLI 命令 add-permission

–或者–

1.    当通过账户 A 中的堆栈创建 Lambda 函数时,请使用 AWS::Lambda::Permission 资源向 账户 B 授予权限。

2.    在 账户 B 中,启动包含您的自定义资源的 AWS CloudFormation 堆栈。

注意:请确保 ServiceToken 引用了 账户 A 中 Lambda 函数的 Amazon 资源名称 (ARN)。包含要作为输入发送到自定义资源的任何其他属性。

3.    使用 Amazon CloudWatch Logs 确认账户 B 中的自定义资源调用了账户 A 中的 Lambda 函数。


相关信息

属性

向其他账户授予函数访问权

AWS 官方
AWS 官方已更新 3 年前