【发布时间】:2020-05-06 20:43:26
【问题描述】:
我无法解决,文档也不是很有帮助。
我有一个需要使用 KMS 解密值的 lambda。我正在使用 sam 来部署我的 lambda。最初我尝试添加策略声明
- Effect: Allow
Action:
- kms:Decrypt
Resource:
- 'arn:aws:kms:us-west-2:<account>:key/<key>'
但这不起作用,因为(据我了解)我需要告诉 KMS 该资源允许执行此操作。我试图通过创建一个 IAM 角色来解决此问题,我可以将其附加到一个 lambda 资源,该资源是 AWSLambdaBasicExecutionRole,并带有我的密钥策略。
创建我的新角色后,尝试添加关键用户时它不会显示在 KMS 中,尽管其他角色会显示。我在以 IAM 用户身份登录控制台时创建了该角色,但我的角色有一个包含根账户 ID 的 arn。
如果 sam/cloudformation 将我的资源 arn 添加到 KMS 密钥策略中,aws sam 对 KMS 没有任何了解,我宁愿通过 iam 中的角色来完成。
编辑:运行时我得到的错误是
{"errorType":"AccessDeniedException","errorMessage":"The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.","code":"AccessDeniedException","message":"The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access."
我作为key 使用的值在KMS 控制台中被称为key-id。
【问题讨论】:
-
政策声明看起来很好,你怎么知道它不起作用?有任何错误信息吗?你也可以分享在你的 Lambda 中运行的代码吗?
-
也是
<key>中的key/<key>密钥别名或密钥ID? -
谢谢我用错误信息和密钥来自哪里更新了我的问题
-
你能发布整个 SAM YAML 文件吗?
-
+ 在您的 Lambda 中运行的代码
标签: aws-lambda aws-kms