【发布时间】:2018-12-30 10:37:57
【问题描述】:
这是我的代码:
const AWS = require('aws-sdk');
const { Client } = require('pg');
function main() {
AWS.config.update({region:'eu-west-2'});
let db_user = {
Name: "postgres_db_user",
WithDecryption: false
};
let db_host = {
Name: "postgres_db_host",
WithDecryption: false
};
let db_database = {
Name: "postgres_db_name",
WithDecryption: false
};
let db_password = {
Name: "postgres_db_password",
WithDecryption: true
};
let db_port = {
Name: "postgres_db_port",
WithDecryption: false
};
let database_user_name;
let database_host;
let database_name;
let database_port;
let database_password;
let ssm = new AWS.SSM();
ssm.getParameter(db_user, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
database_user_name = data;
}
});
ssm.getParameter(db_host, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
database_host = data;
}
});
ssm.getParameter(db_database, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
database_name = data;
}
});
ssm.getParameter(db_password, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
database_password = data;
}
});
ssm.getParameter(db_port, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
database_port = data;
}
});
console.log(database_user_name);
console.log(database_host);
console.log(database_name);
console.log(database_password);
console.log(database_port);
let client = new Client({
user: database_user_name,
host: database_host,
database: database_name,
password: database_password,
port: database_port,
});
}
main();
问题是当我打印变量时它们是未定义的,我不知道为什么。 SSM getParameter 函数正在工作,因为如果我使用调试器,我会看到值,但由于某种奇怪的原因,它似乎没有将数据变量保存在变量中。
如果有人可以帮助我了解为什么此代码会为变量打印 undefined,我将不胜感激。
【问题讨论】:
-
您是否使用 CLI 取回值? docs.aws.amazon.com/systems-manager/latest/userguide/…
-
@WaynePhipps 抱歉延迟回复。是的,从 CLI 获取参数非常有效。
-
这可能是由于 Node.js 的回调特性。在异步
ssm.getParameter()调用完成之前,您正在使用console.log()。我不熟悉 Node,但显然你应该使用 waterfall 方法来按顺序运行调用,而不是纯粹的 async。 -
@JohnRotenstein 感谢您的评论。你说的对。这是我的第一个 Node.js 应用程序,所以我没有意识到它是异步代码(我应该更仔细地阅读文档)。
标签: javascript node.js amazon-web-services aws-sdk