导入时express中dynamodb和ses的配置冲突
Conflict of configuration of dynamodb and ses in express while importing
我正在尝试做什么: 运行 app.post 中的 ses 代码 route.So 我已经为 ses 准备了一个配置文件分开然后在 app.js.The 中导入相同的 [dynamo 数据库配置也遵循程序,这引发了引发 404 错误的冲突。
我认为这个问题与全局 aws config 有关。根据这个 https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/global-config-object.html
但是我想不通。
当我尝试 运行 作为 node sendEmail.js
时,我的 ses 代码运行得非常好。该错误是由于 dynamo db 的类似配置导入。我正在 运行 为 post 路线设置我的 ses 代码,也尝试插入那里但不知何故它正在读取端点的 dynamo 数据库配置。
sendEmail.js(注释部分仅用于测试,我在app.js中传递参数)
let sendEmail = (params) => {
let params1=params
var AWS2 = require("aws-sdk");
require('dotenv').config()
let awsConfig2 = {
"region": process.env.DBREGION,
// "endpoint": process.env.DBENDPOINT,
"accessKeyId": process.env.DBACCESSKEYID, "secretAccessKey": process.env.DBSECRETACCESSKEY
};
AWS2.config.update(awsConfig2);
console.log('added email config')
// Create the promise and SES service object
var sendPromise = new AWS2.SES({apiVersion: '2010-12-01'}).sendEmail(params1).promise();
// Handle promise's fulfilled/rejected states
sendPromise.then(
function(data) {
console.log(data.MessageId);
}).catch(
function(err) {
console.error(err, err.stack);
});
}
// var params = {
// Destination: { /* required */
// ToAddresses: [
// 'xxxxxxx@gmail.com',
// /* more items */
// ]
// },
// Message: { /* required */
// Body: { /* required */
// Html: {
// Charset: "UTF-8",
// Data: "Got an Order"
// },
// Text: {
// Charset: "UTF-8",
// Data: "Order Request"
// }
// },
// Subject: {
// Charset: 'UTF-8',
// Data: 'Check odaijini for new emails'
// }
// },
// Source: 'xxxxxxxxx@gmail.com', /* required */
// };
//sendEmail(params)
module.exports=sendEmail;
dynamo 数据库配置
var AWS = require("aws-sdk");
require('dotenv').config()
let awsConfig = {
"region": process.env.DBREGION,
"endpoint": process.env.DBENDPOINT,
"accessKeyId": process.env.DBACCESSKEYID, "secretAccessKey": process.env.DBSECRETACCESSKEY
};
AWS.config.update(awsConfig);
console.log('added')
module.exports = new AWS.DynamoDB.DocumentClient();
注意,如果我在配置中注释 this endpoint line
,那么 ses 代码也可以工作。但是发电机需要端点,我应该如何处理它。
错误
message: null,
code: 404,
time: 2021-05-21T10:04:54.588Z,
requestId: 'AT2LSMTUS78PRDAB23CRQ1JCRNVV4KQNSO5AEMVJF66Q9ASUAAJG',
statusCode: 404,
retryable: false,
retryDelay: 21.438085761293955
} 404: null
这是一个配置错误,因为在 dynamo db 和 see 之间,因为如果 aws sdk global configuration
我必须从全局配置中删除端点并将其专门用于 dynamodb 服务。
var AWS = require("aws-sdk");
require('dotenv').config()
let awsConfig = {
"region": process.env.DBREGION,
"accessKeyId": process.env.DBACCESSKEYID, "secretAccessKey": process.env.DBSECRETACCESSKEY
};
AWS.config.update(awsConfig);
console.log('added')
module.exports = new AWS.DynamoDB.DocumentClient({"endpoint": 'http://dynamodb.ap-southeast-1.amazonaws.com'}
我正在尝试做什么: 运行 app.post 中的 ses 代码 route.So 我已经为 ses 准备了一个配置文件分开然后在 app.js.The 中导入相同的 [dynamo 数据库配置也遵循程序,这引发了引发 404 错误的冲突。
我认为这个问题与全局 aws config 有关。根据这个 https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/global-config-object.html 但是我想不通。
当我尝试 运行 作为 node sendEmail.js
时,我的 ses 代码运行得非常好。该错误是由于 dynamo db 的类似配置导入。我正在 运行 为 post 路线设置我的 ses 代码,也尝试插入那里但不知何故它正在读取端点的 dynamo 数据库配置。
sendEmail.js(注释部分仅用于测试,我在app.js中传递参数)
let sendEmail = (params) => {
let params1=params
var AWS2 = require("aws-sdk");
require('dotenv').config()
let awsConfig2 = {
"region": process.env.DBREGION,
// "endpoint": process.env.DBENDPOINT,
"accessKeyId": process.env.DBACCESSKEYID, "secretAccessKey": process.env.DBSECRETACCESSKEY
};
AWS2.config.update(awsConfig2);
console.log('added email config')
// Create the promise and SES service object
var sendPromise = new AWS2.SES({apiVersion: '2010-12-01'}).sendEmail(params1).promise();
// Handle promise's fulfilled/rejected states
sendPromise.then(
function(data) {
console.log(data.MessageId);
}).catch(
function(err) {
console.error(err, err.stack);
});
}
// var params = {
// Destination: { /* required */
// ToAddresses: [
// 'xxxxxxx@gmail.com',
// /* more items */
// ]
// },
// Message: { /* required */
// Body: { /* required */
// Html: {
// Charset: "UTF-8",
// Data: "Got an Order"
// },
// Text: {
// Charset: "UTF-8",
// Data: "Order Request"
// }
// },
// Subject: {
// Charset: 'UTF-8',
// Data: 'Check odaijini for new emails'
// }
// },
// Source: 'xxxxxxxxx@gmail.com', /* required */
// };
//sendEmail(params)
module.exports=sendEmail;
dynamo 数据库配置
var AWS = require("aws-sdk");
require('dotenv').config()
let awsConfig = {
"region": process.env.DBREGION,
"endpoint": process.env.DBENDPOINT,
"accessKeyId": process.env.DBACCESSKEYID, "secretAccessKey": process.env.DBSECRETACCESSKEY
};
AWS.config.update(awsConfig);
console.log('added')
module.exports = new AWS.DynamoDB.DocumentClient();
注意,如果我在配置中注释 this endpoint line
,那么 ses 代码也可以工作。但是发电机需要端点,我应该如何处理它。
错误
message: null,
code: 404,
time: 2021-05-21T10:04:54.588Z,
requestId: 'AT2LSMTUS78PRDAB23CRQ1JCRNVV4KQNSO5AEMVJF66Q9ASUAAJG',
statusCode: 404,
retryable: false,
retryDelay: 21.438085761293955
} 404: null
这是一个配置错误,因为在 dynamo db 和 see 之间,因为如果 aws sdk global configuration
我必须从全局配置中删除端点并将其专门用于 dynamodb 服务。
var AWS = require("aws-sdk");
require('dotenv').config()
let awsConfig = {
"region": process.env.DBREGION,
"accessKeyId": process.env.DBACCESSKEYID, "secretAccessKey": process.env.DBSECRETACCESSKEY
};
AWS.config.update(awsConfig);
console.log('added')
module.exports = new AWS.DynamoDB.DocumentClient({"endpoint": 'http://dynamodb.ap-southeast-1.amazonaws.com'}