はじめに
前回に引き続き、メール機能について学習したのでアウトプットしていきます 今回はAmazon SESを使っていきます Amazon SESを使う前提としてが必要になってきます。
メール送信
Amazon SES では、 >- *Amazon SES コンソール* - _Simple Mail Transfer Protocol (SMTP)インターフェイス_ >- Amazon SES APIなど、E メールを送信するためのいくつかの方法を利用できます。
この中でAmazon SES APIを使ってみます
Amazon SES API
Amazon SES APIを用いることで以下のことができます。
- Amazon SES クエリ API を HTTPS 経由で直接呼び出し(ムズイらしい)
- AWS Command Line Interfaceの使用
- AWS Tools for Windows PowerShellの使用
- AWS SDK の使用
aws初心者の私は一番簡単にできそうなAWS SDKを使っていきます!
AWS SDKは Amazon SESオペレーションだけでなく、基本的な AWS 機能 (リクエスト認証、リクエストの再試行、エラー処理など) も提供します。
AWS SDK 経由でAmazon SES API
Node.js 内の AWS SDK for JavaScriptを使用します!(SDKにはPythonやjava,PHPなど様々な言語に対応したものが用意されています)
セキュリティのベストプラクティスについては、AWS アカウントのアクセスキーではなくIAM ユーザーのアクセスキーを使用します。
AWS アカウントの認証情報によってすべての AWS リソースへのフルアクセス権を付与するため、この認証情報は安全な場所に保存しておき、AWS の日々の操作には IAM ユーザーの認証情報を使用するらしいです。
では早速、AWS アクセスキーを作成していきましょう!
awsのベストプラクティスでは、AWS アクセスキーの作成手順として以下のように紹介されています。
1: IAM ユーザーを作成し、そのユーザーのアクセス許可を可能な限り狭く定義します。
2: その IAM ユーザーにアクセスキーを作成します。
AWS アクセスキーは、アクセスキー ID とシークレットアクセスキーで構成されます。
SESの環境を構築
sdkをインストールします
npm install aws-sdk --save
aws-sdkで接続情報の設定
基本的には[IAMロール](https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html)を使って行うらしいのですが、よくわからないので別の方法で! クレデンシャル(~/.aws/credentials)もよく使われるらしいですが、今回はenvに設定しました~dotenv モジュールのインストール
$ npm install dotenv
ルートフォルダーに.envファイルを作り記述します。
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットアクセスキー
最後にmail.jsをルートフォルダーに作り、最も簡単なE メールテンプレートの作成をします。
node mail.js
を実行すれば…
届きました。
メール機能を運用していくにあたって
現状では不正使用や悪用を防止し、送信者としての評判を保つため、新しい Amazon SES アカウントには制限が適用されます。そのため、下記の制限があります。
- 最大で 24 時間あたり 200 メッセージ
- E メールは、検証済み E メールアドレスまたはドメインからのみ送信
制限解除にはサンドボックスに配置されている Amazon SESをサンドボックスの外に置く必要があります。