

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

# 使用執行角色定義 Lambda 函數許可
<a name="lambda-intro-execution-role"></a>

Lambda 函數的執行角色是 AWS Identity and Access Management (IAM) 角色，授予函數存取 AWS 服務 和資源的許可。例如，您可以建立一個執行角色，該角色有權向 Amazon CloudWatch 傳送日誌並向 AWS X-Ray上傳追蹤資料。本頁提供有關如何建立、檢視和管理 Lambda 函數執行角色的資訊。

當您調用函數時，Lambda 會自動擔任您的執行角色。您應該避免在函數程式碼中手動呼叫 `sts:AssumeRole` 以承擔執行角色。如果您的使用案例請求角色擔任自己，則您必須將角色本身作為受信任主體包含在角色的信任政策中。如需如何修改角色信任政策的詳細資訊，請參閱《IAM 使用者指南》中的[修改角色信任政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)。

為了讓 Lambda 能夠正確擔任執行角色，角色的[信任政策](#permissions-executionrole-api)必須將 Lambda 服務主體 (`lambda.amazonaws.com`) 指定為受信任的服務。

**Topics**
+ [在 IAM 主控台中建立執行角色](#permissions-executionrole-console)
+ [使用 建立和管理角色 AWS CLI](#permissions-executionrole-api)
+ [為 Lambda 執行角色授予最低權限存取權](#permissions-executionrole-least-privilege)
+ [在執行角色中檢視和更新許可](permissions-executionrole-update.md)
+ [在執行角色中使用 AWS 受管政策](permissions-managed-policies.md)
+ [使用來源函數 ARN 控制函數存取行為](permissions-source-function-arn.md)

## 在 IAM 主控台中建立執行角色
<a name="permissions-executionrole-console"></a>

根據預設，當您[在 Lambda 主控台中建立函數時](getting-started.md#getting-started-create-function)，Lambda 會建立具有最低許可的執行角色。具體而言，此執行角色包含 [`AWSLambdaBasicExecutionRole` 受管政策](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html)，該政策會授予您的函數將事件記錄到 Amazon CloudWatch Logs 的基本許可。您可以在**許可**區段中選取**建立預設角色**。

您可以在**許可**區段中選取**使用另一個角色，以選擇現有角色**。如果您的 Lambda 函數需要額外許可來執行任務，例如更新 Amazon DynamoDB 資料庫中的項目以回應事件，您可以建立具有必要許可的自訂執行角色。若要這樣做，請在**許可**區段中選取**使用另一個角色**，這會開啟一個抽屜，您可以在其中自訂許可。

**從主控台設定執行角色**

1. 在**角色詳細資訊區段中輸入角色名稱**。

1. 在**政策**區段中，選取**使用現有政策**。

1. 選取您要連接到角色的 AWS 受管政策。例如，如果您的函數需要存取 DynamoDB，請選取 **AWSLambdaDynamoDBExecutionRole** 受管政策。

1. 選擇建**立角色**。

或者，當您[在 Lambda 主控台中建立函數](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function)時，您可以將先前建立的任何執行角色連接到函數。如果您想要將新的執行角色連接到現有的函數，請遵循[更新函數的執行角色](permissions-executionrole-update.md)中的步驟。

## 使用 建立和管理角色 AWS CLI
<a name="permissions-executionrole-api"></a>

若要使用 AWS Command Line Interface (AWS CLI) 建立執行角色，請使用 **create-role**命令。使用此命令時，您可以指定內嵌信任政策。角色的信任政策授予指定主體擔任該角色的許可。在下列範例中，您授予 Lambda 服務主體擔任您的角色的許可。注意，JSON 字串中轉義引號的請求有所不同，這取決於您的 shell。

```
aws iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
```

您也可使用單獨的 JSON 檔案來定義角色的信任政策。在下列範例中，`trust-policy.json` 為當前目錄中的檔案。

**Example trust-policy.json**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

```
aws iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document file://trust-policy.json
```

使用 **attach-policy-to-role** 命令將許可新增至角色。下列命令可將 `AWSLambdaBasicExecutionRole` 受管政策新增至 `lambda-ex` 執行角色。

```
aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
```

建立執行角色之後，將其連接至您的函數。當您[在 Lambda 主控台中建立函數](getting-started.md#getting-started-create-function)時，可以將先前建立的任何執行角色連接至該函數。如果您想要將新的執行角色連接至現有函數，請遵循[更新函數的執行角色](permissions-executionrole-update.md#update-execution-role)中的步驟。

## 為 Lambda 執行角色授予最低權限存取權
<a name="permissions-executionrole-least-privilege"></a>

當您第一次為 Lambda 函數建立 IAM 角色時，有時可能會授予超出所需的許可。在生產環境中發佈您的函數之前，最佳實務是調整政策以僅包含必要的許可。如需詳細資訊，請參閱《IAM 使用者指南》**中的[套用最低權限許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。

使用 IAM Access Analyzer 來協助識別 IAM 執行角色政策的必要許可。IAM Access Analyzer 會在您指定的日期範圍內檢閱您的 AWS CloudTrail 日誌，並產生僅具有該函數在此期間使用之許可的政策範本。您可以使用範本建立具有精細許可的受管政策，然後將其連接至 IAM 角色。如此一來，您只會授予角色與特定使用案例 AWS 的資源互動所需的許可。

如需詳細資訊，請參閱《IAM 使用者指南》**中的[根據存取活動產生政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_generate-policy.html)。