AWS Lambda 実行ロール - AWS Lambda

AWS Lambda 実行ロール

Lambda 関数の実行ロールは、AWS サービスおよびリソースにアクセスする許可を関数に付与する AWS Identity and Access Management (IAM) ロールです。関数を作成する際にこのロールを指定すると、関数が呼び出されたときにLambda がこのロールを引き受けます。Amazon CloudWatch にログを送信し、トレースデータを AWS X-Ray にアップロードするためのアクセス許可をもつ、開発用の実行ロールを作成できます。

関数の実行ロールを表示するには

  1. Lambda コンソールで [Functions (関数)] ページを開きます。

  2. 関数を選択します。

  3. [設定] を選択して、[アクセス許可] を選択します。

  4. [リソースの概要] で、関数がアクセスできるサービスとリソースを確認します。

  5. ドロップダウンリストからサービスを選択すると、そのサービスに関連するアクセス許可が表示されます。

アクセス許可は、関数の実行ロールからいつでも追加または削除できます。または、別のロールを使用するように関数を設定することもできます。AWS SDK で関数を使用して呼び出すサービスや、オプションの機能を有効にするために Lambda で使用するサービス用のアクセス許可を追加します。

関数にアクセス許可を追加する場合は、そのコードまたは設定も更新します。これにより、認証情報が古くなっている、関数の実行中のインスタンスが強制的に停止され置き換えられます。

IAM コンソールでの実行ロールの作成

デフォルトでは、Lambda コンソールで関数を作成するときに、Lambda により最小限のアクセス許可で実行ロールが作成されます。IAM コンソールで実行ロールを作成することもできます。

IAM コンソールで実行ロールを作成するには

  1. IAM コンソールの [Roles (ロール)] ページを開きます。

  2. [ロールの作成] を選択します。

  3. [一般的なユースケース] で、[Lambda] を選択します。

  4. [Next: Permissions (次へ: アクセス許可)] を選択します。

  5. [アクセス許可ポリシーのアタッチ] で、[AWSLambdaBasicExecutionRole] および [AWSXRayDaemonWriteAccess] AWS 管理ポリシーを選択します。

  6. [次へ: タグ] を選択します。

  7. [Next: Review] を選択します。

  8. [ロール名] に「lambda-role」と入力します。

  9. [ロールの作成] を選択します。

詳しい手順については、IAM ユーザーガイドAWS サービスのロールの作成 (コンソール) を参照してください。

Lambda 実行ロールへの最小権限アクセスを付与する

デプロイのフェーズで Lambda 関数の IAM ロールを初めて作成するときに、必要な範囲を超えたアクセス権限を付与することがあります。本番環境に関数を公開する前に、必要なアクセス許可のみを含めるようポリシーを調整することをお勧めします。詳細については、最小権限を付与するを参照してください。

IAM 実行ロールポリシーに必要なアクセス権限を確認するときは、IAM Access Analyzer を使用します。IAM Access Analyzer は、指定した日付範囲で AWS CloudTrail ログを確認し、その期間中に関数が使用したアクセス許可のみを持つポリシーテンプレートを生成します。このテンプレートを使用することで、きめ細かなアクセス権限で管理ポリシーを作成し、それを IAM ロールにアタッチすることができます。これにより、特定のユースケースでロールが AWS リソースとインタラクションするために必要なアクセス権限のみを付与します。

詳細については、IAM ユーザーガイドの「アクセスアクティビティに基づいてポリシーを生成する」を参照してください。

IAM API によるロールの管理

AWS Command Line Interface (AWS CLI) を使用して実行ロールを作成するには、create-role コマンドを使用します。

次の例では、信頼ポリシーをインラインで指定しています。JSON 文字列で引用符をエスケープするための要件は、シェルに応じて異なります。

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

また、JSON ファイルを使用してロールの信頼ポリシーを定義することもできます。次の例では、trust-policy.json は現在のディレクトリにあるファイルです。この信頼ポリシーは、AWS Security Token ServiceAssumeRole アクションを呼び出すためのサービスプリンシパルの lambda.amazonaws.com アクセス許可を与えることで、Lambda がロールのアクセス許可を使用できるようにします。

例 trust-policy.json

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json

次のような出力が表示されます。

{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

ロールにアクセス許可を追加するには、attach-policy-to-role コマンドを使用します。AWSLambdaBasicExecutionRole マネージドポリシーを追加して開始します。

aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Lambda 機能の AWS マネージドポリシー

次の AWS マネージドポリシーは、Lambda の機能を使うために必要なアクセス許可を付与します。

  • AWSLambdaBasicExecutionRole - ログを CloudWatch にアップロードするためのアクセス許可。

  • AWSLambdaDynamoDBExecutionRole - Amazon DynamoDB ストリームからレコードを読み取るためのアクセス許可。

  • AWSLambdaKinesisExecutionRole - Amazon Kinesis データストリームまたはコンシューマーからイベントを読み取るためのアクセス許可。

  • AWSLambdaMQExecutionRole - Amazon MQ ブローカーからレコードを読み取るためのアクセス許可。

  • AWSLambdamskExecutionRole— Amazon Managed Streaming for Apache Kafka (Amazon MSK) クラスターからレコードを読み取るアクセス許可。

  • AWSLambdasqsqueueExecutionRole — Amazon Simple Queue Service (Amazon SQS) キューからメッセージを読み取るためのアクセス許可。

  • AWSLambdaVPCAccessExecutionRole - 関数を Virtual Private Cloud (VPC) に接続するように Elastic Network Interface を管理するためのアクセス許可。

  • AWSXRayDaemonWriteAccess - トレースデータを X-Ray にアップロードするためのアクセス許可。

  • CloudWatchLambdaInsightsExecutionRolePolicy - ランタイムメトリクスを CloudWatch Lambda インサイトに書き込むためのアクセス許可。

  • AmazonS3ObjectLambdaExecutionRolePolicy — Amazon S3 Object Lambda と対話するためのアクセス許可。

一部の機能では、Lambda コンソールは、カスタマーマネージドポリシーの実行ロールに対して、不足しているアクセス許可を追加しようとします。これらのポリシーは数が増える可能性があります。余分なポリシーを作成しないように、機能を有効にする前に関連する AWS 管理ポリシーを実行ロールに追加します。

イベントソースマッピングを使用して関数を呼び出すと、Lambda は実行ロールを使用してイベントデータを読み出します。例えば、Kinesis のイベントソースマッピングでは、データストリームからイベントを読み出し、バッチで関数に送信します。イベントソースマッピングが使用可能なサービスは、次のとおりです。

Lambda コンソールには、AWS マネージドポリシーに加えて、追加のユースケース用のアクセス許可を含むカスタムポリシーを作成するためのテンプレートが用意されています。Lambda コンソールで関数を作成する際、1 つ以上のテンプレートのアクセス許可を使用して新しい実行ロールを作成することを選択できます。これらのテンプレートは、設計図から関数を作成する場合、または他のサービスへのアクセスを必要とするオプションを設定する場合にも自動的に適用されます。サンプルテンプレートは、本ガイドの GitHub リポジトリから入手できます。