MSK - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

MSK

O objeto que descreve um tipo de origem do evento MSK. Para obter mais informações, consulte Como usar AWS Lambda com o Amazon MSK no Guia do AWS Lambda desenvolvedor.

AWS Serverless Application Model (AWS SAM) gera um AWS::Lambda::EventSourceMappingrecurso quando esse tipo de evento é definido.

Para usar o Schema Registry, você precisa definir permissões específicas de função do IAM para sua função. Consulte Configuração completa com funções do IAM para ver um exemplo da configuração necessária.

Sintaxe

Para declarar essa entidade em seu AWS SAM modelo, use a sintaxe a seguir.

Propriedades

ConsumerGroupId

Uma string que configura como os eventos serão lidos nos tópicos do Kafka.

Tipo: string

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a AmazonManagedKafkaConfiguration propriedade de um AWS::Lambda::EventSourceMapping recurso.

DestinationConfig

Um objeto de configuração que especifica o destino de um evento depois que o Lambda processá-lo.

Use essa propriedade para especificar o destino de invocações com falha da fonte de eventos do Amazon MSK.

Digite: DestinationConfig

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a DestinationConfig propriedade de um AWS::Lambda::EventSourceMapping recurso.

FilterCriteria

Um objeto que define os critérios que determinam se o Lambda deve processar um evento. Para obter mais informações, consulte Filtrando eventos do AWS Lambda no Guia do desenvolvedor do AWS Lambda .

Digite: FilterCriteria

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a FilterCriteria propriedade de um AWS::Lambda::EventSourceMapping recurso.

KmsKeyArn

O nome do recurso da Amazon (ARN) da chave para criptografar informações relacionadas a esse evento.

Tipo: string

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a KmsKeyArn propriedade de um AWS::Lambda::EventSourceMapping recurso.

MaximumBatchingWindowInSeconds

O máximo de tempo para reunir registros antes de invocar a função, em segundos.

Tipo: inteiro

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a MaximumBatchingWindowInSeconds propriedade de um AWS::Lambda::EventSourceMapping recurso.

ProvisionedPollerConfig

Configuração para aumentar a quantidade de pollers usados para computar mapeamentos de origem de eventos. Essa configuração permite um mínimo de 1 poller e um máximo de 20 pollers. Para obter um exemplo, consulteProvisionedPollerConfig exemplo.

Digite: ProvisionedPollerConfig

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a ProvisionedPollerConfig propriedade de um AWS::Lambda::EventSourceMapping recurso.

SchemaRegistryConfig

Configuração para usar um registro de esquema com a fonte de eventos do Kafka.

nota

Esse recurso ProvisionedPollerConfig precisa ser configurado.

Tipo: SchemaRegistryConfig

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a AmazonManagedKafkaEventSourceConfig propriedade de um AWS::Lambda::EventSourceMapping recurso.

SourceAccessConfigurations

Uma matriz do protocolo de autenticação, os componentes da VPC ou o host virtual para proteger e definir a fonte de eventos.

Valores válidos: CLIENT_CERTIFICATE_TLS_AUTH

Tipo: lista de SourceAccessConfiguration

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade faz parte da AmazonManagedKafkaEventSourceConfigpropriedade de um recurso. AWS::Lambda::EventSourceMapping

StartingPosition

A posição em um fluxo da qual você deseja iniciar a leitura.

  • AT_TIMESTAMP – Especifique um tempo a partir do qual iniciar a leitura dos registros.

  • LATEST – Leia somente registros novos.

  • TRIM_HORIZON – Processe todos os registros disponíveis.

Valores válidos: AT_TIMESTAMP | LATEST | TRIM_HORIZON

Tipo: string

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a StartingPosition propriedade de um AWS::Lambda::EventSourceMapping recurso.

StartingPositionTimestamp

O tempo a partir do qual iniciar a leitura, em segundos no horário do Unix. Defina StartingPositionTimestamp quando StartingPosition é especificado como .AT_TIMESTAMP

Tipo: duplo

Obrigatório: não

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a StartingPositionTimestamp propriedade de um AWS::Lambda::EventSourceMapping recurso.

Stream

O nome de recurso da Amazon (ARN) do fluxo de dados ou um consumidor de fluxo.

Tipo: string

Obrigatório: Sim

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a EventSourceArn propriedade de um AWS::Lambda::EventSourceMapping recurso.

Topics

O nome do tópico do Kafka.

Tipo: lista

Obrigatório: Sim

AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a Topics propriedade de um AWS::Lambda::EventSourceMapping recurso.

Exemplos

Configuração completa com funções do IAM

O exemplo a seguir mostra uma configuração completa, incluindo a configuração de função do IAM necessária para usar o Schema Registry:

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 exemplo

ProvisionedPollerConfig: MinimumPollers: 1 MaximumPollers: 20

Exemplo do Amazon MSK para cluster existente

Veja a seguir um exemplo de um tipo de fonte de MSK evento para um cluster Amazon MSK que já existe em um Conta da AWS.

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

Exemplo do Amazon MSK para cluster declarado no mesmo modelo

Veja a seguir um exemplo de um tipo de fonte de MSK evento para um cluster Amazon MSK declarado no mesmo arquivo de modelo.

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

Fonte de eventos MSK com registro de esquema

Veja a seguir um exemplo de um tipo de fonte de MSK eventos configurado com um registro de esquema.

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

Fonte de eventos MSK com Confluent Schema Registry

Veja a seguir um exemplo de um tipo de fonte de MSK evento configurado com um Confluent Schema Registry.

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