Un argomento di importazione di Amazon Managed Streaming for Apache Kafka (Amazon MSK) ti consente di importare continuamente i dati da Amazon MSK come origine esterna e in Pub/Sub. Poi puoi trasmettere i dati in streaming in una delle destinazioni supportate da Pub/Sub.
Questo documento spiega come creare e gestire gli argomenti di importazione di Amazon MSK. Per creare un argomento standard, consulta Creare un argomento standard.
Per saperne di più sugli argomenti di importazione, consulta Informazioni sugli argomenti di importazione.
Prima di iniziare
Scopri di più sulla procedura di pubblicazione di Pub/Sub.
Configura i ruoli e le autorizzazioni necessari per gestire gli argomenti di importazione di Amazon MSK, tra cui:
Configura la federazione delle identità per i carichi di lavoro in modo che Google Cloud possa accedere al servizio di streaming esterno.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per creare e gestire gli argomenti di importazione di Amazon MSK, chiedi all'amministratore di concederti il ruolo IAM Editor Pub/Sub (roles/pubsub.editor
) per l'argomento o il progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare e gestire gli argomenti di importazione di Amazon MSK. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per creare e gestire gli argomenti di importazione di Amazon MSK sono necessarie le seguenti autorizzazioni:
-
Crea un argomento di importazione:
pubsub.topics.create
-
Elimina un argomento di importazione:
pubsub.topics.delete
-
Ricevi un argomento di importazione:
pubsub.topics.get
-
Elenca un argomento di importazione:
pubsub.topics.list
-
Pubblica in un argomento di importazione:
pubsub.topics.publish
-
Aggiorna un argomento di importazione:
pubsub.topics.update
-
Recupera il criterio IAM per un argomento di importazione:
pubsub.topics.getIamPolicy
-
Configura il criterio IAM per un argomento di importazione:
pubsub.topics.setIamPolicy
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Puoi configurare il controllo dell'accesso a livello di progetto e di singola risorsa.
Configurare l'identità federata per accedere ad Amazon MSK
La federazione delle identità per i workload consente ai Google Cloud servizi di accedere ai workload in esecuzione al di fuori di Google Cloud. Con la federazione delle identità, non è necessario gestire o trasmettere le credenziali per Google Cloud accedere alle risorse in altri cloud. In alternativa, puoi utilizzare le identità dei carichi di lavoro stessi per autenticarti Google Cloud e accedere alle risorse.
Crea un account di servizio in Google Cloud
Questo passaggio è facoltativo. Se hai già un account di servizio, puoi utilizzarlo in questa procedura anziché crearne uno nuovo. Se utilizzi un account di servizio esistente, vai a Registra l'ID univoco dell'account di servizio per il passaggio successivo.
Per gli argomenti di importazione di Amazon MSK, Pub/Sub utilizza l'account di servizio come identità per accedere alle risorse da AWS.
Per ulteriori informazioni sulla creazione di un account di servizio, inclusi i prerequisiti, i ruoli e le autorizzazioni richiesti e le linee guida per la denominazione, consulta Creare account di servizio. Dopo aver creato un account di servizio, potrebbe essere necessario attendere almeno 60 secondi prima di utilizzarlo. Questo comportamento si verifica perché le operazioni di lettura sono infine coerenti; può essere necessario del tempo prima che il nuovo account di servizio sia visibile.
Registra l'ID univoco dell'account di servizio
Per configurare un ruolo nella console AWS, devi disporre di un ID univoco dell'account di servizio.
Nella console Google Cloud, vai alla pagina dei dettagli dell'account di servizio.
Fai clic sull'account di servizio appena creato o su quello che hai intenzione di utilizzare.
Nella pagina Dettagli account di servizio, registra il numero ID univoco.
L'ID è necessario come parte del flusso di lavoro per configurare un ruolo nella console AWS.
Aggiungi il ruolo Creatore token account di servizio all'account di servizio Pub/Sub
Il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
) consente ai principali di creare credenziali di breve durata per un account di servizio. Questi token o queste credenziali vengono utilizzati per simulare l'identità
dell'account di servizio.
Per ulteriori informazioni sull'impersonificazione degli account di servizio, consulta Impersonificazione degli account di servizio.
Puoi anche aggiungere il ruolo Publisher Pub/Sub (roles/pubsub.publisher
)
durante questa procedura. Per ulteriori informazioni sul ruolo e sul motivo per cui lo aggiungi, consulta Aggiungere il ruolo Publisher Pub/Sub all'account di servizio Pub/Sub.
Nella console Google Cloud, vai alla pagina IAM.
Fai clic sulla casella di controllo Includi concessioni di ruoli fornite da Google.
Cerca l'account di servizio con il formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.Per questo account di servizio, fai clic sul pulsante Modifica entità.
Se necessario, fai clic su Aggiungi un altro ruolo.
Cerca e fai clic sul ruolo Creatore token account di servizio (
roles/iam.serviceAccountTokenCreator
).Fai clic su Salva.
Creare un criterio in AWS
In AWS devi avere un criterio che consenta a Pub/Sub di autenticarsi in AWS in modo che possa importare i dati da Amazon MSK.
- Per altri metodi e informazioni su come creare un criterio in AWS, consulta Creare i criteri IAM.
Per creare un criterio in AWS, svolgi i seguenti passaggi:
Accedi alla Console di gestione AWS e apri la console IAM.
Nel riquadro di navigazione della console per IAM, fai clic su Gestione dell'accesso > Criteri.
Fai clic su Crea criterio.
In Fai clic su un servizio, fai clic su MSK.
Per Azione consentita,fai clic su Lettura > GetBootstrapBrokers.
Questa azione concede l'autorizzazione per recuperare i broker di bootstrap che Pub/Sub utilizza per connettersi al cluster MSK.
Fai clic su Aggiungi altre autorizzazioni.
In Seleziona un servizio, fai clic su API Apache Kafka per MSK.
Per Azione consentita, seleziona quanto segue:
Elenco > DescriviArgomento
Questa azione concede l'autorizzazione per consentire all'argomento di importazione Pub/Sub di ottenere dettagli sull'argomento Kafka Amazon MSK.
Leggi > LeggiDati
Questa azione concede l'autorizzazione per leggere i dati dall'argomento Kafka di Amazon MSK.
Scrivere > Collega
Questa azione concede l'autorizzazione per connettersi e autenticarsi al cluster Kafka Amazon MSK.
In Risorse, specifica l'ARN del cluster (se vuoi limitare il criterio a cluster specifici, che è consigliabile).
Fai clic su Aggiungi altre autorizzazioni.
In Seleziona un servizio, fai clic su STS.
Per Azione consentita, fai clic su Scrittura > AssumeRoleWithWebIdentity.
Questa azione concede l'autorizzazione per ottenere un insieme di credenziali di sicurezza temporanee per l'autenticazione di Pub/Sub in Amazon MSK tramite la federazione delle identità.
Fai clic su Avanti.
Inserisci un nome e una descrizione per la norma.
Fai clic su Crea criterio.
Creare un ruolo in AWS utilizzando un criterio di attendibilità personalizzato
Devi creare un ruolo in AWS in modo che Pub/Sub possa autenticarsi in AWS per importare i dati da Amazon MSK.
Accedi alla Console di gestione AWS e apri la console IAM.
Nel riquadro di navigazione della console IAM, fai clic su Ruoli.
Fai clic su Crea ruolo.
In Seleziona entità attendibile, fai clic su Norma di attendibilità personalizzata.
Nella sezione Norma di attendibilità personalizzata, inserisci o incolla quanto segue:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "<SERVICE_ACCOUNT_UNIQUE_ID>" } } } ] }
Sostituisci
<SERVICE_ACCOUNT_UNIQUE_ID>
con l'ID univoco dell'account di servizio registrato in Registrare l'ID univoco dell'account di servizio.Fai clic su Avanti.
Per Aggiungi autorizzazioni, cerca e fai clic sul criterio personalizzato appena creato.
Fai clic su Avanti.
Inserisci un nome e una descrizione per il ruolo.
Fai clic su Crea ruolo.
Aggiungi il ruolo Publisher Pub/Sub all'entità Pub/Sub
Per attivare la pubblicazione, devi assegnare un ruolo di publisher all'account di servizio Pub/Sub in modo che Pub/Sub possa pubblicare nell'argomento di importazione di Amazon MSK.
Attivare la pubblicazione da tutti gli argomenti
Utilizza questo metodo se non hai creato argomenti di importazione di Amazon MSK.
Nella console Google Cloud, vai alla pagina IAM.
Fai clic sulla casella di controllo Includi concessioni di ruoli fornite da Google.
Cerca l'account di servizio con il formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.Per questo account di servizio, fai clic sul pulsante Modifica entità.
Se necessario, fai clic su Aggiungi un altro ruolo.
Cerca e fai clic sul ruolo Publisher Pub/Sub (
roles/pubsub.publisher
).Fai clic su Salva.
Attivare la pubblicazione da un singolo argomento
Utilizza questo metodo solo se l'argomento di importazione Amazon MSK esiste già.
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Esegui il comando
gcloud pubsub topics add-iam-policy-binding
:gcloud pubsub topics add-iam-policy-binding TOPIC_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role="roles/pubsub.publisher"
Sostituisci quanto segue:
TOPIC_ID
: l'ID dell'argomento di importazione Amazon MSK.PROJECT_NUMBER
: il numero del progetto. Per visualizzare il numero del progetto, consulta Identificazione dei progetti.
Aggiungi il ruolo Utente account di servizio all'account di servizio
Il ruolo Utente account di servizio (roles/iam.serviceAccountUser
) include l'autorizzazione iam.serviceAccounts.actAs
che consente a un'entità di collegare un account di servizio alle impostazioni di importazione dell'argomento Amazon MSK e di utilizzarlo per l'identità federata.
Nella console Google Cloud, vai alla pagina IAM.
Per l'entità che emette le chiamate di creazione o aggiornamento degli argomenti, fai clic sul pulsante Modifica entità.
Se necessario, fai clic su Aggiungi un altro ruolo.
Cerca e fai clic sul ruolo Utente account di servizio (
roles/iam.serviceAccountUser
).Fai clic su Salva.
Utilizzare gli argomenti di importazione di Amazon MSK
Puoi creare un nuovo argomento di importazione o modificarne uno esistente.
Considerazioni
La creazione separata dell'argomento e della sottoscrizione, anche se eseguita in rapida successione, può comportare la perdita di dati. Esiste un breve periodo di tempo in cui l'argomento esiste senza un abbonamento. Se durante questo periodo vengono inviati dati all'argomento, andranno persi. Se crei prima l'argomento, poi la sottoscrizione e infine converti l'argomento in un argomento di importazione, garantisci che nessun messaggio venga perso durante il processo di importazione.
Se devi ricreare l'argomento Kafka di un argomento di importazione esistente con lo stesso nome, non puoi semplicemente eliminare l'argomento Kafka e ricrearlo. Questa azione può invalidare la gestione dell'offset di Pub/Sub, il che può comportare la perdita di dati. Per attenuare il problema, segui questi passaggi:
- Elimina l'argomento di importazione Pub/Sub.
- Elimina l'argomento Kafka.
- Crea l'argomento Kafka.
- Crea l'argomento di importazione Pub/Sub.
I dati di un argomento Kafka Amazon MSK vengono sempre letti dall'offset minimo.
Crea gli argomenti di importazione di Amazon MSK
Per saperne di più sulle proprietà associate a un argomento, consulta Proprietà di un argomento.
Assicurati di aver completato le seguenti procedure:
Aggiungi il ruolo Publisher Pub/Sub all'account di servizio Pub/Sub
Aggiungi il ruolo Utente account di servizio all'account di servizio
Per creare un argomento di importazione Amazon MSK:
Console
Nella console Google Cloud, vai alla pagina Topic.
Fai clic su Crea argomento.
Nel campo ID argomento, inserisci un ID per l'argomento di importazione Amazon MSK. Per ulteriori informazioni sugli argomenti relativi ai nomi, consulta le linee guida per i nomi.
Seleziona Aggiungi una sottoscrizione predefinita.
Seleziona Attiva importazione.
Per l'origine di importazione, seleziona Amazon MSK.
Inserisci i seguenti dettagli:
ARN cluster: l'ARN di Amazon MSK che stai importando in Pub/Sub. Il formato dell'ARN è il seguente:
arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}
.Argomento: il nome dell'argomento Kafka Amazon MSK che stai importando in Pub/Sub.
ARN del ruolo AWS: l'ARN del ruolo AWS. Il formato dell'ARN del ruolo è come segue:
arn:aws:iam:${Account}:role/${RoleName}
.Account di servizio: l'account di servizio che hai creato in Creare un account di servizio in Google Cloud.
Fai clic su Crea argomento.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Esegui il comando
gcloud pubsub topics create
:gcloud pubsub topics create TOPIC_ID \ --aws-msk-ingestion-cluster-arn MSK_CLUSTER_ARN \ --aws-msk-ingestion-topic MSK_TOPIC \ --aws-msk-ingestion-aws-role-arn MSK_ROLE_ARN \ --aws-msk-ingestion-service-account PUBSUB_SERVICE_ACCOUNT
Sostituisci quanto segue:
TOPIC_ID
: il nome o l'ID dell'argomento Pub/Sub.MSK_CLUSTER_ARN
: l'ARN del cluster Amazon MSK che stai importando in Pub/Sub. Il formato dell'ARN è il seguente:arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}
.MSK_TOPIC
: il nome dell'argomento Kafka di Amazon MSK che stai importando in Pub/Sub.MSK_ROLE_ARN
: l'ARN del ruolo AWS. Il formato ARN del ruolo è il seguente:arn:aws:iam:${Account}:role/${RoleName}
.PUBSUB_SERVICE_ACCOUNT
: l'account di servizio che hai creato in Creare un account di servizio in Google Cloud.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Java.
Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Python.
Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js (TypeScript)
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Per autenticarti a Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Per ulteriori informazioni sugli ARN, consulta Amazon Resource Names (ARN) e Identificatori IAM.
Se riscontri problemi, consulta l'articolo Risolvere i problemi di un argomento di importazione di Amazon MSK.
Modificare gli argomenti di importazione di Amazon MSK
Per modificare le impostazioni dell'origine dati di importazione di un argomento di importazione Amazon MSK:
Console
Nella console Google Cloud, vai alla pagina Topic.
Fai clic sull'argomento di importazione Amazon MSK.
Nella pagina dei dettagli dell'argomento, fai clic su Modifica.
Aggiorna i campi che vuoi modificare.
Fai clic su Aggiorna.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Esegui il comando
gcloud pubsub topics update
con tutti i parametri indicati nell'esempio seguente:gcloud pubsub topics update TOPIC_ID \ --aws-msk-ingestion-cluster-arn MSK_CLUSTER_ARN \ --aws-msk-ingestion-topic MSK_TOPIC \ --aws-msk-ingestion-aws-role-arn MSK_ROLE_ARN \ --aws-msk-ingestion-service-account PUBSUB_SERVICE_ACCOUNT
Sostituisci quanto segue:
- TOPIC_ID: il nome o l'ID dell'argomento Pub/Sub.
- MSK_CLUSTER_ARN: l'ARN del cluster Amazon MSK
che stai importando in Pub/Sub. Il formato dell'ARN è il seguente:
arn:aws:kafka:${Region}:${Account}:cluster/${ClusterName}/${ClusterId}
. - MSK_TOPIC: il nome dell'argomento Kafka Amazon MSK che stai importando in Pub/Sub.
- MSK_ROLE_ARN: l'ARN del ruolo AWS. Il formato ARN
del ruolo è il seguente:
arn:aws:iam:${Account}:role/${RoleName}
. - PUBSUB_SERVICE_ACCOUNT: l'account di servizio che hai creato in Creare un account di servizio in Google Cloud.
Quote e limiti
Il throughput del publisher per gli argomenti di importazione è vincolato dalla quota di pubblicazione dell'argomento. Per ulteriori informazioni, consulta Quote e limiti di Pub/Sub.
Passaggi successivi
Scegli il tipo di sottoscrizione per l'argomento.
Scopri come pubblicare un messaggio in un argomento.
Crea o modifica un argomento con gcloud CLI, API REST o librerie client.
Risolvere i problemi relativi a un argomento di importazione Amazon MSK