RDS for SQL Server インスタンスがパブリックサブネットまたはプライベートサブネットのいずれかにある場合、Amazon SES 機能を使用して E メールを送信するにはどうすればよいですか?

所要時間3分
0

Amazon Simple Email Service (Amazon SES) 機能を使用して E メールを送信したいと考えています。プライベートサブネットまたはパブリックサブネットでホストされている Amazon Relational Database Service (Amazon RDS) for SQL Server インスタンスを使用したいと考えています。

簡単な説明

Amazon RDS for SQL Server DB インスタンスを使用して Amazon SES で E メールを送信するには、まず Amazon SES を使用して簡易メール転送プロトコル (SMTP) 認証情報を作成します。その後、Database Mail で使用するパラメータグループを作成します。DB インスタンスがプライベートサブネットでホストされている場合は、Database Mail プロファイルで使用する VPC エンドポイントを設定します。

解決策

Amazon SES を設定する

1.    Amazon SES コンソールを開き、[SMTP 設定] を選択します。

2.    [サーバー名][ポート] に表示されている値を書き留めます。

3.    [SMTP 認証情報の作成] を選択します。これにより、AWS Identity and Access Management (IAM) コンソールが開きます。

4.    [IAM ユーザー名] で、ユーザーを入力するか、デフォルトのユーザーを使用して続行し、[作成] を選択します。

5.    [認証情報をダウンロード] を選択します。SMTP 認証情報をダウンロードできるのはこのときだけなので、必ず安全な場所に保存してください。

6.    Amazon SES コンソールを開き、[E メールアドレス] を選択します。

7.    [新しい E メールアドレスを検証する] を選択し、確認メールを受信する E メールアドレスを入力します。

8.    E メールアドレスを確認入力したら、[検証ステータス][検証済み] になっていることを確認します。

Database Mail パラメータグループを設定する

Database Mail プロファイルで使用するカスタムパラメータグループが既にある場合は、この手順をスキップしてください。

1.    Amazon RDS コンソールを開き、ナビゲーションペインから [パラメータグループ] を選択します。

2.    [パラメータグループを作成] を選択します。

3.    [パラメータグループファミリー] で、使用している SQL Server のバージョンとエディションを選択します。たとえば、SQL Server 2016 Enterprise Edition は sqlserver-ee-13.0 を使用します。

4.    [グループ名][説明] を入力してから、[作成] を選択します。

5.    [パラメータグループ] ページで、作成したグループを選択します。

6.    [パラメータを編集] を選択し、[database mail xps] の横にあるチェックボックスをオンにします。

7.    [値][1] を選択します。

8.    変更を保存します。

: パラメータグループが既に RDS for SQL Server インスタンスに関連付けられている場合は、次の手順をスキップしてください。

9.    Amazon RDS コンソールで、[データベース] を選択し、[変更] を選択します。

10.    [データベースオプション] で、以前に設定したパラメータを選択し、[続行] を選択します。

11.    [変更のスケジューリング] で、[今すぐ] を選択します。

12.    [DB インスタンスを変更] を選択して変更を適用し、インスタンスを再起動します。

Database Mail を設定する

RDS for SQL Server インスタンスがパブリックサブネットでホストされている場合は、「データベースメールの設定」の手順に従います。

ただし、インスタンスがプライベートサブネットにある場合は、Database Mail を設定したときに次のエラーが表示されることがあります。

「The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2020-12-08T22:20:51).Exception Message: Could not connect to mail server.(A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 52.63.118.124:587).」

このエラーは、DB インスタンスがメールサーバーにアクセスできないことを示しています。これを解決するには、Amazon SES 用に VPC エンドポイントを作成します。

1.    インスタンスのプライベート IP を特定します

2.    インスタンスに関連付けられているセキュリティグループに対するインバウンドルールを含む新しいセキュリティグループを作成します**。** [タイプ] で、[カスタム TCP] を選択します。[ポート範囲] で、E メールの送信に使用するポート番号を入力します。25、465、587、2465、または 2587 を使用できます。[送信元タイプ][カスタム] を選択します。[ソース] で、RDS for SQL Server インスタンスのプライベート IP を入力します。

3.    VPC エンドポイントを作成します。VPC エンドポイントが使用可能な状態になったら、エンドポイントを選択し、DNS フィールドの下にある最初のエントリをコピーします。

4.    Database Mail アカウントを再作成します。

use msdb
go

EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'Acc1',
@description = 'Mail account for sending outgoing
notifications.',
@email_address = 'example@example.com',
@display_name = 'Automated Mailer',
@mailserver_name =
'vpce-0a9cxxxxxxxxxxxxx-xxxxxxxx.email-smtp.ap-southeast-2.vpce.amazonaws.com',
<---- VPC endpoint created in previous step
@port = 587,
@enable_ssl = 1,
@username = 'SMTP-username', <---- For user name and
password, please use the SES credentials
@password = 'SMTP-password' ;

注: @mailserver\ _name は VPC エンドポイントを作成したときに取得した DNS に置き換えます。

5.    Database Mail を正しく設定していれば、この SQL コマンドを実行すると、E メールは正常に送信されます。

EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'success@simulator.amazonses.com',
@body = 'The database mail configuration was completed successfully.',
@subject = 'Automated Success Message';

6.    次に、以下のストアドプロシージャを実行して、すべての E メールアイテムを一覧表示して検証します。[sent_status] 列で、ステータスが送信されていることを確認します。

SELECT * FROM msdb.dbo.sysmail_allitems

関連情報

Amazon RDS Custom for SQL Server DB インスタンスの管理

Using Database Mail on Amazon RDS for SQL Server

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