bokunonikki.net

serverless framework(AWS)で複数のiam Resourceを設定する

Wed May 11, 2022
Wed May 11, 2022
aws

AWSのIAMポリシーのResourceを複数同時にserverless framework設定したい。

通常はymlで書くことが多いと思いますが、意外にどうやって書いたらいいのかはわからなかったのでメモ。こういう時はTerraformの方が便利じゃないとも思ってしまう。

Data Source: aws_iam_policy_document

理想は、こんな感じで展開できれば良い。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
    "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"
        }
    ]
}

で、どう書くかというと。こう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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はカスタムの変数が自在にいい感じで使えるので、ここら辺は便利ですね。

See Also