이 페이지에서는 Google 제공 자바 데이터베이스 연결(JDBC) 템플릿에 SSL 인증서를 사용하도록 Dataflow 작업자 VM에서 파일을 스테이징하는 방법을 설명합니다. 이 페이지의 단계를 수행하여 처리가 시작되기 전에 작업자 VM에서 파일을 동적으로 스테이징할 수도 있습니다.
작업자 VM에서 파일 스테이징
일부 템플릿에서는 extraFilesToStage
템플릿 파라미터를 사용하여 Dataflow 작업자 VM에 파일을 스테이징할 수 있습니다. 이 파라미터를 사용하여 데이터 처리가 시작되기 전에 작업자 VM에서 파일을 동적으로 스테이징합니다.
다음과 같은 경우에 이 파라미터를 사용할 수 있습니다.
- SSL 연결을 위해 각 작업자에 인증서 파일과 키 파일을 저장합니다.
- Dataflow는 기본적으로 Secret Manager 지원을 제공하지 않으므로 이 파라미터를 사용하여 Secret Manager 보안 비밀을 저장하고 액세스하도록 템플릿을 구성합니다.
일부 템플릿에서만 이 파라미터를 사용할 수 있습니다. 사용 중인 템플릿에서 매개변수를 사용할 수 있는지 확인하려면 Google 제공 Dataflow 스트리밍 템플릿 또는 Google 제공 Dataflow 일괄 템플릿에서 템플릿에 대한 템플릿 매개변수 표를 참조하세요.
이 파라미터를 사용하면 쉼표로 구분된 Cloud Storage 경로 또는 Secret Manager 보안 비밀이 작업자에게 전달되고 각 작업자의 /extra_files
디렉터리에 저장됩니다.
파일이 /extra_files
디렉터리에 저장되면 다른 파라미터에서 이를 참조할 수 있습니다. 파일을 참조하려면 구성 속성에서 /extra_files
디렉터리를 기준으로 파일 경로를 지정합니다.
이 파라미터를 사용하여 전달된 모든 Cloud Storage 파일은 같은 파일 이름으로 /extra_files
디렉터리에 저장됩니다.
Secret Manager 보안 비밀은 보안 비밀 이름을 파일 이름으로 사용하여 /extra_files
디렉터리에 저장됩니다.
예를 들어 extraFilesToStage
를 다음 경로로 설정하면 파일이 각 작업자의 /extra_files
디렉터리에 file.txt
및 SECRET_ID 파일 이름으로 저장됩니다.
gs://BUCKET_NAME/file.txt,projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID
SSL 인증서 구성
JDBC를 사용하여 읽고 쓰는 템플릿이 있으면 extraFilesToStage
템플릿 파라미터를 사용하여 인증서를 작업자 VM에서 로컬 파일로 스테이징한 후 JDBC 연결 URL 또는 연결 속성에서 로컬 파일 이름을 참조할 수 있습니다.
JDBC SSL 연결은 데이터베이스에 따라 다릅니다. 이 섹션에서는 PostgreSQL 및 MySQL 데이터베이스의 예시를 제공합니다.
Java 시스템 속성을 설정해야 하는 경우 JvmInitializer
를 사용합니다.
JvmInitializer
를 사용하여 모든 Dataflow Java 작업자에서 일회성 초기화를 수행할 수 있습니다.
PostgreSQL
PostgreSQL 데이터베이스의 SSL 연결에서 ssl
, sslmode
, sslcert
, sslkey
, sslrootcert
파라미터를 사용할 수 있습니다.
- SSL을 사용해야 하는 연결과 사용할 모드를 지정하려면
ssl
및sslmode
파라미터를 사용합니다. - 클라이언트 유효성 검사의 경우
sslcert
및sslkey
파라미터를 사용합니다. - 서버 유효성 검사의 경우
sslrootcert
파라미터를 사용합니다.
PostgreSQL에 연결할 때 다음 파라미터를 설정합니다.
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...
추가 PostgreSQL JDBC 구성 파라미터와 파라미터에 대한 자세한 내용은 JDBC PostgreSQL 문서의 연결 파라미터를 참조하세요.
MySQL
MySQL 데이터베이스의 SSL 연결에서는 sslmode
, trustCertificateKeyStoreUrl
, clientCertificateKeyStoreUrl
파라미터를 사용할 수 있습니다.
- SSL을 사용해야 하는 연결과 사용할 모드를 지정하려면
sslmode
파라미터를 사용합니다. - 클라이언트 유효성 검사의 경우
clientCertificateKeyStoreUrl
파라미터를 사용합니다. - 서버 유효성 검사의 경우
trustCertificateKeyStoreUrl
파라미터를 사용합니다.
MySQL에 연결할 때 다음 파라미터를 설정합니다.
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...
추가 MySQL JDBC 구성 파라미터와 파라미터에 대한 자세한 내용은 MySQL 문서의 보안 커넥터 페이지를 참조하세요.
SSL 연결 예시
다음 예시에서는 MySQL 데이터베이스에서 SSL 연결을 사용하여 Pub/Sub to JDBC 템플릿을 실행하는 방법을 보여줍니다.
#!/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"