SelfManagedKafka - AWS Serverless Application Model

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SelfManagedKafka

SelfManagedKafka 이벤트 소스 유형을 설명하는 객체. 자세한 내용은 AWS Lambda 개발자 안내서자체 관리형 Apache Kafka AWS Lambda 에서 사용을 참조하세요.

AWS Serverless Application Model (AWS SAM)는이 이벤트 유형이 설정되면 AWS::Lambda::EventSourceMapping 리소스를 생성합니다.

Schema Registry를 사용하려면 함수에 대한 특정 IAM 역할 권한을 정의해야 합니다. 필수 구성의 예시는 IAM 역할로 설정 완료하기를 참조하세요.

구문

AWS SAM 템플릿에서이 개체를 선언하려면 다음 구문을 사용합니다.

속성

BatchSize

Lambda가 귀하의 스트림으로부터 풀링하여 귀하의 함수로 보내는 각 배치의 최대 기록 수.

유형: 정수

필수 항목 여부: 아니요

기본값: 100

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 BatchSize 속성으로 직접 전달됩니다.

최소: 1

최대: 10000

BisectBatchOnFunctionError

함수가 오류를 제시하면 비치를 2개로 분할해서 다시 시도합니다.

유형: 부울

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 BisectBatchOnFunctionError 속성으로 직접 전달됩니다.

ConsumerGroupId

Kafka 주제에서 이벤트를 읽는 방법을 구성하는 문자열입니다.

유형: 문자열

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 SelfManagedKafkaConfiguration 속성으로 직접 전달됩니다.

DestinationConfig

Lambda가 이벤트를 처리한 후 이벤트의 대상을 지정하는 구성 객체입니다.

이 속성을 사용하여 자체 관리형 Kafka 이벤트 소스에서 실패한 간접 호출의 대상을 지정합니다.

유형: DestinationConfig

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 DestinationConfig 속성으로 직접 전달됩니다.

Enabled

이벤트 소스 매핑을 비활성화하여 폴링 및 간접 호출을 일시 중지합니다.

유형: 부울

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 Enabled 속성으로 직접 전달됩니다.

FilterCriteria

Lambda가 이벤트를 처리해야 하는지 결정하는 기준을 정의하는 객체입니다. 자세한 내용은 AWS Lambda 개발자 가이드AWS Lambda 이벤트 필터링을 참조하세요.

유형: FilterCriteria

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 FilterCriteria 속성으로 직접 전달됩니다.

KafkaBootstrapServers

귀하의 Kafka 브로커의 부트스트랩 서버 목록. 포트를 포함시킵니다(예: broker.example.com:xxxx)

유형: 목록

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

FunctionResponseTypes

이벤트 소스 매핑에 현재 적용된 응답 유형의 목록입니다. 자세한 내용은 AWS Lambda Developer Guide의 Reporting batch item failures를 참조하세요.

유효한 값: ReportBatchItemFailures

유형: 목록

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 FunctionResponseTypes 속성으로 직접 전달됩니다.

KmsKeyArn

이 이벤트와 관련된 정보를 암호화하는 키의 Amazon 리소스 이름(ARN)입니다.

유형: 문자열

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 KmsKeyArn 속성으로 직접 전달됩니다.

MaximumRecordAgeInSeconds

Lambda가 처리를 위해 함수에 보내는 기록의 최대 사용 기간입니다.

유형: 정수

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 MaximumRecordAgeInSeconds 속성으로 직접 전달됩니다.

MaximumRetryAttempts

함수가 오류를 반환할 때 재시도하는 최대 횟수입니다.

유형: 정수

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 MaximumRetryAttempts 속성으로 직접 전달됩니다.

ProvisionedPollerConfig

이벤트 소스 매핑을 컴퓨팅하는 데 사용되는 폴러의 양을 늘리기 위한 구성입니다. 이 구성은 최소 1개의 폴러와 최대 2,000개의 폴러를 허용합니다. 예시는 ProvisionedPollerConfig 예시에서 확인하세요

유형: ProvisionedPollerConfig

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 ProvisionedPollerConfig 속성으로 직접 전달됩니다.

SchemaRegistryConfig

자체 관리형 Kafka 이벤트 소스와 스키마 레지스트리를 사용하기 위한 구성입니다.

참고

이 기능에는 ProvisionedPollerConfig 구성이 필요합니다.

유형: SchemaRegistryConfig

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 SelfManagedKafkaEventSourceConfig 속성으로 직접 전달됩니다.

SourceAccessConfigurations

이벤트 소스를 보호하고 정의하는 데 사용되는 인증 프로토콜, VPC 구성 요소 또는 가상 호스트의 배열입니다.

유효한 값: BASIC_AUTH | CLIENT_CERTIFICATE_TLS_AUTH | SASL_SCRAM_256_AUTH | SASL_SCRAM_512_AUTH | SERVER_ROOT_CA_CERTIFICATE

유형: SourceAccessConfiguration 목록

필수 항목 여부:

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 SelfManagedKafkaEventSourceConfig 속성의 일부입니다.

StartingPosition

읽기를 시작하는 스트림 내의 위치입니다.

  • AT_TIMESTAMP - 기록 읽기를 시작할 시간을 지정합니다.

  • LATEST – 새 기록만 읽습니다.

  • TRIM_HORIZON – 사용 가능한 모든 기록을 처리합니다.

유효한 값: AT_TIMESTAMP | LATEST | TRIM_HORIZON

유형: 문자열

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 StartingPosition 속성으로 직접 전달됩니다.

StartingPositionTimestamp

읽기를 시작하는 시간(유닉스 시간 초 단위)입니다. StartingPositionTimestamp 언제 StartingPositionAT_TIMESTAMP으로 지정할지 정의합니다.

유형: Double

필수 항목 여부: 아니요

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 StartingPositionTimestamp 속성으로 직접 전달됩니다.

Topics

Kafka 주제의 이름입니다.

유형: 목록

필수 항목 여부: 예

CloudFormation 호환성:이 속성은 AWS::Lambda::EventSourceMapping 리소스의 Topics 속성으로 직접 전달됩니다.

예제

IAM 역할로 설정 완료

다음 예시는 Schema Registry 사용을 위해 필요한 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

AWS Glue 스키마 레지스트리를 사용하는 자체 관리형 Kafka 이벤트 소스

다음은 AWS Glue Schema Registry로 구성된 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