En última instancia, lo que quiero hacer es tener un script de Python que se ejecute cada vez que se crea una solicitud HTTP, de forma dinámica. Sería como: La aplicación 1 se ejecuta y envía un webhook, el script de Python detecta el webhook inmediatamente y hace lo que sea que haga.

Vi que podía hacer esto en GCP con Composer y Airflow.

Pero tengo varios problemas para seguir estas instrucciones https: //cloud.google.com/composer/docs/how-to/using/triggering-with-gcf:

  1. Ejecutando esto en Cloud Shell para otorgar permisos de firma de blobs:

    gcloud iam service-accounts add-iam-policy-binding
    your-project-id@appspot.gserviceaccount.com
    --member = serviceAccount: your-project-id@appspot.gserviceaccount.com
    --role = roles / iam.serviceAccountTokenCreator

Cuando introduzco mi ID de proyecto, obtengo un "ID de Gaia no encontrado para your-project-id@appspot.gserviceaccount.com"

  1. Cuando ejecuto el bit airflow_uri = environment_data ['config'] ['airflowUri'], obtengo un error clave en 'config'.

¿Existe una mejor manera de hacer lo que estoy tratando de hacer (es decir, ejecutar scripts de Python de forma dinámica)?

0
Kyle 31 ago. 2020 a las 22:44

1 respuesta

La mejor respuesta

El motivo del error: Gaia id not found for email <project-id>@appspot.gserviceaccount.com es que no habilita todas las API necesarias en su proyecto. Siga los pasos:

  1. Cree o seleccione el proyecto de Google Cloud Platform con el que desea trabajar.
  2. Habilite las API de Cloud Composer, Google Cloud Functions y Cloud Identity y Google Identity and Access Management (IAM). Puede encontrarlo en Menu -> Products -> Marketplace y escribiendo el nombre de la API correspondiente.
  3. Otorga permisos de firma de blobs a la cuenta de servicio de Cloud Functions. Para que GCF se autentique en Cloud IAP, el proxy que protege el servidor web Airflow, debes otorgarle a la cuenta de servicio de Appspot GCF el rol de creador de tokens de la cuenta de servicio. Para hacerlo, ejecute el siguiente comando en su Cloud Shell, sustituyendo el nombre de su proyecto por <your-project-id>:
gcloud iam service-accounts add-iam-policy-binding \
<your-project-id>@appspot.gserviceaccount.com \
--member=serviceAccount:<your-project-id>@appspot.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator

Probé el escenario, en primer lugar sin habilitar las API y obtuve el mismo error que tú. Después de habilitar las API, el error desaparece y la política de IAM se ha actualizado correctamente.

Ya hay tutorial de Codelabs, que muestra el flujo de trabajo para activar el DAG con Google Cloud Functions.

0
Ines 1 sep. 2020 a las 07:48