Configurazione del cluster e della rete Apache Kafka autogestiti per Lambda
Per connettere la funzione Lambda al cluster Apache Kafka autogestito, devi configurare correttamente il cluster e la rete in cui si trova. Questa pagina spiega come configurare il cluster e la rete. Se il cluster e la rete sono già configurati correttamente, consulta Configurazione di origini eventi Apache Kafka autogestito per Lambda Configurare la mappatura delle sorgenti degli eventi.
Un cluster Apache Kafka autogestito.
Puoi ospitare il tuo cluster Apache Kafka autogestito con provider di servizi cloud come Confluent Cloud
Configurare la sicurezza della rete
Per concedere a Lambda l'accesso completo ad Apache Kafka autogestito tramite lo strumento di mappatura dell'origine degli eventi, il cluster deve utilizzare un endpoint pubblico (indirizzo IP pubblico) oppure devi fornire l'accesso all'Amazon VPC in cui hai creato il cluster.
Quando usi Apache Kafka autogestito con Lambda, crea endpoint VPC AWS PrivateLink che forniscono alla funzione l'accesso alle risorse del tuo Amazon VPC.
Nota
Gli endpoint VPC AWS PrivateLink sono necessari per le funzioni con lo strumento di mappatura dell'origine degli eventi delle origini degli eventi che utilizzano la modalità predefinita (on demand) per i poller degli eventi. Se lo strumento di mappatura dell'origine degli eventi utilizza la modalità provisioning, non è necessario configurare gli endpoint VPC AWS PrivateLink.
Crea un endpoint per fornire l'accesso alle seguenti risorse:
-
Lambda: crea un endpoint per il principale del servizio Lambda.
-
AWS STS: crea un endpoint per AWS STS in modo che un principale del servizio possa assumere un ruolo per conto tuo.
-
Secrets Manager: se il tuo cluster utilizza Secrets Manager per archiviare le credenziali, crea un endpoint per Secrets Manager.
In alternativa, configura un gateway NAT su ogni sottorete pubblica in Amazon VPC. Per ulteriori informazioni, consulta Abilitare l'accesso a Internet per funzioni Lambda connesse a un VPC.
Quando crei uno strumento di mappatura dell'origine degli eventi per Apache Kafka autogestito, Lambda verifica se le interfacce di rete elastiche (ENI) sono già presenti per le sottoreti e i gruppi di sicurezza configurati per il tuo Amazon VPC. Se Lambda trova ENI esistenti, prova a riutilizzarle. Altrimenti, Lambda crea nuove ENI per connettersi all'origine dell'evento e richiamare la tua funzione.
Nota
Le funzioni Lambda vengono sempre eseguite all'interno di VPC di proprietà del servizio Lambda. La configurazione VPC della funzione non influisce sullo strumento di mappatura dell'origine degli eventi. Solo la configurazione di rete dell'origine dell'evento determina il modo in cui Lambda si connette all'origine dell'evento.
Configura i gruppi di sicurezza per l'Amazon VPC contenente il tuo cluster. Per impostazione predefinita, Apache Kafka autogestito utilizza le seguenti porte: 9092.
-
Regole in ingresso: consenti tutto il traffico sulla porta del broker predefinita per il gruppo di sicurezza associato all'origine eventi. In alternativa, puoi utilizzare una regola del gruppo di sicurezza autoreferenziante per consentire l'accesso da istanze all'interno dello stesso gruppo di sicurezza.
-
Regole in uscita: consenti tutto il traffico sulla porta
443per destinazioni esterne se la funzione deve comunicare con AWS i servizi. In alternativa, puoi anche utilizzare una regola del gruppo di sicurezza autoreferenziale per limitare l'accesso al broker se non hai bisogno di comunicare con altri servizi. AWS -
Regole di ingresso degli endpoint Amazon VPC: se utilizzi un endpoint Amazon VPC, il gruppo di sicurezza associato all'endpoint Amazon VPC deve consentire il traffico in entrata sulla porta
443dal gruppo di sicurezza del cluster.
Se il cluster utilizza l'autenticazione, puoi anche limitare la policy degli endpoint per l'endpoint Secrets Manager. Per chiamare l'API Secrets Manager, Lambda utilizza il ruolo della funzione, non il principale del servizio Lambda.
Esempio Policy dell'endpoint VPC: endpoint 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 utilizzi gli endpoint Amazon VPC, AWS indirizza le chiamate API per invocare la funzione utilizzando l'interfaccia di rete elastica (ENI) dell'endpoint. Il principale del servizio Lambda deve chiamare lambda:InvokeFunction su tutti i ruoli e le funzioni che utilizzano tali ENI.
Per impostazione predefinita, gli endpoint Amazon VPC dispongono di policy IAM aperte che consentono un ampio accesso alle risorse. La best practice consiste nel limitare queste policy per eseguire le azioni necessarie utilizzando quell'endpoint. Per garantire che lo strumento di mappatura dell'origine degli eventi sia in grado di invocare la funzione Lambda, la policy degli endpoint VPC deve consentire al principale del servizio Lambda di chiamare sts:AssumeRole e lambda:InvokeFunction. Limitare le policy degli endpoint VPC per consentire solo le chiamate API provenienti dall'organizzazione impedisce il corretto funzionamento dello strumento di mappatura dell'origine degli eventi, pertanto "Resource": "*" è richiesto in queste policy.
Il seguente esempio di policy degli endpoint VPC mostra come concedere l'accesso richiesto al principale del servizio Lambda per gli endpoint AWS STS e Lambda.
Esempio Policy dell'endpoint VPC: endpoint AWS STS
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
Esempio Policy dell'endpoint VPC: endpoint Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }