【问题标题】:Conflict of configuration of dynamodb and ses in express while importing导入时express中dynamodb和ses的配置冲突
【发布时间】:2021-08-10 14:28:58
【问题描述】:

我正在尝试做的事情:在 app.post 路由中运行 ses 代码。所以我已经为 ses 单独准备了一个配置文件,然后在 app.js 中导入。同样的 [过程dynamo db 配置也被跟踪,这引发了引发 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 route 运行我的 ses 代码,也尝试在那里插入,但不知何故它正在读取端点的 dynamo db 配置。

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;

发电机数据库配置

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

【问题讨论】:

    标签: javascript node.js amazon-web-services express amazon-ses


    【解决方案1】:

    这是一个配置错误,因为在 dynamo db 之间查看,因为如果 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'}
    

    【讨论】:

      猜你喜欢
      • 2023-01-09
      • 2020-04-01
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多