IAMロールを作成する
AWS Lambdaでは、Lambda関数として実行するコードをJavaScriptで書きます。このLambda関数の実行にあたり、IAMロールを作成する必要があります。
IAMロール! Amazon S3のゲストユーザーに権限を与えるために作成したアレですね[1]。
IAMロールにはLambda関数が処理を実行するために必要な権限を与えます。今回は、Lambda関数を起動する権限とAmazon Kinesisからデータを取得する権限、Lambda関数内でログを出力し、Amazon DynamoDBに集計値を書き込むので、そのための権限を設定します。
はい。
マネージメントコンソール[2]で「Administration & Security」の「Identity & Access Management」を選択します。
[Roles]を選択して、[Create New Role]をクリックしてください。
[Role Name]にIAMロール名を入力して[Next Step]をクリックします。
[Select Role Type]では、「AWS Service Roles」を選択し、「AWS Lambda」の[Select]をクリックしてください。
はい、クリック。あ、ポリシーがたくさん表示されました。
ロールの一覧にIAMロールが追加されてます。
続いて、作成したIAMロールを選択し、詳細画面を開いてください。[Permissions]の[Inline Policies]をクリックして開きます。その中に記載されている[click here]とあるリンクをクリックします。
[Set Permissions]では[Policy Generator]を選択して[Select]をクリックします。
[Edit Permissions]で、どのリソースにどのようなアクションを許可するかを設定していきます。
まず、Amazon Kinesisです。
- [Effect]では[Allow]
- [AWS Service]では「Amazon Kinesis」
- [Actions]では「DescribeStream」「ListStreams」「GetShardIterator」「GetRecords」
を選択し、[Amazon Resource Name (ARN) ]は作成したストリーム名をARN形式(arn:aws:kinesis:<リージョン名>:<アカウントID>:stream/<ストリーム名>)で指定します。最後に[Add Statement]をクリックしてください。
同様の手順で、Amazon DynamoDBへの書き込みを許可する設定を行います。
- [Effect]では[Allow]
- [AWS Service]では「Amazon DynamoDB」
- [Actions]では「PutItem」「UpdateItem」
を選択し、[Amazon Resource Name (ARN) ]は作成したテーブル名をARN形式(arn:aws:dynamodb:<リージョン名>:<アカウントID>:table/<ストリーム名>)で指定し、[Add Statement]をクリックしてください。
続いて、「Lambda関数の実行権限」と「Lambda関数内からのログ出力のための権限」を追加します。
まず、以下のようにします。
- [Effect]では[Allow]
- [AWS Service]では「AWS Lambda」
- [Actions]では「InvokeFunction」
- [Amazon Resource Name (ARN) ]は「*」
[Add Statement]をクリックして追加したら、続けて、
- [Effect]では[Allow]
- [AWS Service]では「Amazon CloudWatch Logs」
- [Actions]では「CreateLogGroup」「CreateLogStream」「PutLogEvents」
- [Amazon Resource Name (ARN) ]は「*」
として、[Add Statement]をクリックします。最後に[Next Step]をクリックします。
[Review Policy]の画面では、選択した内容をもとにしたポリシーが作成されています。その内容を確認して、[Apply Policy]をクリックします。
はい。できました!