1

除非我通过 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'
});

我不想在任何外部变量中设置配置。有没有办法在nodejs代码中管理这个?

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

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

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

  2. 我读到了 dotenv 包。但建议它只用于开发而不是生产(我不确定这是否可行)

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

4

2 回答 2

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`

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

于 2018-11-20T21:10:55.517 回答
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"
});
于 2020-08-03T20:58:39.680 回答