AWS Lambda
開発者ガイド

Lambda アクションのリソースと条件

IAM ポリシーでリソースと条件を指定することで、ユーザーのアクセス許可の範囲を制限できます。API アクションではそれぞれ、アクションの動作によって異なるリソースタイプと条件タイプの組み合わせがサポートされています。

各 IAM ポリシーステートメントによって、リソースで実行されるアクションに対するアクセス許可が付与されます。アクションが名前の付いたリソースで動作しない場合、またはすべてのリソースに対してアクションを実行するアクセス許可を付与した場合、ポリシー内のリソースの値はワイルドカード (*) になります。多くの API アクションでは、リソースの Amazon リソースネーム (ARN)、または複数のリソースに一致する ARN パターンを指定することによって、ユーザーが変更できるリソースを制限できます。

リソース別にアクセス許可を制限するには、ARN 別にリソースを指定します。

Lambda リソース ARN 形式

  • 関数 – arn:aws:lambda:us-west-2:123456789012:function:my-function

  • 関数のバージョン – arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • 関数のエイリアス – arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • イベントソースマッピング – arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

  • レイヤー – arn:aws:lambda:us-west-2:123456789012:layer:my-layer

  • レイヤーバージョン – arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

たとえば、以下のポリシーでは、123456789012 アカウントのユーザーは、my-function という名前の関数を 米国西部 (オレゴン) リージョンで呼び出すことができます。

例 関数ポリシーを呼び出す

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

アクションの識別子 (lambda:InvokeFunction) が、API オペレーション (Invoke) と異なる特別なケースです。その他のアクションのアクションの識別子は、lambda: プレフィックスがついたオペレーション名です。

条件は、アクションが許可されているかどうかを判断するために追加のロジックを適用するオプションのポリシー要素です。すべてのアクションでサポートされている共通条件に加えて、Lambda は、一部のアクションの追加パラメータの値の制限に使用する条件タイプを定義します。

たとえば、lambda:Principal 条件では、ユーザーが、関数のリソースベースのポリシーへの呼び出しアクセスを付与するサービスまたはアカウントを制限できます。次のポリシーでは、ユーザーは、test という名前の関数を呼び出すアクセス許可を SNS トピックに付与できます。

例 関数ポリシーのアクセス許可を管理する

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*", "Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } } } ] }

この条件では、プリンシパルが Amazon SNS で、別のサービスやアカウントでないことが必要です。リソースパターンでは、関数名が test で、バージョン番号またはエイリアスが含まれている必要があります。たとえば、test:v1 と指定します。

Lambda および AWS のその他のサービスのリソースおよび条件の詳細については、『IAM ユーザーガイド』の「アクション、リソース、および条件キー」を参照してください。

関数

以下の表で説明されているように、関数を操作するアクションは、関数、バージョン、またはエイリアス ARN によって特定の関数に制限することができます。リソース制限をサポートしていないアクションは、すべてのリソースにのみ付与することができます (*)。

関数

アクション リソース 条件

AddPermission

RemovePermission

関数

Function version

関数のエイリアス

lambda:Principal

Invoke

アクセス許可: lambda:InvokeFunction

関数

Function version

関数のエイリアス

なし

CreateFunction

UpdateFunctionConfiguration

関数

lambda:Layer

CreateAlias

DeleteAlias

DeleteFunction

DeleteFunctionConcurrency

GetAlias

GetFunction

GetFunctionConfiguration

GetPolicy

ListAliases

ListVersionsByFunction

PublishVersion

PutFunctionConcurrency

UpdateAlias

UpdateFunctionCode

関数

なし

GetAccountSettings

ListFunctions

ListTags

TagResource

UntagResource

*

なし

イベントソースマッピング

イベントソースマッピングで、アクセス許可の削除および更新は、特定のイベントソースに制限されています。lambda:FunctionArn 条件では、ユーザーが呼び出すイベントソースを設定できる関数を制限することができます。

これらのアクションでは、リソースはイベントソースマッピングであるため、Lambda では、イベントソースマッピングで呼び出される関数に基づき、アクセス許可を制限することができる条件を提供します。

イベントソースマッピング

アクション リソース 条件

DeleteEventSourceMapping

UpdateEventSourceMapping

イベントソースマッピング

lambda:FunctionArn

CreateEventSourceMapping

*

lambda:FunctionArn

GetEventSourceMapping

ListEventSourceMappings

*

なし

レイヤー

レイヤーアクションでは、関数を使用してユーザーが管理または使用できるレイヤーを制限できます。レイヤーの使用とアクセス許可に関連するアクションはレイヤーのバージョン、PublishLayerVersion はレイヤー名に影響します。ワイルドカードとあわせていずれかを使用して、ユーザーが操作できるレイヤーを名前で制限することができます。

レイヤー

アクション リソース 条件

AddLayerVersionPermission

RemoveLayerVersionPermission

GetLayerVersion

GetLayerVersionPolicy

DeleteLayerVersion

レイヤーバージョン

なし

PublishLayerVersion

レイヤー

なし

ListLayers

ListLayerVersions

*

なし