⚡
【AWS SAM】AuthorizationError: ポリシーが効かない場合に確認する設定
AWS StepFunctions や、AWS Labmda を AWS SAM から利用する場合、SAM policy templatesを利用して リソースにポリシーを設定することができます。
しかし、リソースの設定が間違っていてうまく実行ロールに権限が付与できず、エラーになってしまう場合がありましたので調査しました。
ポイント
- リソースのARNが必要か、名前などの単なる値が必要かが異なる。
例: LambdaからSNSのトピック発行する場合
NG な書き方
エラー
Resources:
HogeTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: fuga-fuga
HogeLambda:
Type: AWS::Serverless::Function
Properties:
Policies:
- SNSPublishMessagePolicy:
+ TopicName: !Ref HogeTopic
OK な書き方
TopicName
プロパティでの指定が必要です。
OK
Resources:
HogeTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: fuga-fuga
HogeLambda:
Type: AWS::Serverless::Function
Properties:
Policies:
- SNSPublishMessagePolicy:
+ TopicName: !GetAtt HogeTopic.TopicName
リソースによって正解は異なる
DynamoDBの場合は、リソースを指定します。
Policies:
- DynamoDBCrudPolicy:
+ TableName: !Ref HogeTable
ARNが必要か、値が必要か
ポリシーによって、
- リソースのARNが必要か
- あるいは名前などの単なる値が必要か
が異なりますのでエラーが出る場合はあらためてドキュメントを確認すべきでしょう。
Discussion