MSK - AWS Serverless Application Model

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

MSK

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

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

스키마 레지스트리를 사용하려면 함수에 대한 특정 IAM 역할 권한을 정의해야 합니다. 필수 구성의 예는 IAM 역할로 설정 완료를 참조하세요.

구문

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

속성

ConsumerGroupId

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

유형: 문자열

필수 항목 여부: 아니요

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

DestinationConfig

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

이 속성을 사용하여 Amazon MSK 이벤트 소스에서 실패한 간접 호출의 대상을 지정합니다.

유형: DestinationConfig

필수 항목 여부: 아니요

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

FilterCriteria

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

유형: FilterCriteria

필수 항목 여부: 아니요

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

KmsKeyArn

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

유형: 문자열

필수 항목 여부: 아니요

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

MaximumBatchingWindowInSeconds

함수를 호출하기 전에 기록을 수집할 최대 기간(단위: 초)입니다.

유형: 정수

필수 항목 여부: 아니요

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

ProvisionedPollerConfig

이벤트 소스 매핑을 계산하는 데 사용되는 폴러의 양을 늘리는 구성입니다. 이 구성은 최소 1개의 폴러와 최대 20개의 폴러를 허용합니다. 예제는 단원을 참조하십시오ProvisionedPollerConfig 예제.

유형: ProvisionedPollerConfig

필수 항목 여부: 아니요

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

SchemaRegistryConfig

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

참고

이 기능을 구성ProvisionedPollerConfig해야 합니다.

유형: SchemaRegistryConfig

필수 항목 여부: 아니요

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

SourceAccessConfigurations

이벤트 소스를 보호하기 위한 일련의 인증 프로토콜 또는 VPC 구성 요소입니다.

유효한 값: CLIENT_CERTIFICATE_TLS_AUTH

유형: SourceAccessConfiguration 목록

필수 항목 여부: 아니요

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

StartingPosition

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

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

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

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

유효한 값: AT_TIMESTAMP | LATEST | TRIM_HORIZON

유형: 문자열

필수 항목 여부: 아니요

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

StartingPositionTimestamp

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

유형: Double

필수 항목 여부: 아니요

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

Stream

데이터 스트림 혹은 스트림 컨슈머의 Amazon 리소스 이름(ARN).

유형: 문자열

필수 항목 여부: 예

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

Topics

Kafka 주제의 이름입니다.

유형: 목록

필수 항목 여부: 예

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

예시

IAM 역할로 설정 완료

다음 예제에서는 스키마 레지스트리를 사용하는 데 필요한 IAM 역할 구성을 포함한 전체 설정을 보여줍니다.

Parameters: PreCreatedSubnetOne: Type: String PreCreatedSubnetTwo: Type: String MskClusterName4: 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: KafkaClusterPermissions PolicyDocument: Statement: - Action: [kafka:DescribeClusterV2, kafka:GetBootstrapBrokers] Effect: Allow Resource: 'arn:aws:kafka:us-east-1:123456789012:cluster/*' - 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} MyMskCluster: Type: AWS::MSK::Cluster Properties: BrokerNodeGroupInfo: ClientSubnets: - Ref: PreCreatedSubnetOne - Ref: PreCreatedSubnetTwo InstanceType: kafka.t3.small StorageInfo: EBSStorageInfo: VolumeSize: 1 ClusterName: Ref: MskClusterName4 KafkaVersion: 3.8.x NumberOfBrokerNodes: 2 MyMskStreamProcessor: Type: AWS::Serverless::Function Properties: Runtime: nodejs18.x Handler: index.handler CodeUri: ${codeuri} Role: Fn::GetAtt: [MyLambdaExecutionRole, Arn] Events: MyMskEvent: Type: MSK Properties: StartingPosition: LATEST Stream: Ref: MyMskCluster SourceAccessConfigurations: - Type: SASL_SCRAM_512_AUTH URI: !Sub arn:${AWS::Partition}:secretsmanager:us-west-2:123456789012:secret:my-path/my-secret-name-1a2b3c Topics: - SchemaRegistryTestTopic 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: 20

기존 클러스터를 위한 Amazon MSK 예제

다음은 이미 AWS 계정에 존재하는 Amazon MSK 클러스터의 MSK 이벤트 소스 유형의 예입니다.

YAML

Events: MSKEvent: Type: MSK Properties: StartingPosition: LATEST Stream: arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2 Topics: - MyTopic

동일한 템플릿에 선언된 클러스터에 대한 Amazon MSK 예제

다음은 동일한 템플릿 파일에 선언된 Amazon MSK 클러스터의 MSK 이벤트 소스 유형입니다.

YAML

Events: MSKEvent: Type: MSK Properties: StartingPosition: LATEST Stream: Ref: MyMskCluster # This must be the name of an MSK cluster declared in the same template file Topics: - MyTopic

스키마 레지스트리가 있는 MSK 이벤트 소스

다음은 스키마 레지스트리로 구성된 MSK 이벤트 소스 유형의 예입니다.

Events: MSKEvent: Type: MSK Properties: StartingPosition: LATEST Stream: Ref: MyMskCluster Topics: - SchemaRegistryTestTopic ProvisionedPollerConfig: MinimumPollers: 1 SchemaRegistryConfig: SchemaRegistryURI: !Sub arn:${AWS::Partition}:glue:us-west-2:123456789012:registry/myregistry EventRecordFormat: JSON SchemaValidationConfigs: - Attribute: KEY - Attribute: VALUE

Confluent 스키마 레지스트리가 있는 MSK 이벤트 소스

다음은 Confluent 스키마 레지스트리로 구성된 MSK 이벤트 소스 유형의 예입니다.

Events: MSKEvent: Type: MSK Properties: StartingPosition: LATEST Stream: Ref: MyMskCluster Topics: - SchemaRegistryTestTopic 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