我有启用了VPN的连接的Google Cloud Project,以及具有相同VPN连接和SSL的Google Cloud SQL(PostgreSQL)数据库实例。 Cloud SQL具有公用和专用IP地址。我用于从外部连接数据库的公共IP(例如PgAdmin客户端工具)和用于内部连接的私有IP(例如数据流)。现在,我想从Cloud Composer连接此CloudSQL。使用PostgresOperator连接Cloud Postgresql数据库。在气流->连接部分下,使用Puplic IP作为端口创建单独的连接。由于此CloudSQL已启用SSL,因此将证书推送到DAG的GCS位置。在额外属性部分下的连接中,刚刚传递了ssl证书路径信息,如下所示,

{
   "sslmode": "verify-ca",
   "sslcert": "/home/airflow/gcs/dags/certificates/client-cert.pem",
   "sslca": "/home/airflow/gcs/dags/certificates/server-ca.pem",
   "sslkey": "/home/airflow/gcs/dags/certificates/client-key.pem"
}


收到以下错误消息,


psycopg2.OperationalError:私钥文件
“ /home/airflow/gcs/dags/certificates/client-key.pem”具有组或
世界访问;权限应为u = rw(0600)或les


如果有人可以帮助我解决此问题,那将是很好的。

postgresoperator = PostgresOperator(
    task_id='create_field_reports',
    sql=create_field_reports_query,
    postgres_conn_id='pgconnection_google_private',
    dag=dag
)

最佳答案

Cloud Composer使用GCSFUSE将Cloud Storage中的某些目录(DAG /插件)挂载到在GKE中运行的Airflow worker容器中。它将使用无法覆盖的默认权限来挂载它们,因为GCS不会跟踪该元数据。

一种解决方法是使用在DAG开头运行的BashOperator将文件复制到新目录,然后对所有文件运行chmod

关于google-cloud-composer - 从Cloud Composer连接CloudSQL Postgresql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57975604/

10-13 08:51