AWSのIAMポリシーのResource
を複数同時にserverless framework
設定したい。
通常はyml
で書くことが多いと思いますが、意外にどうやって書いたらいいのかはわからなかったのでメモ。こういう時はTerraform
の方が便利じゃないとも思ってしまう。
Data Source: aws_iam_policy_document
理想は、こんな感じで展開できれば良い。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"quicksight:GetDashboardEmbedUrl"
],
"Resource": [
"arn:aws:quicksight:ap-southeast-1:123456:dashboard/a",
"arn:aws:quicksight:ap-southeast-1:654123:dashboard/b"
],
"Effect": "Allow"
}
]
}
で、どう書くかというと。こう。
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- quicksight:GetDashboardEmbedUrl
Resource:
[
!Sub "arn:aws:quicksight:${AWS::Region}:${AWS::AccountId}:dashboard/${self:custom.a}",
!Sub "arn:aws:quicksight:${AWS::Region}:${AWS::AccountId}:dashboard/${self:custom.a}"
]
serverless framework
はカスタムの変数が自在にいい感じで使えるので、ここら辺は便利ですね。