2022/07/15

AWSのSNSとは?特徴やSlackへのメッセージ送信方法をご紹介

 
  

AWS SNSとは


Amazon Web Services(AWS)のSimple Notification Service(SNS)は、クラウドで発行されるメッセージ(通知)を配信するサービスです。

SNSの通信チャネルを介することで、大量のメッセージを素早く配信できます。配信順を厳密化する機能もあり、情報の順番が重要視されるワークロードで有効です。

AWS SNSの特徴6つ


この項目では、AWS SNSの特徴について6つご紹介します。トピックと呼ばれるチャネルにより、メッセージの配信を高速化します。それ以外にも、フィルタリングやセキュリティ、高耐久性を維持する機能など、多様なサポートが受けられます。

類似したサービスとして、Simple Queue Service(SQS)があります。システムのコンポーネントを分離して管理を簡易化する他、メッセージを送信先へ確実に届ける仕組みが構築されています。

SNSとは併用されることが多く、双方の利点を活かして配信の柔軟性・確実性を高められます。

特徴1:2種類のトピック

SNSには、2種類のトピックがあります。

トピックとは、SNSにおける通信チャネルであり、発行されたメッセージはこれを通じて受信元となるデバイスに送られます。SNSでは、FIFOトピックと標準トピックに分別されます。

FIFOトピック

FIFO(先入先出)トピックは、メッセージの送信順を厳密に適用するように設計されたトピックです。

メッセージの送信を、必ず発行された順に行われるようにします。また、同じメッセージが重複して送られてしまうことを防ぎます。

ログ管理、フライトトラッキング、最新価格表示システム、ニュースなど、情報の順番が前後すると運用に支障をきたすワークロードに適しています。SQSのFIFOキューでのみ受信できます。

標準トピック

標準トピックは、配信速度を重視したベストエフォート型のトピックです。

FIFOと比較すると、こちらはメッセージが送られてくる順番が発行順と異なったり、重複して配信されたりする場合があります。

一方、配信速度ではこちらが上回っており、1秒ごとの配信数に制限がありません。このため、順番に拘らず、一度に大量のメッセージを送りたい場合に適しています。

また、FIFOでは専用のキューでのみ受信できますが、こちらはSMS、Lambda、Eメール、Slack、プッシュ通知など、受信可能なデバイスが豊富です。

特徴2:メッセージをフィルタリングできる

SNSは、メッセージをフィルタリングできます。トピックのサブスクリプションにポリシーを作成し、割り当てることで設定します。

デフォルトではすべてのメッセージを受け取るように設定されており、必要性の薄いものまで取得して煩雑化する可能性があります。フィルタリング機能を使用することで一部のみを受け取れるようにでき、運用を簡略化できます。

また、CloudWatchやCloudFormationと統合すれば、フィルターのモニタリングやポリシー管理が可能になります。

特徴3:耐久性が高い

SNSは、メッセージに高い耐久性を付与します。

メッセージが発行されると、そのデータを複数のアベイラビリティーゾーン(AZ)に保存します。これにより、一部のAZで障害が発生した時にも稼働し続けられます。

また、サーバー側のエラーによって送信に失敗すると、ポリシーに従って再試行します。それでも成功しなかった場合は、SQSのデッドレターキューという場所に送られ、保持されます。そのため、送信しようとしたメッセージがエラーで消えてしまう心配もありません。

特徴4:KMSやVPCによるセキュリティ強化

SNSは、Key Management Service(KMS)やVirtual Private Cloud(VPC)を介してセキュリティを強化できます。

KMSは暗号化キーを作成するサービスです。このキーを用いてメッセージを暗号化し、内容を保護します。

VPCは独自の仮想ネットワークを構築するサービスです。AWS PrivateLinkを通じて、VPCとの間でプライベート接続ができます。公共のネットワークを経由しないことで、安全に送受信ができるようになります。

特徴5:サービスで発生したイベントを通知できる

SNSは、他のAWSリソースと統合することで、イベントの発生を通知できます。

例えばSimple Storage Service(S3)と統合すると、バケット内で何らかの変更(データが追加・削除された、復元が完了したなど)があった時に通知がSNSに送られ、そこから各デバイスへ一斉配信されます。

