Oot*_*oto 5 firebase google-cloud-platform google-cloud-functions google-cloud-tasks
我创建了一个服务帐户电子邮件cloudfunctions.invoker
并向该电子邮件添加了角色,以便我可以确保只有云任务可以触发云功能,然后我删除了AllUsers
角色。但是当云任务尝试运行云函数时,状态码为UNAUTHENTICATED(16): HTTP status code 401
,执行失败。
我当前的代码和控制台是这样的。
index.ts
export const addTasks = functions.https.onCall((data, context) => {
if (!context.auth) {
throw new functions.https.HttpsError('failed-precondition', 'You are not authenticated.')
}
const client = new tasks.CloudTasksClient()
const projectId = functions.config().project.id
const queue = 'queue'
const location = functions.config().project.location
const parent = client.queuePath(projectId, location, queue)
const url = `https://${location}-${projectId}.cloudfunctions.net/executeSomething`
const serviceAccountEmail = functions.config().project.email
const task: tasks.protos.google.cloud.tasks.v2.ITask = {
httpRequest: {
httpMethod: 'POST',
url: url,
oidcToken: {
serviceAccountEmail: serviceAccountEmail,
},
},
scheduleTime: {
seconds: ...,
},
}
const request: tasks.protos.google.cloud.tasks.v2.ICreateTaskRequest = {
parent: parent,
task: task,
}
return client.createTask(request)
}
Run Code Online (Sandbox Code Playgroud)
我的云函数的控制台
我将云函数调用者角色添加到服务帐户电子邮件中。
我的firebase项目环境变量
当我AllUsers
向云功能添加角色时,它按预期工作,因此我确信我在限制访问时犯了错误。我缺少什么?
更新:
我的云任务控制台
归档时间: |
|
查看次数: |
1531 次 |
最近记录: |