在Javascript中需要AWS时遇到问题

在Javascript中需要AWS时遇到问题,javascript,database,amazon-web-services,amazon-dynamodb,aws-sdk,Javascript,Database,Amazon Web Services,Amazon Dynamodb,Aws Sdk,我试图在Javascript文件中实现DynamoDB。我连续尝试了多个教程,但都没有效果。我所要做的就是从Javascript代码(在HTML页面中运行)中进行查询。不幸的是,我的代码甚至达不到这一点。当我试图要求AWS-SDK时,它会抛出错误。我用Node.js安装了aws sdk。在被多个教程弄糊涂之后,我最终得到了以下代码: HTML: 文件“super_secret_conf.json”是一个包含我的AWS凭据的json文件。我以前曾尝试将凭据存储在~/.aws/credentials

我试图在Javascript文件中实现DynamoDB。我连续尝试了多个教程,但都没有效果。我所要做的就是从Javascript代码(在HTML页面中运行)中进行查询。不幸的是,我的代码甚至达不到这一点。当我试图要求AWS-SDK时,它会抛出错误。我用Node.js安装了aws sdk。在被多个教程弄糊涂之后,我最终得到了以下代码:

HTML:

文件“super_secret_conf.json”是一个包含我的AWS凭据的json文件。我以前曾尝试将凭据存储在
~/.aws/credentials
中,但不起作用。(应该是文件夹还是文件?
credentials
吗?我曾尝试将我的凭据保存在一个空白文件中,没有任何扩展名。我只是想提一下。)因此我遵循了另一个教程,该教程说使用JSON方法(我知道它非常不安全),这就是您在这里看到的。但我仍然收到一个错误:

错误:尚未为上下文加载模块名“super\u secure\u conf.json:”。使用require([])


非常感谢所有帮助。

您需要AWS两次,第一次称之为
foo
。而且,您不需要等待config.json require调用的回调(甚至不需要传递回调函数)。我相信您的代码需要更改为这样:

require(['aws-sdk', "./super_secure_conf.json"], function (AWS, CONF) {    
    function init(){
        AWS.config = new AWS.Config({
            access_key_id: CONF.AWS_ACCESS_KEY_ID,
            secretAccessKey: CONF.AWS_SECRET_ACCESS_KEY,
            region: "us-east-1"
        });
        DynamoDB = new AWS.DynamoDB();    
    }
});    
但是,我不确定路径
“/super\u secure\u conf.json”
是否真的能工作。这看起来像是在服务器端NodeJS应用程序(而不是浏览器端JavaScript应用程序)中加载文件时使用的路径


请注意,必须以这种方式加载配置的原因是加载aws配置的
~/.aws/credentials
方法对于在浏览器中运行的JavaScript应用程序不起作用。我认为您已经阅读了NodeJS教程,这些教程在浏览器中无法完美地转换为JavaScript。我强烈建议您先浏览文档,尤其是阅读上的页面。

我非常感谢您。您的回答解决了一半的问题,但仍然需要我配置
IdentityPoolId
。除此之外,非常感谢你的帮助@Mark B,也许我应该发布一个新问题。当a准备发布一个合适的新问题时,我在这里问你:我使用Dynamodb Lamda(用于DAO)-API Gateway-S3作为网站实现了一个AWS无服务器架构流程示例。我想保护API。我阅读了相关文档。我想实现IAM身份验证。目前我正在使用Javascript SDK。我试图使用~/.aws/credentials文件,但无法使用,您上面的回答告诉我,我无法使用此方法。请告诉我如何外部化IAM用户凭据,以及Javascript SDK如何识别我的AWS帐户。
require(['aws-sdk'], function (foo) {

    var CONF = require("./super_secure_conf.json");
    var AWS = require("aws-sdk");

    function init(){
        AWS.config = new AWS.Config({
            access_key_id: CONF.AWS_ACCESS_KEY_ID,
            secretAccessKey: CONF.AWS_SECRET_ACCESS_KEY,
            region: "us-east-1"
        });
        DynamoDB = new AWS.DynamoDB();

    }
});    
require(['aws-sdk', "./super_secure_conf.json"], function (AWS, CONF) {    
    function init(){
        AWS.config = new AWS.Config({
            access_key_id: CONF.AWS_ACCESS_KEY_ID,
            secretAccessKey: CONF.AWS_SECRET_ACCESS_KEY,
            region: "us-east-1"
        });
        DynamoDB = new AWS.DynamoDB();    
    }
});