0
0

More than 1 year has passed since last update.

LambdaでSNSからメール送信できないときの確認事項3選

Posted at

最近、仕事でLambdaからSNSを使用して、Eメール送信する機能を開発する機会がありました。

Nodeを使って開発し、コード自体はググればコピペして使えるコードが盛りだくさんだったので、直ぐに終わるかと思ったのですが・・・

とにかくSNSへのメッセージ発行ができず、苦労しました。
調査した結果、メッセージ発行ができない原因が3つあったので、メモとしてまとめようと思います!

その1、権限がない

こちらは、どのサイトでも大体書かれていました。
Lambadaの実行ロールにSNS実行権限を付ける必要があります。
設定タブのアクセス権限から実行ロールを編集可能です。
image.png

その2、エンドポイントが無い

サイトで紹介されるサンプルだと、ネットワークの利用を特にしないので、忘れがちです。
実際はプライベートなVPCネットワーク内にLambdaを配置していると思うので、SNSに繋ぐためのエンドポイントが必要になります。
現場だと、ここにVPCの設定があるはず。(無ければエンドポイントは必要ない)
image.png

その3、実行ロールよりIAMユーザーが優先される

ここで、大分ハマりました。
その1で実行ロールにはSNSの権限を付けたのに権限が無いというエラーが消えませんでした。
調査した結果、以下のようにコード上でIAMユーザーのアクセス設定をしていると、こちらが優先されます。

var sns = new AWS.SNS({
    accessKeyId: '<access_key>',
    secretAccessKey: '<secret_key>'
});

Lambdaの実行ロールを使いたい場合は、上記のようにアクセスキーの設定は不要です!

終わりに

職場でなかなか解決できず焦りました^^;
しかし、そのお陰で曖昧だったVPC・IAMの知識が深まったので、得られたものも多かったです!
やっぱり実際に触って何かを作ることでしか、IT知識って身にならないんだな〜と感じました。

参考

https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/sns-examples-publishing-messages.html
https://blog.fire-sign.info/1157/
https://hacknote.jp/archives/13102/
https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-vpc-tutorial.html
https://blog.serverworks.co.jp/tech/2018/04/12/vpc-endpoint-sns/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0