Amazon web services 对aws lambda GetFunction的跨帐户调用为环境变量提供KMSACCESS拒绝错误

Amazon web services 对aws lambda GetFunction的跨帐户调用为环境变量提供KMSACCESS拒绝错误,amazon-web-services,amazon-ec2,aws-lambda,amazon-kms,Amazon Web Services,Amazon Ec2,Aws Lambda,Amazon Kms,我正在尝试对AWS Lambda函数(帐户A)和运行在另一个帐户(帐户B)中的ec2实例执行GetFunction/InvokeFunction操作 在帐户A中添加Lambda权限以允许访问帐户B时,我能够执行GetFunction和InvokeFunction两个操作 但是GetFunction正在为Lambda函数的环境变量返回KMSAccessDeniedException。我没有为lambda函数加密环境变量。 从帐户内的EC2执行相同的操作,我将获得环境变量的正确值。 是否需要为KMS

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

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

但是GetFunction正在为Lambda函数的环境变量返回KMSAccessDeniedException。我没有为lambda函数加密环境变量。 从帐户内的EC2执行相同的操作,我将获得环境变量的正确值。
是否需要为KMS添加其他权限?

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

所以当我试图用环境变量调用lambda函数时,我得到了这个异常。因为其他帐户没有访问此密钥的权限

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