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

1 分钟阅读
0

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

简短描述

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

**注意:**如果将 Lambda 函数与自定义资源关联,则每当创建、更新或删除函数时,自定义资源都会调用该函数。CloudFormation 会调用一个 Lambda API 来将所有请求数据(如请求类型和资源属性)传递给该函数。

解决方法

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,请确保使用的是最新版本的 AWS CLI

在主账户(账户 A)中运行 AWS CLI add-permission 命令。该命令授予 Lambda 函数对另一个账户(账户 B)中的自定义资源的访问权限。

-或-

使用 AWS::Lambda::Permission 资源授予账户 B 调用账户 A 中的 Lambda 函数的权限:

  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 官方已更新 4 年前