CloudFormationで値がjson型の場合の書き方でハマったので、そのときの解決した書き方を残しておく。
SNSのポリシードキュメントを書くときにjson型となっていたので、インラインでyaml内にjson形式でポリシーを書いたらエラーになった。
Type: AWS::SNS::TopicInlinePolicy
Properties:
PolicyDocument: Json
TopicArn: String
実際の書き方は↓になる。
Type: AWS::SNS::TopicInlinePolicy
Properties:
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
AWS: "*"
Action:
- "SNS:GetTopicAttributes"
- "SNS:SetTopicAttributes"
- "SNS:AddPermission"
- "SNS:RemovePermission"
- "SNS:DeleteTopic"
- "SNS:Subscribe"
- "SNS:ListSubscriptionsByTopic"
- "SNS:Publish"
Resource: !Sub "arn:aws:sns:ap-northeast-1:${AWS::AccountId}:${MySNSTopic}"
Condition:
StringEquals:
"AWS:SourceOwner": !Sub ${AWS::AccountId}