在Cloud Function中安全高效地存储Cloud SQL凭据的一种解决方案是使用Secret Manager来存储凭据,并在Cloud Function中访问这些凭据。以下是解决方案的代码示例:
gcloud secrets create cloud-sql-credentials --replication-policy automatic
gcloud secrets versions add cloud-sql-credentials --data-file=<(echo '{"username":"","password":"","db":""}')
from google.cloud import secretmanager_v1beta1 as secretmanager
from google.cloud import sql
def get_cloud_sql_credentials(request):
# 创建一个Secret Manager客户端
client = secretmanager.SecretManagerServiceClient()
# 指定凭据的名称
name = "projects//secrets/cloud-sql-credentials/versions/latest"
# 从Secret Manager获取凭据值
response = client.access_secret_version(name=name)
payload = response.payload.data.decode("UTF-8")
# 解析凭据值为JSON格式
credentials = json.loads(payload)
# 使用Cloud SQL凭据连接到数据库
connection_name = "::"
db = sql.connector.connect(
user=credentials["username"],
password=credentials["password"],
host="/cloudsql/{}".format(connection_name),
database=credentials["db"]
)
# 在此处执行其他操作,如查询数据库
return "Success"
请注意,上述代码示例中的
、
、
、
、
和
需要替换为实际值。此外,您还需要确保已正确设置Cloud SQL连接名称和Cloud Function的访问权限。