

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

授予 AWS 服務、AWS 帳戶 或 AWS 組織使用函數的許可。您可以在函數層級套用政策，或指定限定詞來將存取限制在單一版本或別名。若您使用限定詞，呼叫者必須使用該版本的完整 Amazon Resource Name (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。  
模式：`(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。  
模式：`(|[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`。  
類型：String  
模式：`(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`。如需詳細資訊，請參閱 [Lambda 函數 URL 的安全性和身分驗證模型](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html)。  
類型：字串  
有效值:`NONE | AWS_IAM`   
必要：否

 ** [Principal](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Principal"></a>
調用函數的 AWS 服務 或 AWS 帳戶。若您指定服務，請使用 `SourceArn` 或 `SourceAccount` 來限制可透過服務呼叫函數的對象。  
類型：String  
模式：`[^\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。  
模式：`\d{12}`  
必要：否

 ** [SourceArn](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-SourceArn"></a>
對於 AWS 服務，調用函數的 AWS 資源之 ARN。例如，Amazon S3 儲存貯體或 Amazon SNS 主題。  
請注意，Lambda 會使用 `StringLike` 運算子來設定比較。  
類型：String  
模式：`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。  
模式：`([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 **   
請求中的其中一個參數無效。  
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 開發套件之一中使用此 API 的詳細資訊，請參閱下列說明：
+  [AWS 命令列介面](https://docs.aws.amazon.com/goto/aws-cli/lambda-2015-03-31/AddPermission) 
+  [適用於 .NET 的 AWS 軟體開發套件](https://docs.aws.amazon.com/goto/DotNetSDKV3/lambda-2015-03-31/AddPermission) 
+  [適用於 C\$1\$1 的 AWS 開發套件](https://docs.aws.amazon.com/goto/SdkForCpp/lambda-2015-03-31/AddPermission) 
+  [適用於 Go 的 AWS 軟體開發套件](https://docs.aws.amazon.com/goto/SdkForGoV1/lambda-2015-03-31/AddPermission) 
+  [適用於 Java 的 AWS 軟體開發套件第 2 版](https://docs.aws.amazon.com/goto/SdkForJavaV2/lambda-2015-03-31/AddPermission) 
+  [AWS適用於 JavaScript V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/lambda-2015-03-31/AddPermission) 
+  [適用於 PHP 的 AWS 軟體開發套件第 3 版](https://docs.aws.amazon.com/goto/SdkForPHPV3/lambda-2015-03-31/AddPermission) 
+  [適用於 Python 的 AWS 開發套件](https://docs.aws.amazon.com/goto/boto3/lambda-2015-03-31/AddPermission) 
+  [適用於 Ruby 的 AWS 軟體開發套件第 3 版](https://docs.aws.amazon.com/goto/SdkForRubyV3/lambda-2015-03-31/AddPermission) 