La función en la nube no se está implementando correctamente.
Estoy tratando de parchear (actualizar) un trabajo presente en el programador de la nube desde una función mencionada a continuación. Esta función utiliza la API para actualizar el atributo del trabajo (access_token). Sin embargo, no se está implementando correctamente. ¿Hay algún problema en el código?
import base64
from pprint import pprint
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
def hello_pubsub(event, context):
credentials = GoogleCredentials.get_application_default()
service = discovery.build('cloudscheduler', 'v1', credentials=credentials)
name = 'projects/XYZ/locations/TempLocation/jobs/TestTopic'
job_body = {
"name": "temp",
"description": "temp",
"pubsubTarget": {
"topicName": "projects/XYZ/topics/TestTopic",
"attributes": {
"access_token": "blabla"
}
},
"httpTarget": {
"uri": "https://cloudscheduler.googleapis.com/v1/projects/XYZ/locations/TempLocation/jobs/TestTopic",
"httpMethod": "POST",
"headers": {
"Content-Type": "application/json",
},
"oauthToken": {
"serviceAccountEmail": "xyz@gmail.com",
}
}
}
request = service.projects().locations().jobs().patch(name=name, body=job_body)
response = request.execute()
pprint(response)
davy.ai
Hay algunos problemas con el código:
job_body['description']
no tiene comillas alrededor.job_body['name']
no es necesaria al actualizar un trabajo.job_body['httpTarget']['uri']
solo debe incluir la ruta del trabajo, no la URL completa.job_body['httpTarget']['oauthToken']
debe serjob_body['oauthToken']
.Aquí está el código corregido: