投稿

ラベル(SNS)が付いた投稿を表示しています

SNSメール通知が届かない原因と対処法:サブスクリプション確認を忘れていませんか?

SNSトピックを作成してメールアドレスを登録したのに、アラートが一切届かない——本番環境の監視を設定した直後にこの状況に陥ると、「SNSが壊れているのか、IAMが間違っているのか」と疑い始めてしまう。ほとんどの場合、原因はずっとシンプルだ。 サブスクリプション確認メールのリンクをクリックしていない 、それだけである。 TL;DR:SNSメール通知が届かない場合の確認ポイント 確認順序 確認内容 期待される状態 1 サブスクリプションのステータス confirmed ( PendingConfirmation は未確認) 2 確認メールの受信(迷惑メールフォルダ含む) 件名「AWS Notification - Subscription Confirmation」 3 SNSトピックのアクセスポリシー パブリッシュ権限が正しく設定されている 4 送信元サービスのIAMロール SNSトピックへの sns:Publish 権限を保持 5 CloudWatchアラームのアクション設定 正しいSNSトピックARNが指定されている SNSメール通知の仕組み:なぜ確認が必要なのか Amazon SNSのEmailサブスクリプションは、スパム防止のためにダブルオプトイン方式を採用している。エンドポイント(メールアドレス)を登録した時点では、サブスクリプションは PendingConfirmation 状態になる。この状態では、トピックにメッセージがパブリッシュされても、そのエンドポイントには配信されない。確認リンクをクリックして初めて confirmed 状態に遷移し、通知が届くようになる。 graph TD A["sns:Subscribe 呼び出し"] --> B["PendingConfirmation 確認メール送信"] B --> C{"確認リンクを クリックしたか?"} C -- "No(期限切れ含む)" --> D["メッセージ配信されない 再サブ...

AWSフリーティア超過を防ぐ:CloudWatch請求アラームで$5超えをメール通知する設定手順

AWSアカウントを作成したばかりのとき、フリーティアの範囲内で収まっているつもりが、月末に予想外の請求が届いた——そういう経験をしたエンジニアは少なくない。CloudWatchの請求アラームを使えば、推定料金が指定した閾値を超えた時点でメール通知を受け取れる。この記事では、推定料金が$5を超えた場合にアラートを送る設定を、CLIとコンソール両方の手順で解説する。 TL;DR:請求アラーム設定の概要 手順 内容 注意点 1. 請求アラートを有効化 アカウントの請求設定でモニタリングを有効にする us-east-1リージョン限定の操作 2. SNSトピック作成 メール通知用のSNSトピックとサブスクリプションを作成 サブスクリプション確認メールへの承認が必要 3. CloudWatchアラーム作成 EstimatedChargesメトリクスに$5の閾値を設定 メトリクスはus-east-1にのみ存在する 4. 動作確認 アラームの状態とSNS連携を確認 メトリクスデータは数時間遅延する場合がある 請求アラームの仕組みを理解する CloudWatchの請求アラームは、AWSが内部で集計する推定請求額(EstimatedCharges)メトリクスを監視する。このメトリクスはAWSサービス全体の推定コストを反映しており、 us-east-1リージョンにのみ存在する 。他のリージョンでは参照できないため、アラームの作成もus-east-1で行う必要がある。 メトリクスの更新頻度はおおよそ数時間ごとであり、リアルタイムの課金状況を反映するものではない。あくまで推定値であることを前提に運用する必要がある。 通知の経路はSNS(Simple Notification Service)を経由する。CloudWatchアラームがSNSトピックにメッセージをパブリッシュし、そのトピックにサブスクライブしたメールアドレスへ通知が届く。 graph LR A["AWSサービス利用 EC2 / S3 など"] --> B["推定料金を集計 数時間ごとに更新"...