You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用自定义KMS密钥创建AWS Secrets Manager密钥失败求助

解决AWS Secrets Manager指定自定义KMS密钥却使用默认密钥的问题

我之前也碰到过一模一样的情况,咱们一步步来排查和解决:

1. 先确认KMS密钥ARN的完整性

你提供的KMS密钥ARN arn:aws:kms:****d292 明显不完整,正确的ARN格式应该是:
arn:aws:kms:<区域>:<AWS账户ID>:key/<密钥UUID>
比如:arn:aws:kms:us-east-1:123456789012:key/abcd1234-d292-xxxx-xxxx-xxxxxxxxxxxx
如果ARN缺失了区域、账户ID或者密钥ID部分,Secrets Manager会自动 fallback 到默认KMS密钥,这是最常见的原因。

2. 检查IAM身份的权限

执行aws secretsmanager create-secret命令的IAM实体(用户/角色)需要具备以下权限:

  • Secrets Manager的secretsmanager:CreateSecret权限
  • 自定义KMS密钥的kms:GenerateDataKey和kms:Decrypt权限

你可以先测试能不能正常访问这个KMS密钥:

aws kms describe-key --key-id <完整的KMS密钥ARN> --region us-east-1

如果返回密钥信息,说明权限没问题;如果报错,就需要给IAM实体添加对应的KMS密钥权限(可以通过KMS密钥的资源策略或者IAM策略配置)。

3. 确认KMS密钥的状态和区域

  • 确保自定义KMS密钥是启用状态(在KMS控制台查看,禁用的密钥无法被使用)
  • KMS密钥必须和你创建的Secrets Manager密钥在同一个区域(你指定了us-east-1,所以KMS密钥也得在us-east-1),跨区域的话Secrets Manager会自动用默认密钥。

4. 核对命令参数的正确性

检查有没有拼写错误,比如参数名是不是--kms-key-id(不要写成--kms-key-arn之类的),然后用完整的ARN重新执行命令:

aws secretsmanager create-secret --name test-5 --secret-string file://mycreds.json --region us-east-1 --kms-key-id arn:aws:kms:us-east-1:123456789012:key/abcd1234-d292-xxxx-xxxx-xxxxxxxxxxxx

5. 验证最终创建的密钥

创建完成后,用以下命令查看密钥使用的KMS密钥:

aws secretsmanager describe-secret --secret-id test-5 --region us-east-1 --query 'KmsKeyId'

如果返回的是你指定的自定义KMS密钥ARN,就说明问题解决了;如果还是默认密钥,再回头检查前面的步骤。

另外,你提到执行aws secretsmanager list-sec...命令没完成,如果你想批量查看密钥的KMS信息,可以用这个完整命令:

aws secretsmanager list-secrets --region us-east-1 --query 'SecretList[*].[Name,KmsKeyId]'

内容的提问来源于stack exchange,提问作者Santanu Sahoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:51:49