APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【AWS】"AWS::SNS::TopicPolicy" と "AWS::SNS::TopicInlinePolicy" の違いをちゃんと知っておきたい

はじめに

こんにちは、クラウド事業部の坂口です。

先日 AWS CloudFormation での Amazon SNS (Simple Notification Service) のリソースタイプを眺めていたのですが、

SNSトピックポリシーに関連するリソースタイプが以下の2つあることにめちゃめちゃ今更気づきました。

  • AWS::SNS::TopicInlinePolicy
  • AWS::SNS::TopicPolicy

よくよく見ると違いは単純だったのですが、せっかくなのでブログとして残しておこうと思います。


※眺めていた AWS CloudFromation のAWSドキュメントページはこちら↓

docs.aws.amazon.com

目次


結論

手っ取り早く、結論だけ書くと

とれる対象が 1対1 か 1対複数 か の違いです。


AWS::SNS::TopicInlinePolicy では特定のトピックに対してのみトピックポリシーを適用するのに対して、

AWS::SNS::TopicPolicy では複数のトピックに共通のトピックポリシーを適用できます。


これはそれぞれのAWSドキュメントでもちゃんと書かれていて、


<AWS::SNS::TopicInlinePolicy>

(リソース定義)

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


<AWS::SNS::TopicPolicy>

(リソース定義)

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のご支援をしております。

www.ap-com.co.jp

https://www.ap-com.co.jp/service/utilize-aws/

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp

本記事の投稿者: さかぐち
AWSをメインにインフラ系のご支援を担当しています。 OCIにも少しずつ手を出し中。