1

我正在尝试对 AWS Lambda 函数(帐户 A)和在另一个帐户(帐户 B)中运行的 ec2 实例执行 GetFunction/InvokeFunction 操作。

在账户 A 中添加 Lambda 权限以允许访问账户 B 时,我能够执行 GetFunction 和 InvokeFunction 这两个操作。

但是 GetFunction 正在为 Lambda 函数的环境变量返回KMSAccessDeniedException。我没有加密 lambda 函数的环境变量。从帐户中的 EC2 执行相同的操作,我得到了环境变量的正确值。我需要为 KMS 添加额外的权限吗?

4

1 回答 1

1

AWS 默认加密 AWS Lambda 函数的环境变量以保证数据安全。如果我们在 lambda 创建时不提供加密密钥,AWS 将使用默认加密密钥“aws/lambda”,其访问策略无法修改。

因此,当我尝试使用环境变量调用 lambda 函数时,我得到了这个异常。由于其他帐户无权访问此密钥。

解决方案:创建一个新密钥,在创建 AWS lambda 函数期间将其传递给用于加密静态环境变量数据。将密钥策略附加到此新密钥以允许从第三个帐户访问

于 2017-03-15T04:46:40.440 回答