Configurar as permissões do perfil de execução do Lambda
Além de acessar o cluster do Amazon MSK, a função e o mapeamento da origem do evento precisam de permissões para realizar várias ações de API do Amazon MSK. Adicione essas permissões ao perfil de execução da função. Se os usuários precisarem de acesso, adicione as permissões necessárias à política de identidades para o usuário ou o perfil.
Para incluir todas as permissões necessárias, você pode anexar a política gerenciada AWSLambdaMSKExecutionRole ao seu perfil de execução. Outra opção é adicionar cada permissão manualmente.
Tópicos
Permissões básicas
O perfil de execução da função do Lambda deve ter as seguintes permissões exigidas para criar e armazenar logs no CloudWatch Logs.
Permissões de acesso a cluster
Para que o Lambda acesse o cluster do Amazon por você, sua função do Lambda deve ter as seguintes permissões no perfil de execução:
-
kafka:DescribeVpcConnection: necessária apenas para mapeamentos da origem do evento entre contas.
-
kafka:ListVpcConnections: não é exigida no perfil de execução, mas é exigida para uma entidade principal do IAM que está criando um mapeamento da origem do evento entre contas.
Você precisa adicionar apenas uma das duas: kafka:DescribeCluster ou kafka:DescribeClusterV2. Para clusters provisionados do Amazon MSK, qualquer uma das duas permissões funciona. Para clusters com tecnologia sem servidor do Amazon MSK, você deve usar kafka:DescribeClusterV2.
nota
O Lambda tem planos de remover a permissão kafka:DescribeCluster da política gerenciada AWSLambdaMSKExecutionRole. Se você usar essa política, migre todas as aplicações que usam kafka:DescribeCluster para usar kafka:DescribeClusterV2.
Permissões da VPC
Se o cluster do Amazon MSK estiver em uma sub-rede privada da VPC, a função do Lambda deverá ter permissões adicionais para acessar os recursos da Amazon VPC. Esses recursos incluem a VPC, as sub-redes, os grupos de segurança e as interfaces de rede. O perfil de execução da função precisa ter as seguintes permissões:
Permissões opcionais.
Sua função Lambda também pode precisar dessas permissões para:
-
Acesse o segredo SCRAM, se estiver usando autenticação SASL/SCRAM.
-
Descreva seu segredo do Secrets Manager, se estiver usando SASL/SCRAM ou autenticação mTLS.
-
Acesse sua chave do AWS KMS gerenciada pelo cliente se quiser criptografar os critérios de filtro.
Eles correspondem às seguintes permissões necessárias:
Além disso, se quiser enviar registros cuja invocação não teve sucesso para um destino em caso de falha, você precisará das seguintes permissões, dependendo do tipo de destino:
-
Para destinos no Amazon SQS: sqs:SendMessage
-
Para destinos no Amazon SNS: sns:Publish
-
Para destinos em buckets do Amazon S3: s3:PutObject e s3:ListBucket
Solução de problemas de erros comuns de autenticação e autorização
Se alguma das permissões necessárias para consumir dados do cluster do Amazon MSK estiver ausente, o Lambda exibirá uma mensagem de erro no mapeamento da fonte de eventos em LastProcessingResult. Para obter mais informações sobre os métodos de autenticação compatíveis, consulte Configurar os métodos de autenticação de cluster.
Mensagens de erro
O cluster falhou ao autorizar o Lambda
Para SASL/SCRAM ou mTLS, esse erro indica que o usuário fornecido não tem todas estas permissões da lista de controle de acesso (ACL) do Kafka necessárias:
Cluster DescribeConfigs
Descrever grupo
Ler grupo
Descrever tópico
Ler tópico
Para controle de acesso do IAM, a função de execução da função não tem uma ou mais permissões necessárias para acessar o grupo ou tópico. Revise a lista de permissões exigidas nesta página.
Ao criar ACLs do Kafka ou uma política do IAM com as permissões necessárias do cluster do Kafka, é necessário especificar o tópico e o grupo como recursos. O nome do tópico deve corresponder ao tópico no mapeamento da fonte de eventos. O nome do grupo deve corresponder ao UUID do mapeamento da fonte de eventos.
Depois de adicionar as permissões necessárias à função de execução, poderá levar vários minutos para que as alterações entrem em vigor.
SASL authentication failed (Falha na autenticação SASL)
Para SASL/SCRAM, esse erro indica que o nome de usuário e a senha fornecidos são inválidos.
Para controle de acesso do IAM, a função de execução não tem a permissão de kafka-cluster:Connect
para o cluster do MSK. Adicione essa permissão à função e especifique o nome do recurso da Amazon (ARN) do cluster como recurso.
É possível que esse erro ocorra de modo intermitente. O cluster rejeitará conexões depois que o número de conexões de TCP exceder a cota de serviço do Amazon MSK. O Lambda recua e tenta novamente até que uma conexão seja bem-sucedida. Depois que o Lambda se conecta ao cluster e sonda por registros, o último resultado de processamento é alterado para OK
.
Server failed to authenticate Lambda (Falha ao autenticar o Lambda no servidor)
Esse erro indica que não foi possível autenticar os agentes do Kafka do Amazon MSK com o Lambda. Esse erro pode ocorrer por estes motivos:
Você não forneceu um certificado de cliente para autenticação mTLS.
Você forneceu um certificado de cliente, mas os agentes não estão configurados para usar mTLS.
Um certificado de cliente não é confiável para os agentes.
Provided certificate or private key is invalid (O certificado ou a chave privada fornecida é inválida)
Esse erro indica que o consumidor do Amazon MSK não conseguiu usar o certificado ou a chave privada fornecida. Verifique se o certificado e a chave usam o formato PEM e que a criptografia de chave privada usa um algoritmo PBES1. Consulte Configurar o segredo de mTLS para obter mais informações.