[英]Trouble Connecting to Google Cloud IoT via MQTT with Node.js
[英]Trouble connecting Node.js app to Cloud SQL Database
我需要部署一個可以與數據庫交互的 node.js 應用程序。 我已經配置了 Cloud SQL 數據庫,為此我已將我的計算機公共 IP 列入白名單。 當我在本地運行我的應用程序時,一切都很好,我可以訪問我的數據。 但是,在使用 Google App Engine 進行部署時,我不知道如何連接到我的數據庫。 到目前為止我所做的:
app.yaml
文件,其中包含runtime: nodejs12
。localhost
(因為 GAE 和 Cloud SQL 都托管在同一台服務器上)或完整的INSTANCE_CONNECTION_NAME
。Cloud SQL Client
角色到適當的服務,在 IAM 管理面板上我閱讀了可能必須使用代理的文檔。 我真的不知道該怎么辦,所以我什么也沒做。 你覺得這是一種值得探索的方式嗎?
先感謝您。
文檔頁面在這里:
https://cloud.google.com/sql/docs/mysql/connect-app-engine-standard
對於公共 IP 連接:
與 Unix sockets 連接
正確配置后,您可以使用以下格式將服務連接到雲 SQL 實例的 unix 域套接字:
/cloudsql/INSTANCE_CONNECTION_NAME
這些連接會自動加密,無需任何額外配置。 下面顯示的代碼示例摘自 GitHub 站點上更完整的示例。 單擊 GitHub 上的查看以查看更多信息。
警告:基於 Linux 的操作系統的最大套接字路徑長度為 107 個字符。 如果路徑的總長度超過此長度,您將無法從 App Engine 連接到套接字。
cloud-sql/mysql/mysql/server.js查看GitHub
const dbSocketPath = process.env.DB_SOCKET_PATH || "/cloudsql"
// Establish a connection to the database
return await mysql.createPool({
user: process.env.DB_USER, // e.g. 'my-db-user'
password: process.env.DB_PASS, // e.g. 'my-db-password'
database: process.env.DB_NAME, // e.g. 'my-database'
// If connecting via unix domain socket, specify the path
socketPath: `${dbSocketPath}/${process.env.INSTANCE_CONNECTION_NAME}`,
// Specify additional properties here.
...config
});
}
如果您使用私有 IP 連接,請忽略所有這些,您可以使用端口 3306(對於 MySQL)或 5432(對於 Postgres)的私有 IP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.