[ОБНОВЛЕНИЕ] Я нашел, где была проблема. Мне нужно было создать учетную запись для задач service- [project-number] @ gcp-sa-cloudtasks.iam.gserviceaccount.com
У меня проблема с вызовом Google Cloud Function из Google Cloud Task. Эта проблема появляется, только если я использую параметр oidc_token.
Я использовал учебник по облачным задачам Google из здесь . Я использую ту же учетную запись службы для создания задачи и как oidc_token
значение. Я добавил роль владельца в эту учетную запись.
Вот код:
from google.cloud import tasks_v2
from google.protobuf import timestamp_pb2
client = tasks_v2.CloudTasksClient()
project = '[Project]'
queue = 'fooqueue2'
location = 'asia-east2'
url = f'https://asia-east2-{project}.cloudfunctions.net/helloworld'
payload = None
in_seconds = 0
# Construct the fully qualified queue name.
parent = client.queue_path(project, location, queue)
# Construct the request body.
task = {
'http_request': {
'http_method': 'POST',
'url': url,
'oidc_token': {
'service_account_email': f"{project}@appspot.gserviceaccount.com"
}
}
}
print(list(client.list_tasks(parent)))
response = client.create_task(parent, task)
print('Created task {}'.format(response.name))
, тогда при получении задач я вижу
last_attempt {
schedule_time {
seconds: 1579860668
nanos: 184117000
}
dispatch_time {
seconds: 1579860668
nanos: 185066000
}
response_time {
seconds: 1579860668
nanos: 206251000
}
response_status {
code: 2
message: "UNKNOWN(2): HTTP status code 0"
}
}
Функция доступна для всех пользователей. Я добавил в этот service_account_email сообщение владельца, активатора облачных функций, создателя токенов учетной записи службы, агента службы облачных задач.