【问题标题】:AWS DynamoDB Missing credentials in config in local dev environmentAWS DynamoDB 在本地开发环境的配置中缺少凭证
【发布时间】:2018-04-30 08:07:30
【问题描述】:

我的同事成功地执行了以下代码,显示了表格,而没有在本地环境中设置凭据,但是当我执行它时,它在我的本地机器上显示了这样的错误。请帮忙。

请在下面找到我的代码:

控制器:

    AWS.config.update({
        region: 'localhost',
        endpoint: new AWS.Endpoint('http://localhost:8008'),
    })
    var params = {
        TableName: 'history',
        KeySchema: [{
            AttributeName: 'b_id',
            KeyType: 'HASH'
        },{
            AttributeName: 'e_id',
            KeyType: 'RANGE'
        }],
        AttributeDefinitions: [{
            AttributeName: 'b_id',
            AttributeType: 'S',
        },{
            AttributeName: 'e_id',
            AttributeType: 'N',
        }],
        ProvisionedThroughput: { // required provisioned throughput for the table
            ReadCapacityUnits: 1, 
            WriteCapacityUnits: 1, 
        },
    }
    response.implicitEnd = false
    AWS.query('history',params, function(err, data){
        if(err) console.log(err)
        else  response.json(data)
    })

错误信息:

{ 错误:连接 EHOSTUNREACH 169.254.169.254:80 - Local () at _exceptionWithHostPort 处的 Object._errnoException (util.js:1022:11) (util.js:1044:20) 在 internalConnect (net.js:971:16) 在 net.js:1065:9 在 _combinedTickCallback (internal/process/next_tick.js:131:7) 在 process._tickDomainCallback (internal/process/next_tick.js:218:9) 消息:'配置中缺少凭据',代码:'CredentialsError', errno:'EHOSTUNREACH',系统调用:'connect',地址:'169.254.169.254', 端口:80,时间:2018-04-30T04:34:53.218Z,原始错误:{消息: “无法从任何提供商加载凭据”,代码: 'CredentialsError',errno:'EHOSTUNREACH',系统调用:'connect', 地址:'169.254.169.254',端口:80,时间:2018-04-30T04:34:53.218Z, originalError:{代码:'EHOSTUNREACH',errno:'EHOSTUNREACH',系统调用: '连接',地址:'169.254.169.254',端口:80,消息:'连接 EHOSTUNREACH 169.254.169.254:80 - 本地 ()' } } }

> which python 
/usr/bin/python

> pip install --upgrade pip
Requirement already up-to-date: pip in /Library/Python/2.7/site-packages (10.0.1)
metplotlib 1.3.1 requires nose, which is not installed.
matplotlib 1.3.1 requires tornado, which is not installed.

> pip --version
pip 10.0.1 from /Library/Python/2.7/site-packages/pip (python 2.7)

> echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

> python --version
Python 2.7.10

【问题讨论】:

  • Error: connect EHOSTUNREACH 169.254.169.254:80 是连接到 EC2 实例元数据服务失败,这是意料之中的,因为您没有在 EC2 中运行此代码。最可能的解释是您的同事确实在其本地环境中配置了凭据。
  • 感谢您的输入@Michael-sqlbot,但是如何配置我的本地环境?是不是像下面萧的回答和cmets所说的那样?我未能执行最后一步,因为我找不到我的 .bash_profile,即使在我 touch 之后它仍然不起作用(抱歉我缺乏 bash 知识)
  • 也可能只是.profile。如果你有 sudo 访问权限,你可以sudo pip install awscli 并且你不必重新定义路径。
  • 是的,我想我安装了它,但它仍然无法工作,错误消息仍然存在:awc: command not found
  • 也没有.profile

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

这对我有用

AWS.config.update({
  region: 'us-east-1',
  accessKeyId: 'xxxx',
  secretAccessKey: 'xxxx',
  endpoint: 'http://localhost:8000'
});

const dynamodb = new AWS.DynamoDB()
const dynamoDbClient = new AWS.DynamoDB.DocumentClient();

accessKeyId 和 secretAccessKey 不需要是真实值。

【讨论】:

  • 感谢您的回复@roxxypoxxy,我想我们在同一条轨道上!
  • ...不能为空字符串,例如:accessKeyId: '' 和/或secretAccessKey: ''
【解决方案2】:

配置后的 AWS 凭证存储在本地配置文件中。对于 Windows,该文件位于

%UserProfile%\.aws\credentials

对于 linux,可以在以下位置找到该文件

~/.aws/credentials

您需要有此文件可用。安装 AWS CLI。然后要配置此文件,请在本地计算机上打开命令行并输入

aws configure

有关 CLI 设置的详细信息是 here。凭据文件的详细信息是here

【讨论】:

  • 感谢您的输入,我正在使用 macOS 并尝试在机器中安装 awscli,但在我通过执行 cli 安装 awsli 后卡住了:pip install awscli --upgrade --userexport PATH=~/.local/bin:$PATH,aws 命令还没找到
  • 打开一个新终端或执行 source ~/.bash_profile
  • 它说没有这样的文件或目录
  • 我在目录中没有看到 bash_profile,只有.bash_history.bash_sessions
【解决方案3】:

虽然 Stu 通知了配置,但只是希望人们遇到与我试图让它在 localhost 上工作时一样的情况。在输入 awscli aws configure 后,当它询问您访问 ID 和秘密访问 ID 时,您必须至少输入一些内容以使其工作(不能将其留空),以便它将在 ~/.aws 目录中创建配置文件,在我的情况下,我只是为两个条目输入了a,然后输入了region:localhostoutput:json,尽管我认为区域真的取决于你。请帮助完善我的答案,至少这对我有用,让我可以继续在本地机器上使用 DynamoDB

【讨论】:

  • 你也可以设置AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量来达到同样的效果。如果您在 Docker 中工作并希望为测试或生产注入值,这很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 2017-12-28
  • 2019-05-05
  • 1970-01-01
  • 2015-05-07
相关资源
最近更新 更多