
はじめに
こんにちは、クラウド事業部の坂口です。
先日 AWS CloudFormation での Amazon SNS (Simple Notification Service) のリソースタイプを眺めていたのですが、
SNSトピックポリシーに関連するリソースタイプが以下の2つあることにめちゃめちゃ今更気づきました。
- AWS::SNS::TopicInlinePolicy
- AWS::SNS::TopicPolicy
よくよく見ると違いは単純だったのですが、せっかくなのでブログとして残しておこうと思います。
※眺めていた AWS CloudFromation のAWSドキュメントページはこちら↓

目次
結論
手っ取り早く、結論だけ書くと
とれる対象が 1対1 か 1対複数 か の違いです。
AWS::SNS::TopicInlinePolicy では特定のトピックに対してのみトピックポリシーを適用するのに対して、
AWS::SNS::TopicPolicy では複数のトピックに共通のトピックポリシーを適用できます。
これはそれぞれのAWSドキュメントでもちゃんと書かれていて、
(リソース定義)
Type: AWS::SNS::TopicInlinePolicy Properties: PolicyDocument: Json TopicArn: String
(プロパティ)
TopicArn
The Amazon Resource Name (ARN) of the topic to which you want to add the policy.
︙
Type: String
(リソース定義)
Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Json Topics: - String
(プロパティ)
Topics
The Amazon Resource Names (ARN) of the topics to which you want to add the policy. You can use the Ref function to specify an AWS::SNS::Topic resource.
︙
Type: Array of String
AWS::SNS::TopicInlinePolicy では TopicArnプロパティ で Topic の ARN を指定するのに対して、
AWS::SNS::TopicPolicy では Topicsプロパティ で Topic の ARN を複数個リストで指定できるようになっています。
後者はプロパティの説明含めてばっちり複数形ですね!
捕捉なり確認なり
さて、以降は補足やついでで確認した内容をつらつらと記載していきます。
そもそもSNSトピックポリシーとは
SNSトピックポリシーは、トピックに対して、誰が Publish(発行) や Subscribe(購読) をしてよいか を定義しています。
いわゆる「リソースベースポリシー」です。
SNSトピックポリシーは、例えば以下のような用途などの時に必要になってきます。
- クロスアカウントで接続したいとき:トピックポリシーで、外部のAWSアカウントからのアクセスを許可する
- AWSサービスと連携したいとき:トピックポリシーで、例えばEventBridgeからメッセージを受け取るためのアクセスを許可する
AIに聴いてみた
せっかくなので、AWS::SNS::TopicInlinePolicy と AWS::SNS::TopicPolicy の違いについてAI (Gemini) にも聴いてみました。
※黒塗りしている箇所は、ついでに AWS::SNS::Topic の DataProtectionPolicyプロパティ について解説を求めていました。今回はノイズになるので黒塗りしています

Gemini くん ...。
AWS::SNS::TopicInlinePolicy はいつ頃追加されたの?
AWS::SNS::TopicInlinePolicy が新しいリソースとして追加されたのは、CloudFroamtionのAWSドキュメント上では 2023年8月2日 らしいです。
(Document history より)

あくまでリリースではなくドキュメントでの更新情報ですが、時期的には大体この辺に使えるようになったんだと思います。
おわりに
今回は、AWS CloudFormationでの AWS::SNS::TopicInlinePolicy と AWS::SNS::TopicPolicy について記載しました。
IaCといっても、最近はなかなかCloudFormationテンプレートでリソースを定義する機会は減ってきているかもしれませんが、ふとした時にパッと確認できる情報があったら嬉しい気がしたので書いてみています。
この記事がどなたかの参考になれば幸いです。
それではご機嫌なAWSライフを!
お知らせ
私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。
https://www.ap-com.co.jp/service/utilize-aws/
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。