使用dynamoose.js时如何避免在外部将AWS Config设置为环境变量

时间:2018-11-20 06:07:59

标签: node.js environment-variables amazon-dynamodb dynamoose

除非通过env变量在外部进行设置,否则我的AWS配置无法正常工作

仅当我在外部设置凭据时,数据库连接才有效

export AWS_ACCESS_KEY_ID=abcde
export AWS_SECRET_ACCESS_KEY=abcde
export AWS_REGION=ap-south-1
export AWS_DYNAMODB_ENDPOINT="http://localhost:8000"

如果我没有在外部进行设置,那是行不通的。例如,如果我在下面的代码中设置它,则它将不起作用。

dynamoose.AWS.config.update({
  accessKeyId:'abcde',
  secretAccessKey:'abcde',
  region:'ap-south-1',
  endpoint:'http://localhost:8000'
});

我不想在任何外部变量中设置config。有没有办法在nodejs代码中对此进行管理?

这些是我尝试过/考虑过的替代品

  1. 在代码中设置env变量,这也不起作用

    process.env.AWS_REGION ='ap-south-1';

  2. 我阅读了有关do​​tenv软件包的信息。但是建议只将其用于开发人员,而不用于生产(我不确定是否可以使用)

请帮助我解决此问题。我该如何仅在代码中管理配置?

2 个答案:

答案 0 :(得分:1)

问题可能出在运行dynamoose.AWS.config.update方法之前,您正在创建或需要Dynamoose模型。

请确保dynamoose.AWS.config.update是您调用的第一个方法,并且您之前没有创建或初始化任何与Dynamoose相关的事情。

例如。

const dynamoose = require('dynamoose');
dynamoose.AWS.config.update({
  accessKeyId:'abcde',
  secretAccessKey:'abcde',
  region:'ap-south-1',
  endpoint:'http://localhost:8000'
});
const Model = require('./models/MyModel'); // should happen after `dynamoose.AWS.config.update`

我要尝试的另一个技巧是启用调试日志记录并浏览日志以查看发生了什么。您可以通过运行export DEBUG=dynamoose*,然后重新运行脚本来启用Dynamoose日志记录。

答案 1 :(得分:0)

如果您使用的是较新版本,则语法已更改,可以在此处找到。

https://dynamoosejs.com/guide/Dynamoose/#dynamooseawssdk

const sdk = dynamoose.aws.sdk; // require("aws-sdk");
sdk.config.update({
    "accessKeyId": "AKID",
    "secretAccessKey": "SECRET",
    "region": "us-east-1"
});