メニュー
AWS Lambda
開発者ガイド

AWS Lambda コンソールを使用するために必要なアクセス権限

AWS Lambda コンソールが提供する統合された操作性の利点を生かすためには、ユーザーに許可する操作によって、リファレンステーブルに記述された API 固有アクセス権限よりも多くのアクセス権限をユーザーが持つ必要があることが多くあります。Lambda API オペレーションの詳細については、「Lambda API のアクセス権限: アクション、リソース、条件リファレンス」を参照してください。

たとえば、アカウントの IAM ユーザーに、Lambda 関数を作成し Amazon S3 オブジェクト作成イベントを処理するアクセス権限を許可するとします。ユーザーが Amazon S3 をイベントソースとして設定できるように、コンソールのドロップダウンリストにバケットのリストが表示されます。ただし、コンソールにバケットリストが表示されるのは、サインインユーザーが関連 Amazon S3 アクションのアクセス権限を持つ場合のみです。

以下のセクションでは、さまざまな統合ポイントで必要とされる追加のアクセス権限について説明します。統合ポイントについては、「仕組み」を参照してください。

アクセス権限を初めて管理する場合は、IAM ユーザーの作成、ユーザーへの段階的なアクセス権限の付与、AWS Lambda コンソールを使用したアクセス権限の確認を行うウォークスルー例から開始することをお勧めします (「お客様が管理するポリシーの例」を参照)。

注記

これらのアクセス権限ポリシーはすべて、特定の AWS サービスに Lambda 関数を呼び出すアクセス権限を付与します。この統合を設定するユーザーには、Lambda 関数を呼び出すアクセス権限が必要です。そうしないと、ユーザーが構成を設定することはできません。ユーザーにこれらのアクセス権限を提供するために、AWSLambdaRole を AWS が管理する (定義済みの) アクセス権限ポリシーに添付できます。

Amazon API Gateway

コンソールで API エンドポイントを設定すると、コンソールはいくつかの API ゲートウェイ API コールを行います。この呼び出しには、以下のように apigateway:* アクションのためのアクセス権限が必要です。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ApiGatewayPermissions", "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": "*" }, { "Sid": "AddPermissionToFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission", "lambda:GetPolicy" ], "Resource": "arn:aws:lambda:region:account-id:function:*" }, { "Sid": "ListEventSourcePerm", "Effect": "Allow", "Action": [ "lambda:ListEventSourceMappings" ], "Resource": "*" } ] }

Amazon CloudWatch Events

Lambda 関数をいつ呼び出すかスケジュールできます。既存の CloudWatch イベント ルールが選択 (または新規作成) されると、AWS Lambda は新しいターゲットを Lambda 関数を呼び出す CloudWatch に作成します。ターゲットが作成できるように、次のアクセス権限を追加で付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EventPerms", "Effect": "Allow", "Action": [ "events:PutRule", "events:ListRules", "events:ListRuleNamesByTarget", "events:PutTargets", "events:RemoveTargets", "events:DescribeRule", "events:TestEventPattern", "events:ListTargetsByRule", "events:DeleteRule" ], "Resource": "arn:aws:events:region:account-id:*" }, { "Sid": "AddPermissionToFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission", "lambda:GetPolicy" ], "Resource": "arn:aws:lambda:region:account-id:function:*" } ] }

Amazon CloudWatch Logs

Amazon CloudWatch Logs サービスでイベントを発行し、Lambda 関数を呼び出すことができます。イベントソースとしてこのサービスを設定すると、コンソールでアカウントのロググループがリストされます。このリスト作成を実行するには、次のように logs:DescribeLogGroups アクセス権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPerms", "Effect": "Allow", "Action": [ "logs:FilterLogEvents", "logs:DescribeLogGroups", "logs:PutSubscriptionFilter", "logs:DescribeSubscriptionFilters", "logs:DeleteSubscriptionFilter", "logs:TestMetricFilter" ], "Resource": "arn:aws:logs:region:account-id:*" }, { "Sid": "AddPermissionToFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission", "lambda:GetPolicy" ], "Resource": "arn:aws:lambda:region:account-id:function:*" }, { "Sid": "ListEventSourceMappingsPerms", "Effect": "Allow", "Action": [ "lambda:ListEventSourceMappings" ], "Resource": "*" } ] }

注記

これらの追加のアクセス権限は、サブスクリプションフィルタの管理に必要です。

Amazon Cognito

コンソールには、アカウントの ID プールが表示されます。プールを選択すると、イベントソースタイプとして [Cognito sync trigger] を持つようにプールを設定できるようになります。これを行うには、次の追加アクセス権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CognitoPerms1", "Effect": "Allow", "Action": [ "cognito-identity:ListIdentityPools" ], "Resource": [ "arn:aws:cognito-identity:region:account-id:*" ] }, { "Sid": "CognitoPerms2", "Effect": "Allow", "Action": [ "cognito-sync:GetCognitoEvents", "cognito-sync:SetCognitoEvents" ], "Resource": [ "arn:aws:cognito-sync:region:account-id:*" ] }, { "Sid": "AddPermissionToFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission", "lambda:GetPolicy" ], "Resource": "arn:aws:lambda:region:account-id:function:*" }, { "Sid": "ListEventSourcePerms", "Effect": "Allow", "Action": [ "lambda:ListEventSourceMappings" ], "Resource": "*" } ] }

