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

本地Go应用获取AWS Secrets Manager密钥的权限配置问题

问题解决指南

报错核心原因

本地运行Go应用时,AWS SDK默认尝试从EC2实例元数据服务(IMDS)获取身份凭证,但本地环境并非EC2实例,因此无法找到可用角色,最终导致请求签名失败、调用Secrets Manager接口超时重试耗尽。

本地凭证配置方案

要让本地应用正常获取AWS服务权限,需为本地环境提供有效的AWS凭证,推荐两种方式:

  • 方式1:使用AWS CLI配置本地凭证
    执行aws configure命令,按提示填入你的IAM用户Access Key ID、Secret Access Key、默认区域,SDK会自动读取~/.aws/credentials和~/.aws/config中的配置。
  • 方式2:设置环境变量
    在运行应用前,设置以下环境变量:
    export AWS_ACCESS_KEY_ID="你的Access Key ID"
    export AWS_SECRET_ACCESS_KEY="你的Secret Access Key"
    export AWS_REGION="你的资源所在区域,比如us-east-1"
    

权限配置说明

配置位置选择

  • 推荐:在IAM控制台配置
    给用于本地开发的IAM用户(或角色)附加权限策略,这是AWS IAM的最佳实践,权限管理更集中、易于维护。
  • 可选:在Secrets Manager控制台配置
    直接修改Secrets Manager的资源策略,允许指定IAM实体访问该密钥,但仅适用于单密钥的细粒度控制场景。

正确的策略内容

1. IAM权限策略(附加到IAM用户/角色)

无需指定Principal,因为IAM策略是直接附加到用户/角色的:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:你的区域:你的AWS账号ID:secret:你的密钥名称-*"
        }
    ]
}

注意:资源ARN中的后缀-*是因为Secrets Manager会自动给密钥添加随机后缀,用通配符可以匹配完整ARN。

2. Secrets Manager资源策略(直接配置在密钥上)

需要指定允许访问的IAM实体ARN作为Principal:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Principal": {"AWS": "arn:aws:iam::你的AWS账号ID:user/你的IAM用户名"},
            "Resource": "*"
        }
    ]
}

或者指定具体密钥ARN作为Resource,替换*为你的密钥完整ARN。

验证步骤

  1. 确认本地凭证对应的IAM用户/角色已附加上述权限策略
  2. 重新运行Go应用,检查是否能成功获取密钥内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:27:17