Configuração da origem do evento do Amazon MQ para o Lambda
Configuração da segurança de rede
Para conceder ao Lambda acesso total ao Amazon MQ por meio do mapeamento da origem do evento, seu agente deve usar um endpoint público (endereço IP público) ou você deve fornecer acesso à Amazon VPC na qual o agente foi criado.
Ao usar o Amazon MQ com o Lambda, recomendamos a criação de endpoints de VPC do AWS PrivateLink para conceder acesso da sua função aos recursos na sua Amazon VPC.
nota
Os endpoints de VPC do AWS PrivateLink são necessários para funções com mapeamentos da origem de eventos que usam o modo padrão (sob demanda) para pesquisadores de eventos. Se o mapeamento da origem do evento usa o modo provisionado, você não precisa configurar endpoints de VPC do AWS PrivateLink.
Crie um endpoint para fornecer acesso aos seguintes recursos:
-
Lambda: crie um endpoint para a entidade principal de serviço do Lambda.
-
AWS STS: crie um endpoint para o AWS STS com a finalidade de possibilitar que uma entidade principal de serviço assuma um perfil em seu nome.
-
Secrets Manager: caso o seu agente use o Secrets Manager para armazenar credenciais, crie um endpoint específico para o Secrets Manager.
Como alternativa, configure um gateway NAT em cada sub-rede pública da Amazon VPC. Para ter mais informações, consulte Habilitar o acesso à Internet para funções do Lambda conectadas à VPC.
Ao criar um mapeamento da origem do evento para o Amazon MQ, o Lambda verifica se as interfaces de rede elástica (ENIs) já estão presentes nas sub-redes e nos grupos de segurança configurados para a Amazon VPC. Se o Lambda encontrar ENIs existentes, ele tentará reutilizá-las. Caso contrário, o Lambda criará novas ENIs para se conectar à origem do evento e invocar sua função.
nota
As funções do Lambda sempre são executadas em VPCs de propriedade do serviço Lambda. A configuração de VPC da sua função não afetará o mapeamento da origem do evento. Somente a configuração de rede da origem dos eventos determina como o Lambda estabelece conexão com a origem dos eventos.
Configure os grupos de segurança para a Amazon VPC que contém o agente. Por padrão, o Amazon MQ usa as seguintes portas: 61617
(Amazon MQ para ActiveMQ) e 5671
(Amazon MQ para RabbitMQ).
-
Regras de entrada: permitem todo o tráfego na porta padrão do agente para o grupo de segurança associado à origem dos eventos.
-
Regras de saída: permitir todo o tráfego na porta
443
para todos os destinos. Além disso, permitem todo o tráfego na porta padrão do agente para o grupo de segurança associado à origem dos eventos. -
Regras de entrada para o endpoint da Amazon VPC: caso você esteja usando um endpoint da Amazon VPC, o grupo de segurança associado ao endpoint da Amazon VPC deve permitir o tráfego de entrada na porta
443
usando o grupo de segurança do agente.
Caso o agente use autenticação, é possível restringir a política de endpoint para o endpoint do Secrets Manager. Para chamar a API do Secrets Manager, o Lambda usa seu perfil de função, e não a entidade principal de serviço do Lambda.
exemplo Política de endpoint da VPC: endpoint do Secrets Manager
{ "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws::iam::123456789012:role/
my-role
" ] }, "Resource": "arn:aws::secretsmanager:us-west-2
:123456789012:secret:my-secret
" } ] }
Quando você usa os endpoints da Amazon VPC, a AWS roteia suas chamadas de API para invocar sua função usando a interface de rede elástica (ENI) do endpoint. A entidade principal do serviço Lambda precisa chamar lambda:InvokeFunction
para quaisquer perfis e funções que usem essas ENIs.
Por padrão, os endpoints da Amazon VPC têm políticas do IAM abertas que permitem amplo acesso aos recursos. A prática recomendada é restringir essas políticas para executar as ações necessárias usando esse endpoint. Para garantir que seu mapeamento da origem do evento seja capaz de invocar sua função do Lambda, a política de endpoint da VPC deve permitir que a entidade principal do serviço Lambda chame sts:AssumeRole
e lambda:InvokeFunction
. A restrição de suas políticas de endpoint da VPC para permitir apenas chamadas de API originadas em sua organização impedirá o funcionamento adequado do mapeamento da origem do evento; portanto, "Resource": "*"
é necessário nessas políticas.
O seguinte exemplo de políticas de endpoint da VPC mostra como conceder o acesso necessário à entidade principal do serviço Lambda para os endpoints do AWS STS e Lambda.
exemplo Política de endpoint da VPC: endpoint do AWS STS
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
exemplo Política de endpoint da VPC: endpoint do Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
Criar o mapeamento da origem do evento
Crie um mapeamento de fontes de eventos para instruir o Lambda a enviar registros de um agente do Amazon MQ para uma função do Lambda. É possível criar vários mapeamentos de origem de evento para processar os mesmos dados com várias funções ou processar itens de várias fontes com uma única função.
Para configurar sua função para ler do Amazon MQ, adicione as permissões necessárias e crie um acionador do MQ no console do Lambda.
Para ler os registros de um agente do Amazon MQ, a função do Lambda precisa das permissões a seguir. Você concede ao Lambda permissão para interagir com o agente do Amazon MQ e seus recursos subjacentes adicionando instruções de permissão ao perfil de execução da função:
nota
Ao usar uma chave criptografada gerenciada pelo cliente, adicione a permissão kms:Decrypt
também.
Para adicionar permissões e criar um acionador
Abra a página Funções
do console do Lambda. -
Escolha o nome de uma função.
-
Escolha a guia Configuration (Configuração) e, depois, Permissions (Permissões).
-
Em Nome do perfil, escolha o link para seu perfil de execução. Esse link abre o perfil no console do IAM.
-
Escolha Adicionar permissões e, em seguida, Criar política em linha.
-
Na seção Editor de políticas, escolha JSON. Insira a seguinte política. A função precisa dessas permissões para ler de um agente do Amazon MQ.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mq:DescribeBroker", "secretsmanager:GetSecretValue", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
nota
Ao usar uma chave gerenciada pelo cliente criptografada, também é necessário adicionar a permissão
kms:Decrypt
. -
Escolha Próximo. Digite um nome para a política e escolha Criar política.
-
Volte para a sua função no console do Lambda Em Visão geral da função, escolha Adicionar gatilho.
-
Selecione o tipo de acionador MQ.
-
Configure as opções necessárias e escolha Add (Adicionar).
O Lambda oferece suporte às seguintes opções de fontes de eventos do Amazon MQ:
-
Agente do MQ— Selecione um corretor do Amazon MQ.
-
Batch size (Tamanho do lote): defina o número máximo de mensagens a serem recuperadas em um único lote.
-
Queue name (Nome da fila): digite a fila do Amazon MQ a ser consumida.
-
Configuração do acesso à fonte— Insira as informações do host virtual e o segredo do Secrets Manager que armazena as credenciais do agente.
-
Enable trigger (Habilitar acionador): desabilite o acionador para interromper o processamento de registros.
Para habilitar ou desabilitar o trigger (ou excluí-lo), selecione o trigger do MQ no designer. Para reconfigurar o trigger, use as operações da API de mapeamento de fontes de eventos.