Amazon DynamoDB

コンソールには、アカウントのすべてのテーブルが表示されます。テーブルを選択すると、コンソールは DynamoDB ストリームがそのテーブルで存在するかどうかを確認します。存在しない場合は、ストリームが作成されます。ユーザーが Lambda 関数のイベントソースとして DynamoDB ストリームを設定できるようにするには、次の追加のアクセス権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DDBpermissions1", "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:DescribeTable", "dynamodb:UpdateTable" ], "Resource": "arn:aws:dynamodb:region:account-id:table/*" }, { "Sid": "DDBpermissions2", "Effect": "Allow", "Action": [ "dynamodb:ListStreams", "dynamodb:ListTables" ], "Resource": "*" }, { "Sid": "LambdaGetPolicyPerm", "Effect": "Allow", "Action": [ "lambda:GetPolicy" ], "Resource": "arn:aws:lambda:region:account-id:function:*" }, { "Sid": "LambdaEventSourcePerms", "Effect": "Allow", "Action": [ "lambda:CreateEventSourceMapping", "lambda:DeleteEventSourceMapping", "lambda:GetEventSourceMapping", "lambda:ListEventSourceMappings", "lambda:UpdateEventSourceMapping" ], "Resource": "*" } ] }

重要

Lambda 関数が DynamoDB ストリームから読み取るには、Lambda 関数に関連付けられた実行ロールに正しいアクセス権限が必要です。そのため、ユーザーは、実行ロールにアクセス権限を付与する前に、同じアクセス権限を持っている必要があります。これらのアクセス権限は AWSLambdaDynamoDBExecutionRole 事前定義済みポリシーをまずユーザーに、次に実行ロールに添付することで付与できます。

Amazon Kinesis Streams

コンソールには、アカウントのすべての Kinesis ストリームが表示されます。ストリームを選択すると、コンソールで AWS Lambda にイベントソースマッピングを作成できるようになります。この処理を行うには、次の追加アクセス権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionForDescribeStream", "Effect": "Allow", "Action": [ "kinesis:DescribeStream" ], "Resource": "arn:aws:kinesis:region:account-id:stream/*" }, { "Sid": "PermissionForListStreams", "Effect": "Allow", "Action": [ "kinesis:ListStreams" ], "Resource": "*" }, { "Sid": "PermissionForGetFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:GetPolicy" ], "Resource": "arn:aws:lambda:region:account-id:function:*" }, { "Sid": "LambdaEventSourcePerms", "Effect": "Allow", "Action": [ "lambda:CreateEventSourceMapping", "lambda:DeleteEventSourceMapping", "lambda:GetEventSourceMapping", "lambda:ListEventSourceMappings", "lambda:UpdateEventSourceMapping" ], "Resource": "*" } ] }

Amazon S3

コンソールには、AWS アカウントのバケットのリストが事前に設定されており、各バケットのバケットロケーションを検索します。Amazon S3 をイベントソースとして設定した場合、コンソールでバケット通知設定が更新されます。この処理を行うには、次の追加アクセス権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Permissions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetBucketNotification", "s3:PutBucketNotification", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AddPermissionToFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:region:account-id:function:*" } ] }

Amazon SNS

コンソールには、アカウントの Amazon Simple Notification Service (Amazon SNS) トピックの一覧が表示されます。トピックが選択されると、AWS Lambda はその Amazon SNS トピックに Lambda 関数をサブスクライブします。この処理を行うには、次の追加アクセス権限を付与する必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SNSPerms", "Effect": "Allow", "Action": [ "sns:ListSubscriptions", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "sns:Subscribe", "sns:Unsubscribe" ], "Resource": "arn:aws:sns:region:account-id:*" }, { "Sid": "AddPermissionToFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission", "lambda:GetPolicy" ], "Resource": "arn:aws:lambda:region:account-id:function:*" }, { "Sid": "LambdaListESMappingsPerms", "Effect": "Allow", "Action": [ "lambda:ListEventSourceMappings" ], "Resource": "*" } ] }

AWS IoT

コンソールには、すべての AWS IoT ルールが表示されます。ルールを選択すると、コンソールはユーザーインターフェイスのそのルールと関連付けられる残りの情報を入力します。既存のルールを選択すると、コンソールは、イベントが AWS Lambda に送信されるように、そのルールの情報を更新します。また、新しいルールを作成することもできます。これらの操作を行う際、ユーザーには次のアクセス権限が必要です。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IoTperms", "Effect": "Allow", "Action": [ "iot:GetTopicRule", "iot:CreateTopicRule", "iot:ReplaceTopicRule" ], "Resource": "arn:aws:iot:region:account-id:*" }, { "Sid": "IoTlistTopicRulePerms", "Effect": "Allow", "Action": [ "iot:ListTopicRules" ], "Resource": "*" }, { "Sid": "LambdaPerms", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission", "lambda:GetPolicy" ], "Resource": "arn:aws:lambda:region:account-id:function:*" } ] }