Auf dieser Seite wird erläutert, wie Sie Dateien auf Dataflow-Worker-VMs bereitstellen, um SSL-Zertifikate mit den von Google bereitgestellten JDBC-Vorlagen (Java Database Connectivity) zu verwenden. Sie können die Schritte auf dieser Seite auch verwenden, um Dateien vor der Verarbeitung dynamisch auf der Worker-VM bereitzustellen.
Staging von Dateien auf Worker-VMs
Mit einigen Vorlagen können Sie Dateien auf Dataflow-Worker-VMs mithilfe des Vorlagenparameters extraFilesToStage
bereitstellen. Mit diesem Parameter können Sie Dateien vor Beginn der Datenverarbeitung dynamisch auf der Worker-VM bereitstellen.
Sie können diesen Parameter in den folgenden Fällen verwenden:
- Zertifikat- und Schlüsseldateien für SSL-Verbindungen in jedem Worker speichern
- Da Dataflow keine integrierte Unterstützung für Secret Manager hat, verwenden Sie diesen Parameter, um Vorlagen zum Speichern von und Zugreifen auf Secret Manager-Secrets zu konfigurieren.
Dieser Parameter ist in einigen, aber nicht allen Vorlagen verfügbar. In der Tabelle der Vorlagenparameter für Ihre Vorlage in Von Google bereitgestellte Dataflow-Streaming-Vorlagen oder Von Google bereitgestellte Dataflow-Batch-Vorlagen finden Sie Informationen dazu, ob der Parameter mit der verwendeten Vorlage verfügbar ist.
Wenn Sie diesen Parameter verwenden, werden durch Kommas getrennte Cloud Storage-Pfade oder Secret Manager-Secrets an den Worker übergeben und im Verzeichnis /extra_files
auf jedem Worker gespeichert.
Wenn die Dateien im Verzeichnis /extra_files
gespeichert werden, können andere Parameter darauf verweisen. Wenn Sie auf die Dateien verweisen möchten, geben Sie in den Konfigurationsattributen Dateipfade relativ zum Verzeichnis /extra_files
an.
Alle Cloud Storage-Dateien, die mit diesem Parameter übergeben werden, werden im Verzeichnis /extra_files
mit demselben Dateinamen gespeichert.
Secret Manager-Secrets werden im Verzeichnis /extra_files
gespeichert, wobei der Secret-Name als Dateiname verwendet wird.
Wenn Sie beispielsweise extraFilesToStage
auf den folgenden Pfad festlegen, werden die Dateien im Verzeichnis /extra_files
jedes Workers mit den Dateinamen file.txt
und SECRET_ID gespeichert.
gs://BUCKET_NAME/file.txt,projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID
SSL-Zertifikate konfigurieren
Mit Vorlagen, die JDBC zum Lesen oder Schreiben verwenden, können Sie den extraFilesToStage
-Vorlagenparameter verwenden, um Zertifikate als lokale Dateien auf Worker-VMs bereitzustellen und dann auf den lokalen Dateinamen in der JDBC-Verbindungs-URL oder in den Verbindungsattributen zu verweisen.
JDBC-SSL-Verbindungen unterscheiden sich je nach Datenbank. In diesem Abschnitt finden Sie Beispiele für PostgreSQL- und MySQL-Datenbanken.
Wenn Sie Java-Systemattribute festlegen müssen, verwenden Sie JvmInitializer
.
Mit JvmInitializer
können Sie eine einmalige Initialisierung aller Dataflow-Java-Worker ausführen.
PostgreSQL
Für SSL-Verbindungen in PostgreSQL-Datenbanken sind die folgenden Parameter verfügbar: ssl
, sslmode
, sslcert
, sslkey
und sslrootcert
.
- Verwenden Sie die Parameter
ssl
undsslmode
, um anzugeben, dass die Verbindung SSL verwenden soll und welcher Modus zu verwenden ist. - Verwenden Sie für die Clientvalidierung die Parameter
sslcert
undsslkey
. - Verwenden Sie für die Servervalidierung den Parameter
sslrootcert
.
Legen Sie beim Herstellen einer Verbindung zu PostgreSQL die folgenden Parameter fest:
extraFilesToStage=gs://BUCKET_NAME/root_cert.crt,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/key.key
connectionUrl=jdbc:postgresql://HOST/DATABASE?ssl=true&sslrootcert=/extra_files/root_cert.crt&sslcert=/extra_files/cert.crt&sslkey=/extra_files/key.key&OTHER_PARAMETERS...
Weitere PostgreSQL-JDBC-Konfigurationsparameter und weitere Informationen zu den Parametern finden Sie unter Verbindungsparameter in der JDBC-PostgreSQL-Dokumentation.
MySQL
Für SSL-Verbindungen in MySQL-Datenbanken sind die folgenden Parameter verfügbar: sslmode
, trustCertificateKeyStoreUrl
und clientCertificateKeyStoreUrl
.
- Verwenden Sie den Parameter
sslmode
, um anzugeben, dass die Verbindung SSL verwenden soll und welcher Modus zu verwenden ist. - Verwenden Sie für die Clientvalidierung den Parameter
clientCertificateKeyStoreUrl
. - Verwenden Sie für die Servervalidierung den Parameter
trustCertificateKeyStoreUrl
.
Legen Sie beim Herstellen einer Verbindung zu MySQL die folgenden Parameter fest:
extraFilesToStage=gs://BUCKET_NAME/truststore.jks,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/keystore.jks
connectionUrl=jdbc:mysql://HOST/DATABASE?sslmode=REQUIRED&trustCertificateKeyStoreUrl=file:/extra_files/truststore.jks&sslcert=file:/extra_files/keystore.jks&OTHER_PARAMETERS...
Weitere MySQL-JDBC-Konfigurationsparameter und weitere Informationen zu den Parametern finden Sie auf der Seite Sicherheitsconnectors in der MySQL-Dokumentation.
Beispiel für eine SSL-Verbindung
Das folgende Beispiel zeigt, wie die Vorlage Pub/Sub zu JDBC mit SSL-Verbindungen in einer MySQL-Datenbank ausgeführt wird.
#!/bin/bash
gcloud config set project PROJECT_ID
echo "Running template ..."
gcloud dataflow flex-template run my-job \
--template-file-gcs-location="gs://dataflow-templates-REGION_NAME/latest/flex/Pubsub_to_Jdbc" \
--region="REGION" \
--parameters= \
driverClassName="com.mysql.jdbc.Driver",\
connectionUrl="jdbc:mysql://HOST/DATABASE?sslmode=REQUIRED&trustCertificateKeyStoreUrl=file:/extra_files/truststore.jks&sslcert=file:/extra_files/keystore.jks",\
driverJars="gs://BUCKET_NAME/mysql.jar",\
statement="INSERT INTO tableName (column1, column2) VALUES (?,?)",\
inputSubscription="projects/PROJECT_ID/subscriptions/subscription",\
outputDeadletterTopic="projects/PROJECT_ID/topics/topic",\
extraFilesToStage="gs://BUCKET_NAME/truststore.jks,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/keystore.jks"