本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Amazon MSK 事件來源映射的 Lambda 許可
若要存取 Amazon MSK 叢集,函式和事件來源映射需要執行各種 Amazon MSK API 動作的許可。將這些許可新增至函式的執行角色。如果使用者需要存取權,請將必要許可新增至使用者或角色的身分政策。
AWSLambdaMSKExecutionRole 受管政策包含 Amazon MSK Lambda 事件來源映射所需的最低許可。若要簡化許可程序,您可以:
-
將 AWSLambdaMSKExecutionRole 受管政策連接至您的執行角色。
-
讓 Lambda 主控台為您產生許可。當您在主控台中建立 Amazon MSK 事件來源映射時,Lambda 會評估您的執行角色,並在缺少任何許可時提醒您。選擇產生許可以自動更新您的執行角色。如果您手動建立或修改執行角色政策,或者政策連接到多個角色,則此功能不適用。請注意,使用失敗時目的地或AWS Glue 結構描述登錄檔等進階功能時,執行角色可能仍需要額外的許可。
所需的許可
您的 Lambda 函數執行角色必須具有下列 Amazon MSK 事件來源映射的必要許可。這些許可包含在 AWSLambdaMSKExecutionRole 受管政策中。
CloudWatch Logs 許可
下列許可允許 Lambda 在 Amazon CloudWatch Logs 中建立和存放日誌。
MSK 叢集許可
下列許可允許 Lambda 代表您存取您的 Amazon MSK 叢集:
我們建議您使用 kafka:DescribeClusterV2,而非 kafka:DescribeCluster。v2 許可適用於佈建和無伺服器 Amazon MSK 叢集。您只需要政策中的其中一個許可。
VPC 許可
下列許可允許 Lambda 在連線至 Amazon MSK 叢集時建立和管理網路介面:
可選的許可。
您的 Lambda 函數可能需要許可,才能:
-
存取跨帳戶 Amazon MSK 叢集。對於跨帳戶事件來源映射,您需要執行角色中的 kafka:DescribeVpcConnection。建立跨帳戶事件來源映射的 IAM 主體需要 kafka:ListVpcConnections。
-
存取 SCRAM 秘密 (若使用 SASL/SCRAM 身分驗證)。此舉可讓函式透過使用者名稱與密碼連線至 Kafka。
-
描述 Secrets Manager 秘密 (若使用 SASL/SCRAM 或 mTLS 身分驗證)。此舉可讓函式擷取安全連線所需的憑證或認證。
-
如果您的 AWS Secrets Manager 秘密是使用 AWS KMS 客戶受管金鑰加密,請存取您的 AWS KMS 客戶受管金鑰。
-
存取結構描述登錄檔秘密 (若使用的結構描述登錄檔需進行身分驗證):
-
對於 AWS Glue 結構描述登錄檔:您的函數需求
glue:GetRegistry和glue:GetSchemaVersion許可。這些許可能夠讓函式查詢並使用儲存在 AWS Glue中的訊息格式規則。 -
對於使用
BASIC_AUTH或CLIENT_CERTIFICATE_TLS_AUTH的 Confluent 結構描述登錄檔:函式需要對包含身分驗證憑證的秘密具有 secretsmanager:GetSecretValue許可。這可讓函式擷取存取 Confluent 結構描述登錄檔所需的使用者名稱/密碼或憑證。 -
對於私有 CA 憑證:函式需要對包含憑證的秘密具有 secretsmanager:GetSecretValue 許可。此舉可讓函式驗證使用自訂憑證的結構描述登錄檔身分。
-
-
如果您使用 IAM 身分驗證進行事件來源映射,請從主題存取 Kafka 叢集取用者群組和輪詢訊息。
這些對應至下列必要許可:
-
kafka:ListScramSecrets – 允許列出用於 Kafka 身分驗證的 SCRAM 秘密
-
secretsmanager:GetSecretValue – 允許從 Secrets Manager 擷取秘密
-
kms:Decrypt - 允許使用 解密加密的資料 AWS KMS
-
glue:GetRegistry - 允許存取 AWS Glue 結構描述登錄檔
-
glue:GetSchemaVersion - 啟用從結構描述登錄檔擷取特定 AWS Glue 結構描述版本
-
kafka-cluster:Connect - 准許連線至叢集並進行驗證
-
kafka-cluster:AlterGroup - 准許加入叢集上的群組,相當於 Apache Kafka 的 READ GROUP ACL
-
kafka-cluster:DescribeGroup - 准許描述叢集上的群組,相當於 Apache Kafka 的 DESCRIBE GROUP ACL
-
kafka-cluster:DescribeTopic - 准許描述叢集上的主題,相當於 Apache Kafka 的 DESCRIBE TOPIC ACL
-
kafka-cluster:ReadData - 准許從叢集上的主題讀取資料,相當於 Apache Kafka 的 READ TOPIC ACL
此外,若想將失敗調用的記錄傳送至失敗時目的地,根據目的地類型,您將需要下列許可:
-
對於 Amazon SQS 目的地:sqs:SendMessage – 允許將訊息傳送至 Amazon SQS 佇列
-
對於 Amazon SNS 目的地:sns:Publish – 允許將訊息發布至 Amazon SNS 主題
-
對於 Amazon S3 儲存貯體目的地:s3:PutObject 與 s3:ListBucket – 允許在 Amazon S3 儲存貯體中寫入及列出物件
如需疑難排解身分驗證與授權錯誤的相關資訊,請參閱對 Kafka 事件來源映射錯誤進行疑難排解。