私のようなAWS初心者がLambdaを使い始めると、こんな風↓にLambdaからDynamoDBへのアクセスが拒否されることがある。
エラー文が画像では見にくいので書き下したものが次である。
An error occurred (AccessDeniedException) when calling the GetItem operation
LambdaからDynamoDBにある情報を取得しようとしたらアクセスが拒否された、というエラー内容だ。
私の場合、次のようにしたらアクセスできるようになった。
AWSコンソールでLambdaの画面を開き、「実行ロール」の「ロール名」に表示されているリンクをクリックする。
「ポリシーをアタッチします」ボタンをクリックする。
ポリシーのフィルタの検索窓に dynamodb と書くと、DynamoDBに関するアクセス権限が一覧表示される。
製品を開発するときは本当はLambdaからDynamoDBへのどんな操作を許可するのかをきちんと考えて、
それに合う権限のみを付与すべきなんだけど、
まだAWS入門者で練習として実装している私はここでは
AmazonDynamoDBFullAccess(訳:DynamoDBに何でもできちゃう)
にチェックを入れ、「ポリシーのアタッチ」ボタンをクリックした。
良い子のみんなは真似しちゃだめだぞ。
次の画面のようにきちんとポリシーが追加されたことを確認する。
ここまでできたらLambdaからDynamoDBにアクセスできるようになっているはずなので、
Lambdaの「テスト」などで処理を実行して確認してみよう。