これは何
Lambda から AWS のリソースに触るときに権限なしエラーが発生したときの調査でいつも手間取るのでその備忘録です。
config ファイルの iamRoleStatements ディレクティブを確認する
大体これで解決します。基本的にはコールしたい API のアクションがあるときには指定したアクションと権限をアタッチしない ARN が指定されていないことが多いのでその指定をします。
例えば SQS に必要な権限については以下のページにまとめられる。
コンソールから割り当てられてる権限を見る
Lambda のコンソールを開いて設定 > アクセス権限から確認しに行きます。
下の画像の部分のリンクです。
まとめ
権限周りでこけるとつらい。
その他
Lambda から SQS の SendMessage の権限追加でハマった話
すでに解決済みではあるんですが、以下のように複数のポリシーをアタッチする際に一向にポリシーが作られない、ということがありました。
iamRoleStatements: - Effect: "Allow" Action: - "sqs:SendMessage" Resource: - A - B
何度やっても複数設定してると作られなかったので一旦一つだけ作ってみて後から複数設定にしたら無事に作られました。明らかに挙動としては謎挙動だったのでめちゃくちゃハマりました。実際に以下の設定をやってから上記の複数設定したら解決したので、タイミングなのか Severless framework 側の問題っぽさがあります。
iamRoleStatements: - Effect: "Allow" Action: - "sqs:SendMessage" Resource: A