AWS Lambda/SNSにSQSを連携し、メール通知を行ってみる[02]

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
最近、とある事情でAWS関連のインプットをよくしています。

今回はAWS LambdaとSNSで構築したメール通知環境にSQSを追加していきたいと思います。

前回の記事は以下となります。

https://qiita.com/ohtsuka-shota/items/e2b62e5ab61a90807264

全体の流れは以下にまとめています。

https://qiita.com/ohtsuka-shota/items/db74a418dabc261d9126

# 最終的な構築イメージ
以下環境を作っていきます。今回はSQSを実装していきます。
![aws-django01-ページ6.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/426843a2-5d28-7283-96dc-22fb1cbe3e34.png)

# 構築
## SQSの作成
SQSの管理画面にアクセスします。キューを作成を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/af649d23-64b2-185a-4904-c77cf10f8fb1.png)
以下の設定で作成します。基本的にはデフォルトで問題ないと思います。
- タイプ：標準
- 名前：qiita_sqs

![screencapture-ap-northeast-1-console-aws-amazon-sqs-v3-home-2024-05-01-14_50_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/80918183-90af-a425-5e36-2bd49e457885.png)
作成出来たことを確認します。
![2024050111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/9a09c830-a8f6-99f5-4592-d8a9e7fdce61.png)

## Lambdaのロールを修正する
前回作成したLambdaに移動します。この状態から下に少しスクロールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/4aa55e3a-9590-de6d-1512-92bc109a838b.png)
設定タブのアクセス権限を開きます。Lambdaにアタッチされているロールを確認することが出来ます。ロール名がリンクとなっていますのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/51c6296a-6ddb-6d29-0f8f-6fcb5942c48e.png)
現在ロールにアタッチされているポリシが確認できます。
画面下の許可タブ内の許可を追加を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/182c8af7-79b1-b25c-c336-03a75e3eb41b.png)
AWSLambdaSQSQueueExecutionRoleを選択して許可を追加を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/b74c92cf-a6f4-0ef5-a033-c5b9d8f4a56b.png)
許可ポリシ内にAWSLambdaSQSQueueExecutionRoleが表示されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/32b293c7-f467-0e1b-0179-fbcdf2e40ba3.png)
SQSとLambdaを紐づけていきます。
Lambdaの左にあるトリガーを追加を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/4aa55e3a-9590-de6d-1512-92bc109a838b.png)
以下の内容で作成します。
これも基本的にデフォルトのもので問題ありません。
- SQS
- SQS queue：qiita_sqsを選択

![2024050112.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/c2e39e30-8e60-2155-ab73-014e5c88d8ac.png)
トリガーは無効情報という通知がなされます。暫く待機します。
自動で解消されるはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/a9d68702-dced-f251-33fe-7a467807d191.png)
もし、上記で解消されない場合はSQSのLambdaトリガーを確認してみます。
正常に紐づけが出来ていれば、Lambdaが表示されており、でスタータスがEnabledになっているはずです。
![2024050113.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/3a67d7d5-7ee1-c5f7-a4fb-a97979ebb751.png)

## テスト
SQSの画面右上にメッセージを送受信というボタンがありますので押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6a809d57-883a-0871-7027-b9c0df8dde21.png)
メッセージはなんでも大丈夫です。このまま送信ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/ae87ed26-00c1-81b8-d126-3b2053311bc3.png)
メッセージは送信され、受信可能です。というメッセージが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6507dac6-12de-7a0b-db57-2f85f1611a20.png)
以前登録したメールアドレスに通知が飛んできていれば環境構築成功です。
お疲れ様でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/423814d3-7901-1ef0-4700-55c0f1ecdaa9.png)