CloudFormation で SNS トピックを作成する
CloudFormation スタック内に SNS トピックを生成するには、CloudFormation テンプレートで AWS::SNS::Topic というタイプのリソースを定義します。
このリソースのプロパティはすべてオプショナル(省略可能)なので、最低限のリソース定義は次のようになります。
トピック名 (Properties.TopicName
) すら指定していませんが、その場合は、CloudFormation のスタック名と、トピックの論理 ID(上記の場合は MyTopic
)の組み合わせから、自動的にトピック名が割り当てられるようになっています(例: mystack-MyTopic-WMD9B9WWLEXN
)。
上記のテンプレートから CloudFormation スタックを生成するには、AWS CLI を使って次のように実行します。
無事スタックが生成されたら、次のようにして生成された SNS トピックの物理 ID (ARN) を調べることができます。
Lambda 関数や S3 バケットから SNS トピックに対して publish するときは、この ARN を指定することになります。
SNS トピックの設定いろいろ
トピック名 (TopicName)
トピック名の生成を CloudFormation に任せるのではなく、明示的にトピック名を指定する方法です。
上記のように TopicName
プロパティを指定すると、SNS トピックの ARN は次のようになります。
FIFO トピック (FifoTopic)
FIFO トピックとして作成するには、FifoTopic
プロパティを true に設定します。
FIFO トピックを作るときは、TopicName
で明示的に .fifo
で終わる名前を付けないと、次のようなエラーになるみたいです。
ほんと AWS はこういうところが分かりにくすぎる。。。
タグ (Tags)
SNS トピックにタグを付けたいときは、Tags
プロパティで次のように指定します(他のリソースでタグを設定する場合も同様です)。