

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

# 在 Lambda 中建立跨帳戶事件來源映射
<a name="msk-cross-account"></a>

您可以使用[多 VPC 私有連線](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access-mult-vpc.html)，將 Lambda 函數連接到不同 AWS 帳戶中的佈建 MSK 叢集。多 VPC 連線使用 AWS PrivateLink，這會保留 AWS 網路中的所有流量。

**注意**  
您無法為無伺服器 MSK 叢集建立跨帳戶事件來源映射。

若要建立跨帳戶事件來源映射，您必須先[為 MSK 叢集設定多 VPC 連線](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access-mult-vpc.html#mvpc-cluster-owner-action-turn-on)。建立事件來源映射時，請使用受管理的 VPC 連線 ARN 而非叢集 ARN，如下列範例所示。根據 MSK 叢集使用的驗證類型，[CreateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html) 操作也會有所不同。

**Example — 為使用 IAM 身分驗證的叢集建立跨帳戶的事件來源映射**  
當叢集使用 [IAM 角色型身分驗證](msk-cluster-auth.md#msk-iam-auth)時，您不需要 [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html) 物件。範例：  

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function
```

**Example — 為使用 SASL/SCRAM 身分驗證的叢集建立跨帳戶的事件來源映射**  
如果叢集使用 [SASL/SCRAM 身分驗證](msk-cluster-auth.md#msk-sasl-scram)，則您必須包含指定 `SASL_SCRAM_512_AUTH` 和 Secrets Manager 機密 ARN 的 [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html)。  
透過 SASL/SCRAM 身分驗證，有兩種方式可將機密用於跨帳戶 Amazon MSK 事件來源映射：  
+ 在 Lambda 函數帳戶中建立機密，並將其與叢集機密同步。[建立一個輪換](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)以使兩個機密保持同步。此選項允許您從函數帳戶控制機密。
+ 使用機密必須與 Amazon MSK 叢集相關聯。此機密必須允許 Lambda 函數帳戶的跨帳户存取權。如需詳細資訊，請參閱[不同帳戶中使用者 AWS Secrets Manager 機密的許可](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples_cross.html)。

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function \
  --source-access-configurations '[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
```

**Example — 為使用 mTLS 身分驗證的叢集建立跨帳戶的事件來源映射**  
如果叢集使用 [mTLS 身分驗證](msk-cluster-auth.md#msk-mtls)，則您必須包含指定 `CLIENT_CERTIFICATE_TLS_AUTH` 和 Secrets Manager 機密 ARN 的 [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html)。機密可以儲存在叢集帳戶或 Lambda 函數帳戶中。  

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function \
  --source-access-configurations '[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
```