我正在编写aws lambda函数,它使用VS2015从dynamodb表中读取数据。 我在AWS SDK附带的AWS中的AWS explorer中创建了几个表。 奇怪的是,我没有在节点js代码中看到这些表。 当我使用节点js创建表时会发生同样的事情:AWS explorer不会显示它们,但是ARN类似:arn:aws:dynamodb:ddblocal:000000000:table / TABLENAME 和表状态是ACTIVE。 这是我的配置:
AWS.config.update({
accessKeyId: "someId",
secretAccessKey: "someKey",
endpoint: "http://localhost:10000"
});
任何解决方案?
答案 0 :(得分:0)
我假设您没有运行dynamodb local(http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html)
Dynamodb作为服务支持区域,理想情况下应指定。
但是如果你想继续使用端点,请从这里可用的值中选择一个:
http://docs.aws.amazon.com/general/latest/gr/rande.html#ddb_region
答案 1 :(得分:0)
你的桌子ARN:
ARN:AWS:dynamodb:ddblocal:000000000:表/ TABLENAME
和nodejs配置:
AWS.config.update({
accessKeyId: "someId",
secretAccessKey: "someKey",
endpoint: "http://localhost:10000"
});
似乎表明您的nodejs代码使用的是本地部署的DynamoDB服务器,而不是AWS托管的服务器。
最有可能的是,您的AWS Explorer正在查看特定区域的DynamoDB,并且它没有查看您的本地服务器。
在AWS资源管理器中确保您的区域设置为" Local(localhost)"。
请注意,在将Lambda代码上传到AWS之前,您需要修改配置以使用真实区域。
答案 2 :(得分:0)
好的,我设法让它从Node和AWS Explorer引用相同的数据库。 密钥ID和访问密钥是make profile,在使用AWS Explorer和Node时应该是相同的。 在本地运行DB时,将使用db name的下一格式:KEYID_REGION.db 这就是为什么提供有效设置是必要的。 在Node JS中,当没有提供区域设置时,使用默认区域,即' us-west-1'。如果提供了region,并且从代码访问了db,则将使用提供的区域名称创建另一个db。 但是,有一件事:默认情况下,AWS Explorer中的本地区域似乎仅支持' us-east-1' region,所以如果你在另一个本地区域创建表,你就不会在资源管理器中看到这些表。