本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SelfManagedKafka
描述SelfManagedKafka事件來源類型的物件。如需詳細資訊,請參閱《 AWS Lambda 開發人員指南》中的使用 AWS Lambda 搭配自我管理的 Apache Kafka。
AWS Serverless Application Model (AWS SAM) 會在設定此事件類型時產生 AWS::Lambda::EventSourceMapping 資源。
若要使用結構描述登錄檔,您需要定義函數的特定 IAM 角色許可。如需所需組態的範例,請參閱使用 IAM 角色完成設定。
語法
若要在 AWS SAM 範本中宣告此實體,請使用下列語法。
YAML
BatchSize:IntegerBisectBatchOnFunctionError:BooleanConsumerGroupId:StringDestinationConfig:DestinationConfigEnabled:BooleanFilterCriteria:FilterCriteriaKafkaBootstrapServers:ListFunctionResponseTypes:ListKmsKeyArn:StringLoggingConfig:LoggingConfigMaximumRecordAgeInSeconds:IntegerMaximumRetryAttempts:IntegerMetricsConfig:MetricsConfigProvisionedPollerConfig:ProvisionedPollerConfigSchemaRegistryConfig:SchemaRegistryConfigSourceAccessConfigurations:SourceAccessConfigurationsStartingPosition:StringStartingPositionTimestamp:DoubleTopics:List
Properties
-
BatchSize -
Lambda 從串流提取並傳送至函數的每個批次中的記錄數目上限。
類型:整數
必要:否
預設值:100
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的BatchSize屬性。下限:
1上限:
10000 -
BisectBatchOnFunctionError -
如果函數傳回錯誤,請將批次分割為兩個,然後重試。
類型:布林值
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的BisectBatchOnFunctionError屬性。 -
ConsumerGroupId -
設定如何從 Kafka 主題讀取事件的字串。
類型:字串
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的SelfManagedKafkaEventSourceConfig屬性。 -
DestinationConfig -
組態物件,指定在 Lambda 處理過後事件的目標。
使用此屬性可指定從自我管理 Kafka 事件來源呼叫失敗的目的地。
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的DestinationConfig屬性。 -
Enabled -
停用事件來源映射以暫停輪詢和叫用。
類型:布林值
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的Enabled屬性。 -
FilterCriteria -
定義判斷 Lambda 是否應處理事件之條件的物件。如需詳細資訊,請參閱《 AWS Lambda 開發人員指南》中的AWS Lambda 事件篩選。
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的FilterCriteria屬性。 -
KafkaBootstrapServers -
Kafka 代理程式的引導伺服器清單。包含連接埠,例如
broker.example.com:xxxx類型:清單
必要:否
CloudFormation 相容性:此屬性對 是唯一的 AWS SAM ,並且沒有 CloudFormation 同等屬性。
-
FunctionResponseTypes -
目前套用至事件來源映射的回應類型清單。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的報告批次項目失敗。
有效值:
ReportBatchItemFailures類型:清單
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的FunctionResponseTypes屬性。 -
KmsKeyArn -
金鑰的 Amazon Resource Name (ARN),用於加密與此事件相關的資訊。
類型:字串
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的KmsKeyArn屬性。 -
LoggingConfig -
事件來源的記錄組態。
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的LoggingConfig屬性。 -
MaximumRecordAgeInSeconds -
Lambda 傳送給函數進行處理的記錄最長存留期。
類型:整數
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的MaximumRecordAgeInSeconds屬性。 -
MetricsConfig -
事件來源的指標組態。
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的MetricsConfig屬性。 -
MaximumRetryAttempts -
當函數傳回錯誤時,重試的次數上限。
類型:整數
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的MaximumRetryAttempts屬性。 -
ProvisionedPollerConfig -
用於增加用於計算事件來源映射之輪詢器數量的組態。此組態允許最少 1 個輪詢器,最多 2000 個輪詢器。如需範例,請參閱 ProvisionedPollerConfig 範例
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的ProvisionedPollerConfig屬性。 SchemaRegistryConfig-
搭配自我管理 Kafka 事件來源使用結構描述登錄檔的組態。
注意
此功能
ProvisionedPollerConfig需要設定。必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的SelfManagedKafkaEventSourceConfig屬性。 -
SourceAccessConfigurations -
驗證通訊協定、VPC 元件和 OAuth 2.0 中繼資料的陣列,可保護和定義您的事件來源。每個項目都是具有
Type欄位的物件,對於大多數類型而言,則為URI欄位。如需類型的完整清單和每個類型URI所需的值,請參閱AWS CloudFormation 《 使用者指南》中的 SourceAccessConfiguration。AWS SAM 在將此屬性傳遞至 Lambda 之前, 會套用下列驗證:
-
您必須指定一個以上的身分驗證類型。如果您指定一個以上的身分驗證類型, 會 AWS SAM 傳回錯誤。
-
您必須指定
VPC_SUBNET和VPC_SECURITY_GROUPtogether。如果您指定一個沒有另一個的錯誤,則 AWS SAM 會傳回錯誤。 -
您必須為除
IAM_AUTH和 以外的每種類型指定URI一個值IAM_OAUTHBEARER_AUTH,這不需要URI。 只會 AWS SAM 檢查該值是否存在,並在不解譯它的情況下通過它。當您部署時,Lambda 會驗證 值和類型組合。
AWS SAM 會為您指定的每個秘密 ARN 新增
secretsmanager:GetSecretValue許可,包括SERVER_ROOT_CA_CERTIFICATE秘密,以及 Lambda 在您指定 VPC 項目時所需的 Amazon EC2 網路介面許可。對於IAM_AUTH和IAM_OAUTHBEARER_AUTH, 不會 AWS SAM 新增叢集或字符許可。自行將這些許可授予函數的執行角色。當這些都不適用時,例如IAM_AUTH沒有 VPC 項目時, 不會將內嵌政策 AWS SAM 新增至執行角色。如需所需許可,請參閱《 AWS Lambda 開發人員指南》中的在 Lambda 中設定叢集身分驗證方法。有效值:
BASIC_AUTH | CLIENT_CERTIFICATE_TLS_AUTH | IAM_AUTH | IAM_OAUTHBEARER_AUTH | OAUTHBEARER_AUDIENCE | OAUTHBEARER_AUTH | OAUTHBEARER_IDENTITY_POOL | OAUTHBEARER_LOGICAL_CLUSTER | OAUTHBEARER_SCOPE | SASL_SCRAM_256_AUTH | SASL_SCRAM_512_AUTH | SERVER_ROOT_CA_CERTIFICATE | VPC_SECURITY_GROUP | VPC_SUBNET類型:SourceAccessConfiguration 清單
必要:是
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的SourceAccessConfigurations屬性。 -
-
StartingPosition -
要從中開始讀取的串流位置。
-
AT_TIMESTAMP– 指定從中開始讀取記錄的時間。 -
LATEST– 唯讀新記錄。 -
TRIM_HORIZON– 處理所有可用的記錄。
有效值:
AT_TIMESTAMP|LATEST|TRIM_HORIZON類型:字串
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的StartingPosition屬性。 -
-
StartingPositionTimestamp -
開始讀取的時間,以 Unix 時間秒為單位。定義
StartingPositionTimestampStartingPosition何時指定為AT_TIMESTAMP。類型:Double
必要:否
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的StartingPositionTimestamp屬性。 -
Topics -
Kafka 主題名稱。
類型:清單
必要:是
CloudFormation 相容性:此屬性會直接傳遞至
AWS::Lambda::EventSourceMapping資源的Topics屬性。
範例
使用 IAM 角色完成設定
下列範例顯示完整的設定,包括使用結構描述登錄所需的 IAM 角色組態:
Parameters: PreCreatedSubnetOne: Type: String PreCreatedSubnetTwo: Type: String Resources: MyLambdaExecutionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Action: [sts:AssumeRole] Effect: Allow Principal: Service: [lambda.amazonaws.com] Policies: - PolicyName: KafkaAuthPolicy PolicyDocument: Statement: - Action: [secretsmanager:GetSecretValue, kms:Decrypt] Effect: "Allow" Resource: ['arn:aws:secretsmanager:us-west-2:123456789012:secret:kafkaSecret-******', 'arn:aws:kms:us-west-2:123456789012:key/keyId'] - PolicyName: ENIPolicy PolicyDocument: Statement: - Action: [ec2:CreateNetworkInterface, ec2:DescribeNetworkInterfaces, ec2:DescribeVpcs, ec2:DeleteNetworkInterface, ec2:DescribeSubnets, ec2:DescribeSecurityGroups] Effect: Allow Resource: '*' - PolicyName: SchemaRegistryPolicy PolicyDocument: Statement: - Action: [glue:GetRegistry] Effect: Allow Resource: 'arn:aws:glue:{region}:{account-id}:registry/{registry-name}' - PolicyName: SchemaVersionsPolicy PolicyDocument: Statement: - Action: [glue:GetSchemaVersions] Effect: Allow Resource: '*' ManagedPolicyArns: - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Tags: - {Value: SAM, Key: lambda:createdBy} MyKafkaProcessor: Type: AWS::Serverless::Function Properties: Runtime: nodejs18.x Handler: index.handler CodeUri: ${codeuri} Role: Fn::GetAtt: [MyLambdaExecutionRole, Arn] Events: SelfManagedKafkaEvent: Type: SelfManagedKafka Properties: KafkaBootstrapServers: - my-kafka-broker-1:9092 - my-kafka-broker-2:9092 Topics: - SchemaRegistryTestTopic StartingPosition: LATEST SourceAccessConfigurations: - Type: VPC_SUBNET URI: subnet:subnet-12345678 - Type: VPC_SECURITY_GROUP URI: security_group:sg-12345678 - Type: BASIC_AUTH URI: !Sub arn:${AWS::Partition}:secretsmanager:us-west-2:123456789012:secret:my-path/my-secret-name-1a2b3c ProvisionedPollerConfig: MinimumPollers: 1 SchemaRegistryConfig: AccessConfigs: - Type: BASIC_AUTH URI: !Sub arn:${AWS::Partition}:secretsmanager:us-west-2:123456789012:secret:my-path/my-secret-name-1a2b3c SchemaValidationConfigs: - Attribute: KEY EventRecordFormat: JSON SchemaRegistryURI: !Sub arn:${AWS::Partition}:glue:us-west-2:123456789012:registry/myregistry
ProvisionedPollerConfig 範例
ProvisionedPollerConfig: MinimumPollers: 1 MaximumPollers: 200
自我管理的 Kafka 事件來源
以下是SelfManagedKafka事件來源類型的範例。
YAML
Events: SelfManagedKafkaEvent: Type: SelfManagedKafka Properties: BatchSize: 1000 Enabled: true KafkaBootstrapServers: - abc.xyz.com:xxxx SourceAccessConfigurations: - Type: BASIC_AUTH URI: arn:aws:secretsmanager:us-west-2:123456789012:secret:my-path/my-secret-name-1a2b3c Topics: - MyKafkaTopic
使用 OAuth 2.0 身分驗證的自我管理 Kafka 事件來源
下列範例使用 SASL/OAUTHBEARER 進行驗證。OAUTHBEARER_AUTH 項目指向存放 OAuth 2.0 登入資料的秘密,而每個中繼資料項目都有 Lambda 傳遞給您的身分提供者或代理程式的常值。
Events: SelfManagedKafkaEvent: Type: SelfManagedKafka Properties: KafkaBootstrapServers: - abc.xyz.com:9092 Topics: - MyKafkaTopic StartingPosition: LATEST ConsumerGroupId: consumergroup1 SourceAccessConfigurations: - Type: OAUTHBEARER_AUTH URI: arn:aws:secretsmanager:us-west-2:123456789012:secret:my-path/my-oauth-secret-1a2b3c - Type: OAUTHBEARER_SCOPE URI: read write - Type: OAUTHBEARER_AUDIENCE URI: https://api.example.com - Type: SERVER_ROOT_CA_CERTIFICATE URI: arn:aws:secretsmanager:us-west-2:123456789012:secret:my-path/my-server-root-ca-cert-7p8q9r - Type: VPC_SUBNET URI: subnet:subnet-12345678 - Type: VPC_SECURITY_GROUP URI: security_group:sg-12345678
使用 IAM 身分驗證的自我管理 Kafka 事件來源
下列範例使用 IAM 進行身分驗證。IAM_AUTH 項目不需要URI任何欄位,因為 Lambda 會使用函數執行角色的登入資料來簽署每個連線。將 Lambda 所需的叢集許可授予您的執行角色,因為 AWS SAM 不會新增它們。
Events: SelfManagedKafkaEvent: Type: SelfManagedKafka Properties: KafkaBootstrapServers: - abc.xyz.com:9092 Topics: - MyKafkaTopic StartingPosition: LATEST ConsumerGroupId: consumergroup1 SourceAccessConfigurations: - Type: IAM_AUTH - Type: VPC_SUBNET URI: subnet:subnet-12345678 - Type: VPC_SECURITY_GROUP URI: security_group:sg-12345678
使用 IAM 和 OAuth 2.0 身分驗證的自我管理 Kafka 事件來源
下列範例使用 驗證 IAM_OAUTHBEARER_AUTH。此項目不需要URI任何欄位,但您必須將其與項目配對,而該OAUTHBEARER_AUDIENCE項目URI是代理程式預期的對象。Lambda 請求執行角色的短期 Web 身分字符,需要 sts:GetWebIdentityToken許可,且您的代理程式必須信任 AWS 發行者並接受對象值。
Events: SelfManagedKafkaEvent: Type: SelfManagedKafka Properties: KafkaBootstrapServers: - abc.xyz.com:9092 Topics: - MyKafkaTopic StartingPosition: LATEST ConsumerGroupId: consumergroup1 SourceAccessConfigurations: - Type: IAM_OAUTHBEARER_AUTH - Type: OAUTHBEARER_AUDIENCE URI: kafka-cluster - Type: VPC_SUBNET URI: subnet:subnet-12345678 - Type: VPC_SECURITY_GROUP URI: security_group:sg-12345678
具有 AWS Glue 結構描述登錄檔的自我管理 Kafka 事件來源
以下是使用 AWS Glue 結構描述登錄檔設定SelfManagedKafka的事件來源類型範例。
Events: SelfManagedKafkaEvent: Type: SelfManagedKafka Properties: KafkaBootstrapServers: - abc.xyz.com:9092 Topics: - SchemaRegistryTestTopic StartingPosition: LATEST ProvisionedPollerConfig: MinimumPollers: 1 SchemaRegistryConfig: SchemaRegistryURI: !Sub arn:${AWS::Partition}:glue:us-west-2:123456789012:registry/myregistry EventRecordFormat: JSON SchemaValidationConfigs: - Attribute: KEY - Attribute: VALUE SourceAccessConfigurations: - Type: VPC_SUBNET URI: subnet:subnet-12345678 - Type: VPC_SECURITY_GROUP URI: security_group:sg-12345678
具有 Confluent Schema Registry 的自我管理 Kafka 事件來源
以下是使用 Confluent Schema Registry 設定SelfManagedKafka的事件來源類型範例。
Events: SelfManagedKafkaEvent: Type: SelfManagedKafka Properties: KafkaBootstrapServers: - abc.xyz.com:9092 Topics: - SchemaRegistryTestTopic StartingPosition: LATEST ProvisionedPollerConfig: MinimumPollers: 1 SchemaRegistryConfig: SchemaRegistryURI: https://my-schema-registry.confluent.cloud AccessConfigs: - Type: BASIC_AUTH URI: !Sub arn:${AWS::Partition}:secretsmanager:us-west-2:123456789012:secret:my-secret EventRecordFormat: JSON SchemaValidationConfigs: - Attribute: KEY - Attribute: VALUE SourceAccessConfigurations: - Type: VPC_SUBNET URI: subnet:subnet-12345678 - Type: VPC_SECURITY_GROUP URI: security_group:sg-12345678 - Type: BASIC_AUTH URI: !Sub arn:${AWS::Partition}:secretsmanager:us-west-2:123456789012:secret:kafka-secret