Python 3.x Google Cloud函数的访问问题在默认数据库中读取对Google Cloud Firestore集合的访问权限
我正在尝试用python编写一个云函数,它将读取Google cloud Firestore(本机)中的集合[而不是实时数据库或数据存储] 我已为项目创建了一个具有以下角色的服务帐户: -项目业主 -Firebase管理员 -服务帐户用户 -云功能开发者 -项目编辑 在本地运行时,我在我的环境中设置服务帐户凭据:GOOGLE\u APPLICATION\u凭据 我的云功能可以访问云存储。我只对Cloud Firestore有问题Python 3.x Google Cloud函数的访问问题在默认数据库中读取对Google Cloud Firestore集合的访问权限,python-3.x,google-cloud-firestore,google-cloud-functions,Python 3.x,Google Cloud Firestore,Google Cloud Functions,我正在尝试用python编写一个云函数,它将读取Google cloud Firestore(本机)中的集合[而不是实时数据库或数据存储] 我已为项目创建了一个具有以下角色的服务帐户: -项目业主 -Firebase管理员 -服务帐户用户 -云功能开发者 -项目编辑 在本地运行时,我在我的环境中设置服务帐户凭据:GOOGLE\u APPLICATION\u凭据 我的云功能可以访问云存储。我只对Cloud Firestore有问题 我已经尝试使用客户端Python SDK和管理员SDK(Pytho
从google.cloud导入firestore
def进程存储文件(数据、上下文):
#添加新文档
db=firestore.Client()
doc_ref=db.collection(u'users')。文档(u'alovelace')
文件参考集({
u'first':u'Ada',
“最后一个”:你的“爱”,
你出生于1815年
})
#然后查询文档
用户\u ref=db.collection(u'users')
docs=用户\u ref.get()
对于文档中的文档:
打印(u'{}=>{}'。格式(doc.id,doc.to_dict())
我无法让云功能连接到Google Cloud Firestore。我得到一个错误:
第3行,来自google.api\u core.exceptions.PermissionDenied的raise\u中:403缺少或权限不足。
云功能和Firestore都在同一个GCP项目中。首先,检查您是否随代码一起上载了服务帐户的凭据JSON文件,并且在云功能的配置页面中也设置了
GOOGLE\u APPLICATION\u CREDENTIALS
环境变量。(我知道上传凭证是个坏主意,但如果不想使用JSON文件,则需要将JSON文件放在某个位置。)
其次,您可能希望为您的服务帐户提供云数据存储用户角色(或类似角色),而不是Firebase管理员。新的Firestore似乎可以通过云数据存储X角色而不是Firebase角色进行访问。您在云函数UI配置中指定的服务帐户需要具有数据存储用户角色。在您展示的Python代码中,您从未实际定义过云函数入口点。那在哪里?您打算如何触发代码?当文件上传到云存储时,会触发代码。入口点被定义为云功能部署的一部分。这部分代码正在运行。例外情况仅出现在上面第“docs=users\u ref.get()”行的代码中。文档建议您为部署定义一个函数。我在这里看不到函数。我已经用这个函数更新了代码。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}