AWS DynamoDB在本地开发环境中的配置中丢失凭据

时间:2018-04-30 08:07:30

标签: amazon-web-services amazon-dynamodb

我的同事成功执行以下代码显示该表而未在本地环境中设置凭据,但是当我执行它时,它在我的本地计算机上显示此类错误。请帮忙。

请在下面找到我的代码:

控制器:

    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)at netConnect(net.js:971:16)net.js:1065:9   在_combinedTickCallback(内部/进程/ next_tick.js:131:7)at   process._tickDomainCallback(internal / process / next_tick.js:218:9)   消息:'缺少配置中的凭据,代码:' CredentialsError',   错误:' EHOSTUNREACH',系统调用:'连接',地址:' 169.254.169.254',   端口:80,时间:2018-04-30T04:34:53.218Z,originalError:{message:   '无法从任何提供商加载凭据',代码:   ' CredentialsError',错误:' EHOSTUNREACH',系统调用:' connect',   地址:' 169.254.169.254',port:80,time:2018-04-30T04:34:53.218Z,   originalError:{code:' EHOSTUNREACH',errno:' EHOSTUNREACH',syscall:   ' connect',地址:' 169.254.169.254',port:80,message:' connect   EHOSTUNREACH 169.254.169.254:80 - Local()' }}

> 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

3 个答案:

答案 0 :(得分:4)

这就是对我有用的

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不必是真实值。

答案 1 :(得分:3)

配置完成后,AWS凭据将存储在本地配置文件中。对于Windows,可以在

找到该文件
%UserProfile%\.aws\credentials

对于linux,可以在

找到该文件
~/.aws/credentials

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

aws configure

CLI设置的详细信息为here。凭证文件的详细信息为here

答案 2 :(得分:1)

虽然Stu告知了配置,但希望人们遇到与我试图将其用于localhost时所遇到的相同的问题。输入awscli aws configure之后,因为它要求您提供访问ID和秘密访问ID,您必须至少输入一些内容才能使其正常工作(不能将其留空),以便它在{{{ 1}}目录,在我的情况下,我只是输入~/.aws两个条目,然后aregion:localhost虽然我认为区域真的由你决定。请帮助改进我的答案,至少这对我有用,允许我继续在本地机器上使用DynamoDB