

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

# 設定 Lambda 執行角色許可
<a name="with-kafka-permissions"></a>

除了[存取自我管理的 Kafka 叢集](kafka-cluster-auth.md)之外，Lambda 函式還需要執行各種 API 動作的許可。您可以將這些許可新增到函數的[執行角色](lambda-intro-execution-role.md)。如果您的使用者需要存取任何 API 動作，請將必要的許可新增至 AWS Identity and Access Management (IAM) 使用者或角色的身分政策。

**Topics**
+ [必要的 Lambda 函數許可](#smaa-api-actions-required)
+ [選用 Lambda 函數許可](#smaa-api-actions-optional)
+ [將許可新增至您的執行角色](#smaa-permissions-add-policy)
+ [使用 IAM 政策授予使用者存取權](#smaa-permissions-add-users)

## 必要的 Lambda 函數許可
<a name="smaa-api-actions-required"></a>

若要在 Amazon CloudWatch Logs 中建立日誌並存放在日誌群組中，您的 Lambda 函數在其執行角色中必須具有下列許可：
+ [logs:CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)
+ [logs:CreateLogStream](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogStream.html)
+ [日誌：PutLogEvents](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html)

## 選用 Lambda 函數許可
<a name="smaa-api-actions-optional"></a>

您的 Lambda 函數可能需要許可，才能：
+ 描述您 Secrets Manager 機密。
+ 存取您的 AWS Key Management Service (AWS KMS) 客戶受管金鑰。
+ 存取 Amazon VPC。
+ 將失敗調用的記錄傳送到目的地。

### Secrets Manager 和 AWS KMS 許可
<a name="smaa-api-actions-secrets"></a>

根據您為 Kafka 代理程式設定的存取控制類型，您的 Lambda 函數可能需要存取 Secrets Manager 秘密或解密 AWS KMS 客戶受管金鑰的許可。若要連線至這些資源，函數的執行角色必須具有下列許可：
+ [secretsmanager:GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

### VPC 許可
<a name="smaa-api-actions-vpc"></a>

如果只有某個 VPC 內的使用者可以存取自我管理 Apache Kafka 叢集，則您的 Lambda 函數必須具有存取 Amazon VPC 資源的許可。這些資源包括您的 VPC、子網路、安全群組和網路界面。若要連線至這些資源，函數的執行角色必須具有下列許可：
+ [ec2:CreateNetworkInterface](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html)
+ [ec2:DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)
+ [ec2:DescribeVpcs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcs.html)
+ [ec2:DeleteNetworkInterface](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeleteNetworkInterface.html)
+ [ec2:DescribeSubnets](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html)
+ [ec2:DescribeSecurityGroups](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSecurityGroups.html)

## 將許可新增至您的執行角色
<a name="smaa-permissions-add-policy"></a>

若要存取自我管理 Apache Kafka 叢集使用的其他 AWS 服務，Lambda 會使用您在 Lambda 函數[執行角色](lambda-intro-execution-role.md)中定義的許可政策。

根據預設，Lambda 不允許針對自我管理 Apache Kafka 叢集執行必要或選用的動作。您必須在 [IAM 信任政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html)中為您的執行角色建立並定義這些動作。此範例會示範如何建立允許 Lambda 存取 Amazon VPC 資源的政策。

------
#### [ JSON ]

****  

```
{
        "Version":"2012-10-17",		 	 	 
        "Statement":[
           {
              "Effect":"Allow",
              "Action":[
                 "ec2:CreateNetworkInterface",
                 "ec2:DescribeNetworkInterfaces",
                 "ec2:DescribeVpcs",
                 "ec2:DeleteNetworkInterface",
                 "ec2:DescribeSubnets",
                 "ec2:DescribeSecurityGroups"
              ],
              "Resource":"*"
           }
        ]
     }
```

------

## 使用 IAM 政策授予使用者存取權
<a name="smaa-permissions-add-users"></a>

根據預設，使用者和角色沒有執行[事件來源 API 操作](invocation-eventsourcemapping.md#event-source-mapping-api)的許可。若要將存取權授予組織或帳戶中的使用者，您可能需要建立或更新身分型政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用政策控制對 AWS 資源的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html)。

如需疑難排解身分驗證與授權錯誤的相關資訊，請參閱[對 Kafka 事件來源映射錯誤進行疑難排解](with-kafka-troubleshoot.md)。