AddPermission - AWS Lambda

AddPermission

関数を使用するための許可を、AWS のサービス、AWS アカウント、または AWS 組織に付与します。関数レベルでポリシーを適用したり、1 つのバージョンまたはエイリアスへのアクセスを制限する修飾子を指定したりすることができます。修飾子を使用する場合は、バージョンの完全な Amazon リソースネーム (ARN) またはエイリアスを使用して関数を呼び出す必要があります。注: Lambda では、バージョン $LATEST へのポリシーの追加をサポートしていません。

別のアカウントにアクセス許可を付与するには、アカウント ID を Principal として指定します。AWS Organizations で定義されている組織にアクセス許可を付与するには、組織 ID を PrincipalOrgID として指定します。AWS のサービスの場合、プリンシパルはサービスが定義するドメインスタイルの識別子で、s3.amazonaws.comsns.amazonaws.com などになります。AWS のサービスの場合、関連付けられたリソースの ARN を SourceArn として指定することもできます。ソースを指定せずにアクセス許可をサービスプリンシパルに付与した場合は、他のアカウントが Lambda 関数を呼び出すようにそのアカウントのリソースを設定する可能性があります。

この操作は、関数のリソースベースの許可ポリシーにステートメントを追加します。詳細については、「Lambda でのリソースベースのポリシーの使用」を参照してください。

リクエストの構文

POST /2015-03-31/functions/FunctionName/policy?Qualifier=Qualifier HTTP/1.1 Content-type: application/json { "Action": "string", "EventSourceToken": "string", "FunctionUrlAuthType": "string", "Principal": "string", "PrincipalOrgID": "string", "RevisionId": "string", "SourceAccount": "string", "SourceArn": "string", "StatementId": "string" }

URI リクエストパラメータ

リクエストでは、次の URI パラメータを使用します。

FunctionName

Lambda 関数、バージョン、またはエイリアスの名前。

名前の形式
  • 関数名my-function (名前のみ)、my-function:v1 (エイリアス付き)。

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

  • 部分的な ARN123456789012:function:my-function

バージョン番号またはエイリアスを任意の形式に追加できます。完全な ARN にのみ適用される長さの制限。関数名のみを指定する場合、64 文字の長さに制限されます。

長さの制限: 最小長は 1 です。最大長は 140 です。

Pattern: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

必須: はい

Qualifier

バージョンまたはエイリアスを指定して、関数の公開済みバージョンにアクセス許可を追加します。

長さの制限: 最小長は 1 です。最大長は 128 です。

Pattern: (|[a-zA-Z0-9$_-]+)

リクエストボディ

リクエストは以下の JSON 形式のデータを受け入れます。

Action

プリンシパルが関数で使用できるアクション。例えば、lambda:InvokeFunctionlambda:GetFunction などです。

型: 文字列

Pattern: (lambda:[*]|lambda:[a-zA-Z]+|[*])

必須: はい

EventSourceToken

Alexa Smart Home 関数の場合は、呼び出し元が提供する必要があるトークンです。

型: 文字列

長さの制限: 最小長は 0 です。最大長は 256 です。

パターン: [a-zA-Z0-9._\-]+

必須: いいえ

FunctionUrlAuthType

関数 URL が使用する認証のタイプ。アクセスを認証されたユーザーのみに制限する場合、AWS_IAM に設定します。IAM 認証をバイパスしてパブリックエンドポイントを作成する場合は、値に NONE を設定します。詳細については、「Security and auth model for Lambda function URLs」(Lambda 関数 URL におけるセキュリティと認証モデル) を参照してください。

型: 文字列

有効な値: NONE | AWS_IAM

必須:いいえ

Principal

関数を呼び出す AWS のサービスまたは AWS アカウントです。サービスを指定する場合は、SourceArn または SourceAccount を使用して、そのサービスを使用して関数を呼び出すことができるユーザーを制限します。

型: 文字列

Pattern: [^\s]+

必須: はい

PrincipalOrgID

AWS Organizations での組織の識別子。これを使用して、この組織の下にあるすべての AWS アカウントに許可を付与します。

型: 文字列

長さの制限: 最小長は 12 です。最大長は 34 です。

パターン: ^o-[a-z0-9]{10,32}$

必須: いいえ

RevisionId

リビジョン ID が指定された ID と一致する場合にのみ、ポリシーを更新します。このオプションを使用して、最終読み取りから変更されたポリシーを変更しないようにします。

型: 文字列

必須: いいえ

SourceAccount

AWS のサービスの場合は、リソースを所有する AWS アカウントの ID です。これを SourceArn とともに使用して、指定されたアカウントがリソースを所有することを確実にします。Amazon S3 バケットは、その所有者によって削除され、別のアカウントによって再作成される可能性があります。

型: 文字列

長さの制限: 最大長は 12 です。

Pattern: \d{12}

必須: いいえ

SourceArn

AWS のサービスの場合は、関数を呼び出す AWS リソースの ARN です。たとえば、Amazon S3 バケットまたは Amazon SNS トピックです。

Lambda は、StringLike 演算子を使用して比較を設定することに注意してください。

型: 文字列

パターン: arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

必須: いいえ

StatementId

ステートメントを同じポリシー内の他のステートメントと区別するステートメント識別子。

型: 文字列

長さの制限: 最小長は 1 です。最大長は 100 です。

Pattern: ([a-zA-Z0-9-_]+)

必須:はい

レスポンスの構文

HTTP/1.1 201 Content-type: application/json { "Statement": "string" }

レスポンス要素

アクションが成功すると、HTTP 201 レスポンスが返されます。

サービスから以下のデータが JSON 形式で返されます。

Statement

関数ポリシーに追加されるアクセス許可ステートメント。

型: 文字列

エラー

すべてのアクションに共通のエラーについては、「共通エラー」を参照してください。

InvalidParameterValueException

リクエストに含まれているパラメータの 1 つが無効です。

HTTP ステータスコード:400

PolicyLengthExceededException

リソースのアクセス許可ポリシーが大きすぎます。詳細については、「Lambda クォータ」を参照してください。

HTTP ステータスコード:400

PreconditionFailedException

指定された RevisionId が、Lambda 関数またはエイリアスの最新 RevisionId と一致しません。GetFunction または GetAlias API 操作を呼び出して、リソースの最新の RevisionId を取得します。

HTTP ステータスコード: 412

ResourceConflictException

リソースが既に存在しているか、別のオペレーションが進行中です。

HTTP ステータスコード: 409

ResourceNotFoundException

リクエストで指定されたリソースは存在しません。

HTTP ステータスコード: 404

ServiceException

AWS Lambda サービスで内部エラーが発生しました。

HTTP ステータスコード: 500

TooManyRequestsException

リクエストスループット制限を超えました。詳細については、「Lambda クォータ」を参照してください。

HTTP ステータスコード: 429

以下の資料も参照してください。

言語固有の AWS SDK のいずれかでこの API を使用する方法の詳細については、以下を参照してください。