はじめに
前回に引き続き、メール機能について学習したのでアウトプットしていきます
今回はAmazon SESを使っていきます
Amazon SESを使う前提として
- (AWSアカウントをすでに作成済みの方はOKです!)
E メールアドレスまたはドメインの確認(ID検証)
- Amazon SES の使用を開始した時点では、E メールを送受信するためには、Amazon SES メールボックスシミュレーターと検証済み E メール ID のみであるためです。
今回はEメールアドレス検証を行っていきます。(ドメインの場合も同様)
Email Addressesを選択し、Verify a new Email Address からメールアドレスの検証を行ってください。
- アカウントの詳細を入力
が必要になってきます。
メール送信
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ロールを使って行うらしいのですが、よくわからないので別の方法で!
クレデンシャル(~/.aws/credentials)もよく使われるらしいですが、今回はenvに設定しました~
dotenv モジュールのインストール
$ npm install dotenv
ルートフォルダーに.envファイルを作り記述します。
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットアクセスキー
最後にmail.jsをルートフォルダーに作り、最も簡単なE メールテンプレートの作成をします。
node mail.js
を実行すれば…
届きましたね。
おまけ
awsを使うにあたり調べた用語を紹介します
ロール
特定のアクセス権限を持ち、アカウントで作成できる IAM アイデンティティです。IAM ロールは、IAM ユーザーといくつかの類似点を持っています。ロールとユーザーは、両方とも、ID が AWS でできることとできないことを決定するアクセス許可ポリシーを持つ AWS ID です。ただし、ユーザーは 1 人の特定の人に一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。また、ロールには標準の長期認証情報 (パスワードやアクセスキーなど) も関連付けられません。代わりに、ロールを引き受けると、ロールセッション用の一時的なセキュリティ認証情報が提供されます。