Cette page explique comment utiliser les connexions Airflow.
Les connexions Airflow vous permettent d'accéder aux ressources des projets Google Cloud à partir d'un environnement Cloud Composer. Vous créez des ID de connexion Airflow pour stocker des informations, telles que des identifiants et des noms d'hôte, et vos workflows font référence aux ID de connexion. Les connexions Airflow sont la méthode recommandée pour stocker les secrets et les identifiants utilisés dans les workflows.
Les connexions Airflow vous permettent de stocker les informations de connexion requises par un environnement Cloud Composer pour communiquer avec d'autres API, telles que des projets Google Cloud, d'autres fournisseurs cloud ou des services tiers.
Une connexion Airflow peut stocker des détails, tels que des identifiants, des noms d'hôte ou des paramètres d'API supplémentaires. Chaque connexion est associée à un ID que vous pouvez utiliser dans les tâches de workflow pour référencer les détails prédéfinis. Nous vous recommandons d'utiliser les connexions Airflow pour stocker les secrets et les identifiants pour les tâches de workflow.
Le type de connexion Google Cloud active les intégrations Google Cloud.
Clé fernet et connexions sécurisées
Lorsque vous créez un environnement, Cloud Composer génère une clé fernet unique et permanente pour l'environnement et sécurise par défaut les options de connexion supplémentaires. Vous pouvez afficher la clé fernet_key
dans la configuration Airflow. Pour en savoir plus sur la sécurisation des connexions, consultez la section Sécuriser les connexions.
Utiliser les connexions par défaut
Par défaut, Cloud Composer configure les connexions Airflow suivantes pour Google Cloud Platform :
bigquery_default
google_cloud_default
google_cloud_datastore_default
google_cloud_storage_default
Vous pouvez utiliser ces connexions à partir de vos DAG en utilisant l'ID de connexion par défaut. L'exemple suivant utilise BigQueryOperator avec la connexion par défaut.
Airflow 2
Airflow 1
Vous pouvez également spécifier explicitement l'ID de connexion lorsque vous créez l'opérateur.
Airflow 2
Airflow 1
Accéder aux ressources d'un autre projet
La méthode recommandée pour permettre à votre environnement Cloud Composer d'accéder aux ressources des projets Google Cloud consiste à utiliser les connexions par défaut et à attribuer les autorisations appropriées de gestion de l'authentification et des accès au compte de service associé à votre environnement.
Les étapes suivantes fournissent des exemples permettant d'autoriser des lectures et des écritures sur des buckets Cloud Storage dans your-storage-project
pour un environnement Cloud Composer déployé dans l'ID de projet your-composer-project
.
Déterminer le compte de service associé à votre environnement
Console
- Dans Cloud Console, ouvrez la page Environnements.
- Dans la colonne Nom, cliquez sur le nom de l'environnement pour ouvrir la page Détails de l'environnement.
- Notez le Compte de service. Cette valeur est une adresse e-mail, par exemple
service-account-name@your-composer-project.iam.gserviceaccount.com
.
gcloud
Saisissez la commande suivante et remplacez VARIABLES par les valeurs appropriées :
gcloud composer environments describe ENVIRONMENT_NAME \ --location LOCATION \ --format="get(config.nodeConfig.serviceAccount)"
Le résultat affiche une adresse, telle que service-account-name@your-composer-project.iam.gserviceaccount.com
.
Accorder les autorisations IAM appropriées au compte de service
Pour autoriser les lectures et les écritures dans des buckets Cloud Storage dans your-storage-project
, accordez le rôle roles/storage.objectAdmin
au compte de service associé à votre environnement Cloud Composer.
Console
Sur la page IAM et administration de votre projet de stockage,
Cliquez sur Ajouter des membres.
Dans la boîte de dialogue Ajouter des membres, indiquez l'adresse e-mail complète du compte de service associé à votre environnement Cloud Composer.
Dans le menu déroulant Sélectionner un rôle, sélectionnez les autorisations appropriées. Pour cet exemple, sélectionnez le rôle Stockage > Administrateur des objets.
Cliquez sur Ajouter.
gcloud
Utilisez la commande gcloud projects add-iam-policy-binding
pour ajouter des autorisations IAM au niveau du projet. Remplacez les VARIABLES par les valeurs appropriées :
gcloud projects add-iam-policy-binding YOUR_STORAGE_PROJECT \ --member=serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectAdmin
Une fois les autorisations appropriées accordées, vous pouvez accéder aux ressources du projet your-storage-project
avec les mêmes connexions Airflow par défaut que celles utilisées pour accéder aux ressources du projet your-composer-project
.
Créer des connexions Airflow
Avant de commencer
Accordez les autorisations IAM appropriées au compte de service associé à votre environnement Cloud Composer et utilisez les connexions par défaut dans vos définitions de DAG. Si cette étape n'est pas disponible, suivez les étapes décrites dans cette section.
Créer une connexion à un autre projet
Les étapes suivantes fournissent des exemples permettant d'autoriser des lectures et des écritures sur des buckets Cloud Storage dans your-storage-project
pour un environnement Cloud Composer déployé dans l'ID de projet your-composer-project
.
Créez un compte de service dans
your-storage-project
:Dans Cloud Console, accédez à la page Comptes de service.
Sélectionnez votre projet.
Cliquez sur
Créer un compte de service.Dans le champ Nom du compte de service, saisissez un nom. Cloud Console renseigne le champ ID du compte de service en fonction de ce nom.
Facultatif : dans le champ Description du compte de service, saisissez une description du compte de service.
Cliquez sur Créer et continuer.
Cliquez sur le champ Select a role (Sélectionner un rôle), puis choisissez un rôle que vous souhaitez attribuer au compte de service, par exemple Storage > Object Admin (Administrateur d'objets Storage).
Cliquez sur OK pour terminer la création du compte de service.
Ne fermez pas la fenêtre de votre navigateur. Vous en aurez besoin lors de la tâche suivante.
Téléchargez une clé JSON pour le compte de service que vous venez de créer :
- Dans Cloud Console, cliquez sur l'adresse e-mail du compte de service que vous avez créé.
- Cliquez sur Keys (Clés).
- Cliquez sur Add key (Ajouter une clé), puis sur Create new key (Créer une clé).
Cliquez sur Create (Créer). Un fichier de clé JSON est téléchargé sur votre ordinateur.
Veillez à stocker le fichier de clé en toute sécurité, car il peut être utilisé pour s'authentifier en tant que compte de service. Vous pouvez déplacer et renommer ce fichier comme vous le souhaitez.
Cliquez sur Fermer.
Créer une connexion :
UI d'Airflow
Accédez à l'interface Web d'Airflow pour votre environnement Cloud Composer.
Dans l'interface Web Airflow, ouvrez la page Admin > Connections (Administration et connexions).
Pour ouvrir le formulaire de création de connexion, cliquez sur l'onglet Create (Créer).
Créer une connexion :
- Pour choisir un ID de connexion, remplissez le champ Conn Id (ID de connexion), avec
my_gcp_connection
par exemple. Utilisez cet ID dans vos fichiers de définition DAG. - Dans le champ Type de connexion, sélectionnez l'option Google Cloud Platform.
- Saisissez une valeur pour l'ID du projet qui correspond au projet auquel appartient votre compte de service.
Effectuez l'une des opérations suivantes :
- Copiez le fichier de clé JSON du compte de service que vous avez téléchargé dans le répertoire
data/
du bucket Cloud Storage de votre environnement. Ensuite, dans Keyfile Path (Chemin du fichier de clé), saisissez le chemin d'accès du fichier local sur le nœud de calcul Airflow à l'emplacement du fichier de clé JSON, tel que/home/airflow/gcs/data/keyfile.json
. - Dans Fichier de clé JSON, copiez le contenu du fichier de clé JSON du compte de service que vous avez téléchargé.
Les utilisateurs ayant accès aux connexions Airflow via la CLI ou l'UI Web peuvent lire les identifiants stockés dans
keyfile_dict
. Pour sécuriser ces identifiants, nous vous recommandons d'utiliser le chemin d'accès au fichier (Keyfile Path) et une LCA Cloud Storage afin de limiter l'accès au fichier de clé.- Copiez le fichier de clé JSON du compte de service que vous avez téléchargé dans le répertoire
Saisissez une valeur dans le champ Scopes (Champs d'application). Il est recommandé d'utiliser
https://www.googleapis.com/auth/cloud-platform
comme champ d'application, et d'utiliser des autorisations IAM sur le compte de service afin de limiter l'accès aux ressources Google Cloud.Pour créer la connexion, cliquez sur Save (Enregistrer).
- Pour choisir un ID de connexion, remplissez le champ Conn Id (ID de connexion), avec
gcloud
Saisissez la commande suivante :
Airflow 1
gcloud composer environments run \ ENVIRONMENT_NAME \ --location LOCATION \ connections -- --add \ --conn_id=CONNECTION_ID \ --conn_type=google_cloud_platform \ --conn_extra '{"extra__google_cloud_platform__CMD_ARGS": "...", "extra__google_cloud_platform__CMD_ARGS": "...", ...}'
Airflow 2
gcloud composer environments run \ ENVIRONMENT_NAME \ --location LOCATION \ connections add -- \ CONNECTION_ID \ --conn-type=google_cloud_platform \ --conn-extra '{"extra__google_cloud_platform__CMD_ARGS": "...", "extra__google_cloud_platform__CMD_ARGS": "...", ...}'
où :
ENVIRONMENT_NAME
est le nom de l'environnement.LOCATION
est la région où se trouve l'environnement.CONNECTION_ID
est l'identifiant de la connexion. Utilisez des caractères minuscules et des mots séparés par des traits de soulignement.CMD_ARGS
sont les suivantes :project
est un ID de projet. Seulextra__google_cloud_platform__project
est requis.key_path
est un chemin d'accès local au fichier Airflow sur un nœud de calcul JSON, tel que/home/airflow/gcs/data/keyfile.json
. Si spécifié, nécessite égalementscope
. Utilisezkey_path
oukeyfile_dict
, mais pas les deux.keyfile_dict
est un objet JSON qui spécifie le contenu du fichier de clé JSON que vous avez téléchargé. Si spécifié, nécessite égalementscope
. Utilisezkeyfile_dict
oukey_path
, mais pas les deux. Les utilisateurs ayant accès aux connexions Airflow via la CLI ou l'UI Web peuvent lire les identifiants stockés danskeyfile_dict
. Pour sécuriser ces identifiants, nous vous recommandons d'utiliserkey_path
et d'appliquer une LCA Cloud Storage afin de limiter l'accès au fichier de clé.scope
est une liste de champs d'application OAuth séparés par une virgule.
Exemple :
Airflow 1
gcloud composer environments run test-environment \ --location us-central1 connections -- --add \ --conn_id=my_gcp_connection --conn_type=google_cloud_platform \ --conn_extra '{"extra__google_cloud_platform__project": "your-storage-project", "extra__google_cloud_platform__key_path": "/home/airflow/gcs/data/keyfile.json", "extra__google_cloud_platform__scope": "https://www.googleapis.com/auth/cloud-platform"}'
Airflow 2
gcloud composer environments run test-environment \ --location us-central1 connections add -- \ my_gcp_connection \ --conn-type=google_cloud_platform \ --conn-extra '{"extra__google_cloud_platform__project": "your-storage-project", "extra__google_cloud_platform__key_path": "/home/airflow/gcs/data/keyfile.json", "extra__google_cloud_platform__scope": "https://www.googleapis.com/auth/cloud-platform"}'
Utiliser une nouvelle connexion Airflow
Pour utiliser la connexion que vous avez créée, définissez-la comme argument d'ID de connexion correspondant lorsque vous créez un opérateur Google Cloud Airflow.
Airflow 2
Airflow 1