繁体   English   中英

如何避免在使用 dynamoose.js 时在外部将 aws config 设置为 env 变量

[英]How to avoid setting aws config as env variable externally while using dynamoose.js

除非我通过 env 变量在外部设置,否则我的 aws 配置不起作用

只有当我在外部设置凭据时,db 连接才有效,

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. 在代码中设置 env 变量,这也不起作用

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

  2. 我阅读了有关 dotenv 包的信息。 但建议它应该只用于开发而不是生产(我不确定这是否有效)

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

问题可能是您在运行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*来启用 D​​ynamoose 日志记录,然后重新运行脚本。

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

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"
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM