lambdaを利用してdynamodbから宛先リストを取得し、対象者にメールを送信したいと考えております。※複数のメールではなく、1つのメールで対象者に
宛先を変数にして複数にしたときにエラーが発生しました。
実現したいこと
宛先、ccにそれぞれ複数のアドレスをセットできるようにしたい
発生している問題・エラーメッセージ
Response { "errorType": "InvalidParameterValue", "errorMessage": "Illegal address", "trace": [ "InvalidParameterValue: Illegal address", " at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/query.js:50:29)", " at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)", " at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)", " at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:686:14)", " at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)", " at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)", " at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10", " at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)", " at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:688:12)", " at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18)" ] }
該当のソースコード
node.js
1var aws = require('aws-sdk'); 2var dynamo = new aws.DynamoDB(); 3var ses = new aws.SES({ region: "ap-northeast-1" }); //SESの認証が取れているリージョンの選択 4 5exports.handler = async (event) => { 6 let prm={ 7 tablename:"sampledb",//テーブル名 8 pk_name:"SendLayer",//パーテーションキーの名称 9 pk_prm:{S:"To"},//検索パーテーションキーの指定 10 sk_name:"UserId",//ソートキーの名称 11 sk_prm:{N:"99999"},//検索ソートキーの指定 12 }; 13 let res= await dynamoquery_pksk(prm); 14 15 const to_list_num = Object.keys(res).length 16 var to_list =""; 17 var to_all =""; 18 19 for(var i = 0; i < to_list_num; i++) { 20 to_list = '"' +res[i]["UserAddress"]["S"] + '"' + ',' 21 //to_list = res[i]["UserAddress"]["S"] + "," 22 to_all = to_all + to_list 23 } 24 var email_params = { 25 Destination: { 26 ToAddresses: [ 27 to_all 28 ], 29 CcAddresses: [ 30 ] 31 }, 32 Message: { 33 Body: { //メール本文 \n\で改行コード 34 Text: { Data: "株式会社" 35 }, 36 }, 37 38 Subject: { Data: "発注願い" }, //メール題名 39 }, 40 Source: "sample@example", //メール送信元アドレス ※ssesの認証が取れているメールアドレスを選択すること. 41 }; 42 console.log(to_all) 43 return ses.sendEmail(email_params).promise() 44 //return(to_all) 45}; 46 47 48 49function dynamoquery_pksk(obj){ 50 return new Promise((resolve, reject) => { 51 let params = { 52 "TableName": obj.tablename, 53 "KeyConditionExpression": "#pk_name = :pk_prm and #sk_name < :sk_prm" ,//検索条件 パーテーションキーでのは=のみ 54 "ExpressionAttributeNames":{ 55 "#pk_name": obj.pk_name, 56 "#sk_name": obj.sk_name 57 }, 58 "ExpressionAttributeValues": { 59 ":pk_prm": obj.pk_prm, 60 ":sk_prm": obj.sk_prm, 61 } 62 }; 63 dynamo.query(params,function(err, data) { 64 if (err) { 65 reject(err, err); 66 } else { 67 resolve(data.Items); 68 } 69 }); 70 }); 71}
試したこと
console.logで出力された値をそのまま、toaddresにセットすると普通に送信できました。
また、to_allではなくto_list(*要は宛先が1つ)の場合は送信できました。
ログの内容
fuctionlogs
1START RequestId: 46b56a5e-125f-4156-ba6b-03b1588f2d0b Version: $LATEST 22022-09-16T08:36:35.975Z 46b56a5e-125f-4156-ba6b-03b1588f2d0b INFO to_all 32022-09-16T08:36:35.975Z 46b56a5e-125f-4156-ba6b-03b1588f2d0b INFO "sample1@example.com","sample@example.com", 42022-09-16T08:36:36.195Z 46b56a5e-125f-4156-ba6b-03b1588f2d0b ERROR Invoke Error {"errorType":"InvalidParameterValue","errorMessage":"Illegal address","code":"InvalidParameterValue","message":"Illegal address","time":"2022-09-16T08:36:36.137Z","requestId":"dee2cdc7-173a-4308-bd81-d85e8bf5fbc8","statusCode":400,"retryable":false,"retryDelay":54.19076785133659,"stack":["InvalidParameterValue: Illegal address"," at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/query.js:50:29)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:686:14)"," at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)"," at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)"," at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:688:12)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"]} 5END RequestId: 46b56a5e-125f-4156-ba6b-03b1588f2d0b 6REPORT RequestId: 46b56a5e-125f-4156-ba6b-03b1588f2d0b Duration: 953.65 ms Billed Duration: 954 ms Memory Size: 128 MB Max Memory Used: 82 MB Init Duration: 427.38 ms
ここにより詳細な情報を記載してください。
エラーの内容をみる限りは、アドレスのセットし方がまちがっているようなのですが、どうすればよいでしょうか?
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/09/17 22:00
2022/09/19 00:01
2022/09/19 00:02
2022/09/19 02:37