emahiro/b.log

日々の勉強の記録とか育児の記録とか。

Lambda -> 各種 AWS へのアクセスで権限エラーが発生した場合の調査方法

これは何

Lambda から AWS のリソースに触るときに権限なしエラーが発生したときの調査でいつも手間取るのでその備忘録です。

config ファイルの iamRoleStatements ディレクティブを確認する

大体これで解決します。基本的にはコールしたい API のアクションがあるときには指定したアクションと権限をアタッチしない ARN が指定されていないことが多いのでその指定をします。

例えば SQS に必要な権限については以下のページにまとめられる。

docs.aws.amazon.com

コンソールから割り当てられてる権限を見る

Lambda のコンソールを開いて設定 > アクセス権限から確認しに行きます。
下の画像の部分のリンクです。

f:id:ema_hiro:20220203020148p:plain

まとめ

権限周りでこけるとつらい。

その他

Lambda から SQS の SendMessage の権限追加でハマった話

すでに解決済みではあるんですが、以下のように複数のポリシーをアタッチする際に一向にポリシーが作られない、ということがありました。

  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "sqs:SendMessage"
      Resource:
        - A
        - B

何度やっても複数設定してると作られなかったので一旦一つだけ作ってみて後から複数設定にしたら無事に作られました。明らかに挙動としては謎挙動だったのでめちゃくちゃハマりました。実際に以下の設定をやってから上記の複数設定したら解決したので、タイミングなのか Severless framework 側の問題っぽさがあります。

  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "sqs:SendMessage"
      Resource: A