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

使用AWS .NET Core SDK写入DynamoDB时遇安全令牌无效异常求助

排查AWS .NET Core SDK连接DynamoDB的安全令牌无效问题

我来帮你梳理下这个问题的排查方向,结合你已经完成的步骤,咱们一步步核对可能的问题点:

1. 先确认credentials文件的格式与路径是否正确

  • 路径要准确:Windows系统下必须是C:\Users\<你的用户名>\.aws\credentials,记得把路径里的占位符<你的用户名>替换成你实际的系统用户名,别留着占位符
  • 格式要严格遵循ini规范,每个配置项单独占一行,不要挤在同一行:
    [default]
    aws_access_key_id = 你的实际访问密钥ID
    aws_secret_access_key = 你的实际私有访问密钥
    
    注意不要有多余的空格、换行或者特殊符号,复制密钥时别漏了字符

2. 检查IAM访问密钥的有效性

  • 登录AWS控制台进入IAM服务,找到你创建的那组访问密钥,确认它的状态是Active(没被禁用)
  • 重新复制一次密钥粘贴到credentials文件里:尤其是aws_secret_access_key字符很长,很容易在复制时漏掉末尾部分,多核对两遍

3. 验证SDK是否正确读取了凭证

可以在代码里加一段调试代码,看看SDK是不是真的读到了credentials文件里的内容:

var credentials = new Amazon.Runtime.StoredProfileAWSCredentials("default");
var loadedAccessKey = credentials.GetCredentials().AccessKey;
Console.WriteLine("当前加载的AccessKey: " + loadedAccessKey);

运行后看输出的AccessKey和你在IAM里创建的是否一致,如果不一致,说明SDK没正确读取到本地的凭证文件

4. 排查是否有其他优先级更高的凭证来源

AWS SDK会按优先级加载凭证,如果你本地设置了环境变量(AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY),或者代码里硬编码了其他凭证,SDK会优先用这些,而不是credentials文件的内容:

  • 检查系统环境变量,删除冲突的AWS凭证变量
  • 检查代码里有没有直接指定凭证的代码,比如:
    var client = new AmazonDynamoDBClient("错误密钥", "错误私有密钥");
    
    如果有这类硬编码,先注释掉,让SDK自动读取credentials的默认配置

5. 确认区域配置是否匹配

有时候凭证本身没问题,但DynamoDB实例所在区域和SDK配置的区域不匹配,也会抛出类似错误:

  • 要么在代码里指定正确的区域:
    var client = new AmazonDynamoDBClient(RegionEndpoint.USWest2); // 替换成你的DynamoDB实际区域
    
    要么在C:\Users\<你的用户名>\.aws\config文件里添加区域配置:
    [default]
    region = us-west-2
    

如果以上步骤都排查完还是不行,可以尝试重新创建一组新的IAM访问密钥,替换掉当前credentials文件的内容再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:07:14