1日1%成長する

AWSの学習メモ

memo

Amazon Simple Notification Service (SNS)

必要になった背景:
    -> システムが密結合してると管理しづらい
        -> 疎結合のサービスへ

    -> ただ、疎結合の場合は各処理が連携元に新しい処理を受け付けたかどうかの確認(ポーリング)
      をする必要が出てきた。

    -> これを中央から各処理へメッセージで一括送信する仕組み(fan out)で対応
        -> Amazon SNS


fan outの実現 => publish-subscribe(pub-sub)
    publisher:subscriberの存在は意識せず、メッセージをtopicへ投げる
    subscriber:購読したいtopicを選んでメッセージを購読する

    -> pub,subともにtopicのみ知っている状態
    -> 非同期のメッセージングモデル

    topic:pub subの間に立つことで疎結合を保つ
    -> オーナーが管理

Amazon SNSの機能
    - Mobile Push
        - セグメント毎のpushはAmazon pinpointの方が新しくそちらで網羅されているものもある
    - pub-sub
        - 通知もできるが、分散アプリの統合用途でも可能

awsのサービスがpublisherとして機能できる:
    cloudwatch events、step functions、api gateway、
    management console、command line interface、sdks、s3...etc

awsのサービスがsubscribeとして機能できる:
    lambda、sqs...etc

配信プロトコルなど
    http/https、email、sqs、lambda、platform application endpoint、sms

アクセスコントロール
    effect:allowでprincipalのarnを指定する
    ActionでSubscribeとかを指定する
    Resourceで対象のtopicのarnを指定する

{
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:~user/mike"
    },
    "Action": [
        "SNS:Subscribe",
        "SNS:ListSubscriptionsByTopic",
        "SNS:Receive"
    ],
    "Resource": "arn~:BBtopic"
}

    mikeはBBtopicにSubscribe可能

FilterPolicyでSubscribe可能
Topicでエンドポイントのプロトコルで分けることが可能