今回はAWS SESとS3を利用してメールの受信環境を構築します。
2回連載を通して、ELBロードバランサーにSSL証明書を適用する作業のご紹介する予定です。ACM(Amazon Certificate Manager)とSESを組み合わせて使うことにより、WEBサーバ用のドメイン認証証明書を無料で取得出来るようになります。
ワイルドカード証明書の値段
年額\16,000~\140,000程度
取り扱いの証明書ブランドや認証タイプによって価格は大きく異なります。Symantec等有名証明書ブランドなら高い。AWS ACM提供の証明書はドメイン認証タイプの証明書です。HTTPS通信を行いたいならこれで十分。
ACMを使って実現できること
ACMのサーバ証明書発行管理と自動更新機能により、サーバ証明書の管理・更新作業からの開放!あったら困る、更新期限を忘れた為にサーバダウンといった不安がなくなります。
AWSはなんと、ドメイン認証証明書のワイルドカードが無料!
- AWS ACMで証明書のリクエスト発行
- SES、S3、Route53を使ってACMが発行したドメインのメール認証
- ACMより証明書を取得
- ELBに適用
上記作業により、サーバレスでサーバ証明書発行を行います。
ACM(Amazon Certificate Manager)の仕様
- 秘密鍵をAWSからは取り出せない。
- ELBやCloudFrontに適用することでTLS実装が可能
上記の仕様からわかることは、あくまでAWSのサービス利用内での証明書は無料。いくらでも自由に使って構わないよってサービスだということ。
今回の前提条件
- 既にRoute53にてWEBサーバ向けのドメイン設定が完了している。
Amazon Simple Email Service (Amazon SES)
コスト効率に優れた E メールサービスであり、Amazon.com が自社の顧客ベースのサービス向けに開発した信頼性が高くスケーラブルなインフラストラクチャで構築されています。Amazon SES では、最低料金なしで E メールを送受信できます。従量料金制で、使用した分のみお支払いいただきます。
@see Amazon SES
S3のバケットを利用することで受信も出来るようになりました。
以前は送信のみでした。今はメールデータをDBに格納できたり、S3バケットと連携などサービスが拡張され、より便利になりました。
AWS Certificate Manager
AWS の各種サービスで使用する Secure Sockets Layer/Transport Layer Security (SSL/TLS) 証明書のプロビジョニング、管理、およびデプロイを簡単に行えます。SSL/TLS 証明書は、ネットワーク通信を保護し、インターネットでウェブサイトのアイデンティティを確立するために使用されます。AWS Certificate Manager を使用すれば、SSL/TLS 証明書の購入、アップロード、および更新という時間のかかるプロセスを手動で行う必要がなくなります。AWS Certificate Manager を使えば、証明書のリクエスト、および Elastic Load Balancing や Amazon CloudFront ディストリビューションといった AWS のリソースでの証明書のデプロイを簡単に行うことができます。また、証明書は自動的に更新されます。AWS Certificate Manager でプロビジョニングされた SSL/TLS 証明書は無料です。お支払いいただくのは、アプリケーションを実行するために作成した AWS リソースの料金のみです。
ACMで証明書を発行してTLS実装メリット
- 自動更新してくれるので証明書の更新作業がなくなる。
- 1により証明書の更新を忘れでのサーバダウンしなくなる。
- 証明書管理業務がなくなる。
- 証明書ブランドとの更新契約費用を削減できます。
Amazon SESを利用する
【サービス】から【SES】をクリックします。
日本と米国との地理的な理由でオレゴンを選択しています。
SES Homeが表示されました。【Domains】を選択します。
【Verify a New Domain 】を選択します。
【Use Route 53】をクリックします。
各チェックを入れて、【Create Record Sets】をクリックします。
SESの準備が出来ました。
【サービス】>> 【Route53】を選択します。
Hosted zonesをクリックします。
既に設定してあるドメイン名をクリックします。
SESで設定したレコードが追加されているのを確認します。
【サービス】>> 【SES】を選択します。
【Email Receiving】項目の【Rule Sets】をクリックします。
【View Active Rule Set】をクリックします。
【Create Rule】をクリックします。
【Recipient】項目に使用したいドメイン名を入力し、【Add Recipient】を入力します。
【Next Step】をクリックします。
Add action項目で【S3】を選択します。
S3セクションで【S3 bucket】項目にてSESのメールを格納する【Create S3 bucket】を作成します。
任意のバケット名を入力し、【Create Bucket】を入力します。
Object key prefixに任意のものを入力、【Add action】にて【Stop Rule Set】をクリックして選択します。
【Next Step】をクリックします。
【Rule Details】にルール名を任意の名前で入力して、【Next Step】をクリックします。
digコマンドを使ってドメインのMXレコードがひけるかを確認しました。期待していたレコードのANSWERも返りました。大丈夫ですね~。
では、メールを試しに打ってみます。
【サービス】>> 【S3】を選択します。
SESで作ったS3バケットを選択します。
メールが届いています。
これでSES+AWS S3によりメール受信が可能な環境が整いました。
次回はAWS Certificate Managerと今回構築したSESを使ってサーバ証明書を発行し、ELB(ALB)ロードバランサに証明書を適用しHTTPS暗号化通信が出来るようにしようと考えています。
お楽しみに!
次⇒AWS SES + S3でメール受信環境を構築 AWSで無料サーバ証明書_2