AWSのクロスアカウントでSNSを使う

AWSアカウントを複数使っているけど、SNSは一元管理したい・・・よね?

もちろんAWSCLIを実行するときに直接アクセスキー、シークレットキーを指定すればできるわけですが、
AWS的にはそういったものをサーバー内に配置するのはNGとなっており、IAMのロールをインスタンスに付与してくれってことのようです。

で、その場合別アカウントのSNSは通常実行できません。
あくまでそのアカウントのSNSに対する許可でしかないため、別アカウントは当然実行できないわけです。
IAMロールをクロスアカウントすることも可能ですが、SSMとかCloudWatchエージェントもあるのでそれは微妙です。

そこでSNSには以下のコマンドが用意されており、
トピックごとにアクションを実行権限を付与することが可能です。

https://docs.aws.amazon.com/cli/latest/reference/sns/add-permission.html

アカウントalpahからアカウントbetaのSNSトピックalertを叩きたいときは以下
※ label はなんでもいい

aws sns --profile {beta} add-permission --label sns-publish --aws-account-id {alphaのID} \
--topic-arn arn:aws:sns:ap-northeast-1:{betaのID}:alert \
--action-name Publish 

参考 https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-sns-example.html