gpt4 book ai didi

mysql - 无法从不同项目中的 firebase 云函数访问云 SQL

转载 作者:行者123 更新时间:2023-11-29 15:22:46 26 4
gpt4 key购买 nike

我有两个 GCP 项目(其中一个是 Firebase 项目),我正在尝试从另一个项目的 Firebase 云函数访问一个项目上的云 SQL 实例。

我已按照此处的说明进行操作: https://cloud.google.com/sql/docs/mysql/connect-functions

在这条指令上,它说

When connecting resources in two different projects, make sure that both projects have enabled the correct IAM roles and have given the service account the correct permissions.

而且我不完全确定我是否正确地完成了这部分。我所做的就是从我的云功能项目中复制服务帐户电子邮件地址,如下所示:“service-YOUR_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com”,并将其复制到我的其他 GCP 项目的 IAM 页面中并给出它是 CloudSQL 客户端角色。

这是我用来访问数据库的代码:

import * as functions from "firebase-functions";
import * as mysql from "mysql";

export const sql = functions
.https.onRequest((request, response) => {
return new Promise<any>(async (resolve, reject) => {
const query = "select * from my_table limit 1;";
const pool: mysql.Pool = mysql.createPool({
socketPath: functions.config().cloud_sql.socket_path,
user: functions.config().cloud_sql.user,
password: functions.config().cloud_sql.password,
database: functions.config().cloud_sql.database,
connectionLimit: 5,
timezone: "+0900"
});

pool.query(query, [], (err: mysql.MysqlError | null, results: any) => {
if (err) {
console.log(err);
reject(err);
} else {
resolve(results);
}
});
});
});

当我访问此函数时,我在控制台中收到此错误:

Error: connect ECONNREFUSED

我可能会错过什么?任何帮助是极大的赞赏。

最佳答案

我在发布这个问题后不久就解决了它,哈哈。

我向错误的服务帐户授予了 IAM 角色。您需要将 Cloud SQL 客户端角色添加到 App Engine,而不是像官方文档 ( https://cloud.google.com/sql/docs/mysql/connect-functions ) 中所述将 Cloud SQL 客户端角色添加到“service-YOUR_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com”帐户默认服务帐户,以类似“ @appspot.gserviceaccount.com”结尾

关于mysql - 无法从不同项目中的 firebase 云函数访问云 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59278823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com