このように、リソースで変更があれば素早く知らせてくれるようになり、状況確認や管理に役立てられます。

上記で述べたS3の他、Elastic Compute Cloud(EC2)、Elastic Beanstalk、DynamoDB、CodeDeploy、VPCなど、統合先は豊富に存在します。詳しくは公式ページをご覧ください。

特徴6:世界各国のSMSに発信できる

SNSは、世界各国のSMSにテキストメッセージを発信できます。ワールドワイドSMSとも呼ばれます。

200以上の国に対応しており、Apple、AndroidなどのモバイルプッシュやEメールを使って直接ユーザーに通知を送れます。

注意点として、国によっては法律で何らかの規制が敷かれていることがあります。その場合、事前に受信者から許可を得ておく必要性が生じます。

AWS SNSのメッセージをSlackに送信する方法


この項目では、AWS SNSのメッセージをSlackに送信する方法についてご紹介します。

Lambda関数を使用する方法とAWS Chatbotを使用する方法の2種類がありますが、ここでは後者について説明していきます。公式のウェブマガジンにチュートリアルがあるので、合わせてご覧ください。

AWS Chatbotとは

Chatbotは、SlackやAmazon ChimeにおけるAWSリソースの操作をサポートするサービスです。

AWSリソースのイベント通知、診断情報の取得などが実行できます。また、従来のLambda関数と比較して、AWSとSlackの接続を簡単に実装できます。

注意点として、一部のリソースはChatbotに未対応です。それらを扱う時は、Chatbotではなく従来のLambda関数で実装する必要があります。

操作手順

ここでは、Chatbotを使ってSNSからSlackにメッセージを送信する手順を説明します。

トピックの作成→Chatbotの設定→Slack、アクセス許可、通知の設定の3ステップを踏んだ後、実際にメッセージを投稿します。

SNSトピックを作成

SNSでトピックを作成します。

作成完了後、リソースでイベントが発生すれば、そのトピックへメッセージを送るように設定します。使用するリソースがChatbotに対応しているかを確認しておきましょう。

トピックの作成手順については、公式ドキュメントをご覧ください。

ChatbotでSlackを選択

Chatbotの作成画面に入り、クライアントにSlackを選択します。

ChatbotをSlackへ接続するには、アクセス許可が必要です。クライアントを選択すると設定画面が出るので、ここでアクセス可能な範囲を指定して権限を付与します。

Slackのチャネル、アクセス許可、通知を設定

次に、Slackチャネル、アクセス許可、通知の設定を行います。

チャネル設定では、Slackのどのチャネルに通知を送るかを指定します。アクセス許可では、Identity and Access Management(IAM)ロールを指定して通知やLambda呼び出しコマンドなどのアクセス権限を設定します。

通知設定では、どのSNSトピックから通知を受け取るかを指定します。これらを実行すれば、セットアップは完了です。

メッセージを投稿

セットアップが完了したら、実際にメッセージを投稿します。

SNSトピックにメッセージを送ると、その内容がSlackに投稿されます。成功しているかどうか確認してみましょう。

AWS SNSの料金


AWS SNSの料金は、トピックの種類やリージョンなどによって異なります。

例として、東京リージョンで標準トピックを使用した場合、APIリクエスト100万件につき0.5USD(≒約52.5円)の料金が発生します。無料利用枠があり、月100万件までは無料で使用できます。

無料利用枠の範囲も種類によって異なります。詳しくは公式ページの料金表をご覧ください。

出典:Amazon SNS の料金
参照:https://aws.amazon.com/jp/sns/pricing/

AWS SNSを活用してみよう


この記事では、AWS SNSの特徴とSlackでの使用方法についてご紹介しました。

クラウドから発せられたメッセージを素早く大量に配信し、それをさまざまなデバイスで受け取れます。受信可能なデバイスの一つにSlackがあり、Chatbotを経由することで簡単にAWSと接続できます。

情報伝達や運用管理など、幅広い活用方法があります。無料利用枠もあるので、手軽に試してみましょう。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】