

# AddPermission
<a name="API_AddPermission"></a>

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

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

この操作は、関数のリソースベースの許可ポリシーにステートメントを追加します。詳細については、「[Lambda でのリソースベースのポリシーの使用](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)」を参照してください。

## リクエストの構文
<a name="API_AddPermission_RequestSyntax"></a>

```
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 リクエストパラメータ
<a name="API_AddPermission_RequestParameters"></a>

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

 ** [FunctionName](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-FunctionName"></a>
Lambda 関数、バージョン、またはエイリアスの名前。  

**名前の形式**
+  **関数名** – `my-function` (名前のみ)、`my-function:v1` (エイリアス付き)。
+  **関数 ARN** – `arn:aws:lambda:us-west-2:123456789012:function:my-function`。
+  **部分的な ARN** – `123456789012: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](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Qualifier"></a>
バージョンまたはエイリアスを指定して、関数の公開済みバージョンにアクセス許可を追加します。  
長さの制限: 最小長は 1 です。最大長は 128 です。  
Pattern: `(|[a-zA-Z0-9$_-]+)` 

## リクエストボディ
<a name="API_AddPermission_RequestBody"></a>

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

 ** [Action](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Action"></a>
プリンシパルが関数で使用できるアクション。例えば、`lambda:InvokeFunction`、`lambda:GetFunction` などです。  
型: 文字列  
Pattern: `(lambda:[*]|lambda:[a-zA-Z]+|[*])`   
必須: はい

 ** [EventSourceToken](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-EventSourceToken"></a>
Alexa Smart Home 関数の場合は、呼び出し元が提供する必要があるトークンです。  
型: 文字列  
長さの制限: 最小長は 0 です。最大長は 256 です。  
パターン: `[a-zA-Z0-9._\-]+`   
必須: いいえ

 ** [FunctionUrlAuthType](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-FunctionUrlAuthType"></a>
関数 URL が使用する認証のタイプ。アクセスを認証されたユーザーのみに制限する場合、`AWS_IAM` に設定します。IAM 認証をバイパスしてパブリックエンドポイントを作成する場合は、値に `NONE` を設定します。詳細については、「[Security and auth model for Lambda function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html)」(Lambda 関数 URL におけるセキュリティと認証モデル) を参照してください。  
型: 文字列  
有効な値: `NONE | AWS_IAM`   
必須：いいえ

 ** [Principal](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Principal"></a>
関数を呼び出す AWS のサービスまたは AWS アカウントです。サービスを指定する場合は、`SourceArn` または `SourceAccount` を使用して、そのサービスを使用して関数を呼び出すことができるユーザーを制限します。  
型: 文字列  
Pattern: `[^\s]+`   
必須: はい

 ** [PrincipalOrgID](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-PrincipalOrgID"></a>
AWS Organizations での組織の識別子。これを使用して、この組織の下にあるすべての AWS アカウントに許可を付与します。  
型: 文字列  
長さの制限: 最小長は 12 です。最大長は 34 です。  
パターン: `^o-[a-z0-9]{10,32}$`   
必須: いいえ

 ** [RevisionId](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-RevisionId"></a>
リビジョン ID が指定された ID と一致する場合にのみ、ポリシーを更新します。このオプションを使用して、最終読み取りから変更されたポリシーを変更しないようにします。  
型: 文字列  
必須: いいえ

 ** [SourceAccount](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-SourceAccount"></a>
AWS のサービスの場合は、リソースを所有する AWS アカウントの ID です。これを `SourceArn` とともに使用して、指定されたアカウントがリソースを所有することを確実にします。Amazon S3 バケットは、その所有者によって削除され、別のアカウントによって再作成される可能性があります。  
型: 文字列  
長さの制限: 最大長は 12 です。  
Pattern: `\d{12}`   
必須: いいえ

 ** [SourceArn](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-SourceArn"></a>
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](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-StatementId"></a>
ステートメントを同じポリシー内の他のステートメントと区別するステートメント識別子。  
型: 文字列  
長さの制限: 最小長は 1 です。最大長は 100 です。  
Pattern: `([a-zA-Z0-9-_]+)`   
必須：はい

## レスポンスの構文
<a name="API_AddPermission_ResponseSyntax"></a>

```
HTTP/1.1 201
Content-type: application/json

{
   "Statement": "string"
}
```

## レスポンス要素
<a name="API_AddPermission_ResponseElements"></a>

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

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

 ** [Statement](#API_AddPermission_ResponseSyntax) **   <a name="lambda-AddPermission-response-Statement"></a>
関数ポリシーに追加されるアクセス許可ステートメント。  
型: 文字列

## エラー
<a name="API_AddPermission_Errors"></a>

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

 ** InvalidParameterValueException **   
リクエストに含まれているパラメータの 1 つが無効です。  
HTTP ステータスコード：400

 ** PolicyLengthExceededException **   
リソースのアクセス許可ポリシーが大きすぎます。詳細については、「[Lambda クォータ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)」を参照してください。  
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 クォータ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html#api-requests)」を参照してください。  
HTTP ステータスコード: 429

## 以下の資料も参照してください。
<a name="API_AddPermission_SeeAlso"></a>

言語固有の AWS SDK のいずれかでこの API を使用する方法の詳細については、以下を参照してください。
+  「[AWS コマンドラインインターフェイス](https://docs.aws.amazon.com/goto/aws-cli/lambda-2015-03-31/AddPermission)」 
+  「[AWS SDK for .NET](https://docs.aws.amazon.com/goto/DotNetSDKV3/lambda-2015-03-31/AddPermission)」 
+  「[AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/lambda-2015-03-31/AddPermission)」 
+  「[AWS SDK for Go](https://docs.aws.amazon.com/goto/SdkForGoV1/lambda-2015-03-31/AddPermission)」 
+  「[AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/lambda-2015-03-31/AddPermission)」 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/lambda-2015-03-31/AddPermission) 
+  「[AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/lambda-2015-03-31/AddPermission)」 
+  「[AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/lambda-2015-03-31/AddPermission)」 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/lambda-2015-03-31/AddPermission) 