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

连接本地DynamoDB时遭遇“Unable to get IAM security credentials from EC2 Instance Metadata Service”错误求助

连接本地DynamoDB时遭遇“Unable to get IAM security credentials from EC2 Instance Metadata Service”错误求助

嘿,我来帮你搞定这个问题!你遇到的这个错误,核心原因是本地DynamoDB根本不需要真实的IAM凭证,但你的代码默认还在尝试从EC2元数据服务获取凭证——这在本地环境里肯定行不通呀。下面给你几个简单的解决办法,选顺手的试就行:

  • 方法一:直接在代码里填假凭证
    本地DynamoDB不会校验凭证的真实性,你随便填两个非空字符串就能绕过校验。修改你的代码如下:

    AmazonDynamoDBConfig clientConfig = new AmazonDynamoDBConfig();
    clientConfig.ServiceURL = "http://localhost:8000";
    // 添加这两行,值随便填就行
    var dummyCredentials = new BasicAWSCredentials("myLocalKey", "myLocalSecret");
    var client = new AmazonDynamoDBClient(dummyCredentials, clientConfig);
    var table = Table.LoadTable(client, "Table1");
    
  • 方法二:通过环境变量配置
    不用改代码,直接在本地设置两个环境变量:

    • AWS_ACCESS_KEY_ID:比如填localTestKey
    • AWS_SECRET_ACCESS_KEY:比如填localTestSecret
      设置好后,AWS SDK会自动读取这些变量,就不会再去请求EC2元数据服务了。
  • 方法三:用本地AWS配置文件
    如果你有本地的AWS配置文件(Windows下在C:\Users\<你的用户名>\.aws\credentials,Mac/Linux在~/.aws/credentials),可以添加一个本地配置项:

    [local-dynamodb]
    aws_access_key_id = dummyKey
    aws_secret_access_key = dummySecret
    

    然后代码里指定使用这个配置文件的profile:

    AmazonDynamoDBConfig clientConfig = new AmazonDynamoDBConfig();
    clientConfig.ServiceURL = "http://localhost:8000";
    var client = new AmazonDynamoDBClient(new StoredProfileAWSCredentials("local-dynamodb"), clientConfig);
    var table = Table.LoadTable(client, "Table1");
    

其实本地DynamoDB是完全模拟的测试环境,不需要关联真实的AWS账户,上面这些方法都是让SDK跳过真实凭证的校验流程,直接连接你的本地实例。试完应该就能解决这个错误啦~

备注:内容来源于stack exchange,提问作者user30218721

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:18:10