質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

解決済

AWS LamdaとSESを利用したメール送信での複数宛先をセットする方法

shunn
shunn

総合スコア2

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0リアクション

0クリップ

308閲覧

投稿2022/09/16 08:43

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

var aws = require('aws-sdk'); var dynamo = new aws.DynamoDB(); var ses = new aws.SES({ region: "ap-northeast-1" }); //SESの認証が取れているリージョンの選択 exports.handler = async (event) => { let prm={ tablename:"sampledb",//テーブル名 pk_name:"SendLayer",//パーテーションキーの名称 pk_prm:{S:"To"},//検索パーテーションキーの指定 sk_name:"UserId",//ソートキーの名称 sk_prm:{N:"99999"},//検索ソートキーの指定 }; let res= await dynamoquery_pksk(prm); const to_list_num = Object.keys(res).length var to_list =""; var to_all =""; for(var i = 0; i < to_list_num; i++) { to_list = '"' +res[i]["UserAddress"]["S"] + '"' + ',' //to_list = res[i]["UserAddress"]["S"] + "," to_all = to_all + to_list } var email_params = { Destination: { ToAddresses: [ to_all ], CcAddresses: [ ] }, Message: { Body: { //メール本文 \n\で改行コード Text: { Data: "株式会社" }, }, Subject: { Data: "発注願い" }, //メール題名 }, Source: "sample@example", //メール送信元アドレス ※ssesの認証が取れているメールアドレスを選択すること. }; console.log(to_all) return ses.sendEmail(email_params).promise() //return(to_all) }; function dynamoquery_pksk(obj){ return new Promise((resolve, reject) => { let params = { "TableName": obj.tablename, "KeyConditionExpression": "#pk_name = :pk_prm and #sk_name < :sk_prm" ,//検索条件 パーテーションキーでのは=のみ "ExpressionAttributeNames":{ "#pk_name": obj.pk_name, "#sk_name": obj.sk_name }, "ExpressionAttributeValues": { ":pk_prm": obj.pk_prm, ":sk_prm": obj.sk_prm, } }; dynamo.query(params,function(err, data) { if (err) { reject(err, err); } else { resolve(data.Items); } }); }); }

試したこと

console.logで出力された値をそのまま、toaddresにセットすると普通に送信できました。
また、to_allではなくto_list(*要は宛先が1つ)の場合は送信できました。

ログの内容

fuctionlogs

START RequestId: 46b56a5e-125f-4156-ba6b-03b1588f2d0b Version: $LATEST 2022-09-16T08:36:35.975Z 46b56a5e-125f-4156-ba6b-03b1588f2d0b INFO to_all 2022-09-16T08:36:35.975Z 46b56a5e-125f-4156-ba6b-03b1588f2d0b INFO "sample1@example.com","sample@example.com", 2022-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)"]} END RequestId: 46b56a5e-125f-4156-ba6b-03b1588f2d0b REPORT 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

ここにより詳細な情報を記載してください。
エラーの内容をみる限りは、アドレスのセットし方がまちがっているようなのですが、どうすればよいでしょうか?

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。