Cloud Composer 1 | Cloud Composer 2
Cette page explique comment enregistrer et charger l'état de votre environnement à l'aide d'instantanés d'environnement.
Vous pouvez configurer votre environnement pour enregistrer automatiquement des instantanés. Pour en savoir plus, consultez la section Configurer les instantanés programmés.
À propos des instantanés d'environnement
Les instantanés d'environnement stockent l'état de votre environnement. Vous pouvez enregistrer et charger des instantanés d'environnement à la demande.
Vous pouvez utiliser des instantanés pour:
Restaurez votre environnement à un état antérieur. Créez des sauvegardes de votre environnement à l'aide d'instantanés, puis chargez-en un pour restaurer votre environnement. Par exemple, vous pouvez effectuer un rollback d'une opération de mise à jour qui installe des packages PyPI ou remplace les options de configuration Airflow, même après la mise à jour de votre environnement.
Effectuez des mises à niveau et des environnements de copie côte à côte. Créez un instantané d'un environnement existant, créez un environnement qui utilise la même version ou une version ultérieure de Cloud Composer, puis appliquez l'instantané à ce nouvel environnement. Cette procédure est semblable à la migration. Veillez à suspendre les DAG avant de créer l'instantané pour éviter les exécutions de DAG en double.
Comment les instantanés sont stockés
Un instantané d'environnement est un ensemble de fichiers décrivant l'état de votre environnement et stockant la sauvegarde des données d'environnement.
Vous pouvez créer plusieurs instantanés de votre environnement. Les instantanés d'environnement ne sont pas incrémentiels. Vous pouvez utiliser n'importe quel instantané indépendamment des autres.
Cloud Composer ne supprime pas les instantanés lorsque vous supprimez votre environnement.
Par défaut, Cloud Composer stocke des instantanés dans le dossier snapshots/
du bucket de votre environnement. Vous pouvez également spécifier un emplacement personnalisé lorsque vous créez un instantané.
Bien que l'interface utilisateur de Cloud Storage affiche les données sous forme de dossiers pour plus de commodité, les buckets fonctionnent dans une structure de fichiers plate. Cela ne change pas la façon dont vous utilisez l'enregistrement et le chargement des instantanés dans la console Google Cloud, mais cela peut être une distinction importante à garder à l'esprit lorsque vous effectuez des opérations directement sur les fichiers de votre bucket. Pour en savoir plus, consultez Dossiers.
Remarques concernant la sécurité des instantanés
Pour atténuer ce risque de sécurité, vous pouvez stocker dans Secret Manager des informations sensibles utilisées par les DAG Airflow, telles que des clés ou des mots de passe. Pour en savoir plus, consultez la section Configurer Secret Manager pour votre environnement.
Veillez à vérifier les autorisations de sécurité pour le bucket de votre environnement. Si vous stockez des instantanés d'environnement dans un bucket personnalisé, assurez-vous que les autorisations d'accès correspondantes sont correctement configurées dans votre projet. Lorsque vous attribuez des autorisations, assurez-vous que le compte de service de l'environnement dispose d'autorisations suffisantes pour enregistrer et charger des instantanés à partir du bucket.
Quelles données sont enregistrées dans les instantanés ?
Cloud Composer enregistre les données suivantes dans des instantanés:
- Remplacements de configuration Airflow.
- Variables d'environnement.
- Liste des packages PyPI personnalisés, selon les exigences.
- Une sauvegarde de la base de données Airflow, y compris les états des tâches exécutées, et le DAG exécute l'historique.
- Une sauvegarde des dossiers
/dags
,/data
et/plugins
du bucket de l'environnement. - Clé netnet de l'environnement
- Autres informations sur la configuration de l'environnement, telles que l'échelle et les paramètres de performances de l'environnement Cloud Composer n'utilise pas ces informations pour charger des instantanés.
Quelles données sont chargées à partir d'instantanés ?
Cloud Composer charge les données suivantes à partir des instantanés:
- Remplacements de configuration Airflow.
- Variables d'environnement.
Packages PyPI personnalisés (sauf si vous choisissez de ne pas les installer).
Contenu de la base de données Airflow, y compris les états des tâches exécutées, et du DAG génère l'historique.
Le contenu des dossiers
/dags
,/data
et/plugins
de l'instantané est chargé dans le bucket de l'environnement.La clé Fernet de l'instantané permet de rechiffrer les données de l'instantané avec la propre clé Fernet de l'environnement. La clé Fernet de l'environnement reste la même.
Bien que Cloud Composer stocke des informations sur la configuration de l'environnement dans des instantanés, il n'est pas utilisé lors du chargement des instantanés. Les paramètres suivants de votre environnement ne changent pas lorsque vous chargez un instantané:
- Configuration de l'environnement, telle que l'échelle de l'environnement et les paramètres de performances
- Configuration de la mise en réseau de l'environnement
- Contenu du bucket de l'environnement en dehors des dossiers
/dags
,/data
et/plugins
. - Libellés d'environnement.
Tous les paramètres que vous avez appliqués dans l'infrastructure Cloud Composer sans utiliser l'API Cloud Composer peuvent être perdus lorsque vous chargez un instantané.
À propos des opérations partiellement terminées
Lorsque vous chargez un instantané, l'opération peut réussir, échouer ou se terminer partiellement:
- Les opérations réussies chargent toutes les données de l'instantané.
- Les opérations ayant échoué n'introduisent aucune modification.
- Les opérations partiellement terminées chargent un sous-ensemble de données à partir de l'instantané. Ces opérations sont signalées comme ayant échoué, mais le message d'erreur indique quelles données ont bien été chargées. Par exemple, si des packages PyPI sont installés, mais que les remplacements d'options de configuration Airflow n'ont pas abouti, le message d'erreur l'indique.
Pour une opération partiellement terminée, vous pouvez essayer de charger à nouveau le même instantané. Cloud Composer ignore les étapes réussies lors de la tentative précédente. Par exemple, si une opération échoue en cas d'expiration du délai, mais que la base de données a bien été chargée, la tentative suivante ne la chargera pas à nouveau.
Avant de commencer
Les instantanés sont compatibles avec Cloud Composer 2.0.9 et versions ultérieures. Cloud Composer 1 permet d'enregistrer des instantanés d'environnement pour les versions 1.18.5 et supérieures.
Les instantanés ne créent pas d'environnement. Si vous souhaitez charger un instantané depuis un environnement, vous devez d'abord créer un environnement, puis y charger l'instantané.
Vous ne pouvez pas charger d'instantanés dans les environnements en état d'erreur. Il est impossible de corriger ces environnements en chargeant un instantané. Vous pouvez toujours charger un instantané existant dans un nouvel environnement.
Vous ne pouvez charger des instantanés que sur la même version ou une version ultérieure de Cloud Composer ou d'Airflow. Par exemple, vous ne pouvez pas charger un instantané depuis Cloud Composer 2.0.2 dans un environnement avec Cloud Composer 2.0.1. Par ailleurs, vous ne pouvez pas charger un instantané depuis Airflow 2.2.3 vers Airflow 2.1.4.
Les instantanés ne modifient pas la version de Cloud Composer. Si vous mettez à niveau votre environnement vers une version ultérieure de Cloud Composer, puis que vous chargez un instantané à partir d'une version antérieure, votre environnement conserve sa version actuelle. Par exemple, le chargement d'un instantané depuis Cloud Composer 2.0.1 vers Cloud Composer 2.0.2 n'annule pas l'environnement vers Cloud Composer 2.0.1.
La taille maximale de la base de données Airflow prenant en charge les instantanés est de 20 Go. Si la base de données de votre environnement dépasse 20 Go, réduisez la taille de la base de données Airflow avant d'enregistrer un instantané.
Si vous enregistrez des instantanés à un emplacement situé en dehors du bucket de votre environnement, le compte de service de votre environnement doit disposer d'autorisations de lecture et d'écriture pour l'emplacement spécifié. Par exemple, le rôle Administrateur des objets Storage dispose de ces autorisations. Vous pouvez l'appliquer à un projet ou à un bucket spécifique.
La création et le stockage d'instantanés entraînent des coûts supplémentaires liés à Cloud Storage. Pour en savoir plus, reportez-vous à la section Tarification.
Enregistrer un instantané d'environnement
Cloud Composer enregistre les instantanés d'environnement dans un sous-dossier relatif au dossier que vous spécifiez.
Le nom du dossier contient l'ID du projet, l'emplacement de l'environnement, le nom de l'environnement et le code temporel du moment où l'instantané a été enregistré. Exemple : /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.
Console
Pour créer un instantané de votre environnement:
Dans la console Google Cloud, accédez à la page Environnements.
Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.
Cliquez sur Enregistrer l'instantané.
Dans la boîte de dialogue Enregistrer l'instantané, sélectionnez l'emplacement de stockage de l'instantané:
Pour stocker l'instantané dans le dossier
/snapshots
du bucket de l'environnement, sélectionnez Utiliser le dossier des instantanés dans le bucket d'environnement (par défaut).Pour stocker l'instantané dans le dossier personnalisé, sélectionnez Utiliser le dossier personnalisé dans un autre bucket, puis spécifiez un emplacement.
Cliquez sur Enregistrer.
gcloud
La commande gcloud beta composer environments snapshots save
enregistre un instantané de votre environnement.
- L'argument
snapshot-location
spécifie un dossier dans lequel l'instantané est enregistré. Par défaut, les instantanés sont enregistrés dans le dossier/snapshots
du bucket de votre environnement. Exemple :gs://us-central1-example-916807e1-bucket/snapshots
. Vous pouvez également spécifier n'importe quel autre dossier.
Pour enregistrer un instantané de votre environnement, exécutez la commande suivante:
gcloud beta composer environments snapshots save \
ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-location "SNAPSHOTS_FOLDER"
Remplacez :
ENVIRONMENT_NAME
par le nom de l'environnement.LOCATION
par la région où se trouve l'environnement.- (Facultatif)
SNAPSHOTS_FOLDER
par l'URI d'un dossier de bucket où stocker l'instantané. Si vous omettez cet argument, Cloud Composer enregistre l'instantané dans le dossier/snapshots
du bucket de votre environnement.
L'exemple suivant utilise l'emplacement par défaut:
gcloud beta composer environments snapshots save \
example-environment \
--location us-central1
L'exemple suivant est enregistré dans un dossier personnalisé:
gcloud beta composer environments snapshots save \
example-environment \
--location us-central1 \
--snapshot-location "gs://example-bucket/environment_snapshots"
API
Envoyez une requête API
environments.saveSnapshot
.Dans le corps de la requête, dans le champ
snapshotLocation
, spécifiez le dossier dans lequel vous souhaitez enregistrer l'instantané.
{
"snapshotLocation": "SNAPSHOTS_FOLDER"
}
Remplacez :
SNAPSHOTS_FOLDER
par l'URI d'un dossier de bucket où enregistrer l'instantané.
Exemple :
// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot
{
"snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}
Terraform
Il n'est pas possible d'enregistrer ni de charger des instantanés d'environnement à partir de Terraform.
L'enregistrement et le chargement des instantanés sont des actions effectuées dans un environnement. Les instantanés obtenus ne font pas partie de la définition d'un environnement. Comme Terraform ne gère que la configuration de l'environnement Cloud Composer, vous ne pouvez pas enregistrer ni charger d'instantanés d'environnement à partir de celui-ci.
Charger un instantané d'environnement
Examinez la situation suivante. Par exemple, catch-up est activé et Airflow exécute un DAG selon une programmation comprise entre la création de l'instantané et son chargement. Dans ce cas, une fois l'instantané chargé, Airflow ne dispose d'aucune information sur l'exécution du DAG. Par conséquent, Airflow exécute à nouveau le DAG pour la même durée et les mêmes données.
Prenons l'exemple d'un DAG qui s'exécute tous les jours. Vous prenez un instantané, puis Airflow exécute ce DAG, puis vous chargez l'instantané le même jour. Dans ce cas, Airflow exécute à nouveau le DAG, même si le rattrapage est désactivé.
Console
Pour charger un instantané dans votre environnement Cloud Composer 2:
Dans la console Google Cloud, accédez à la page Environnements.
Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.
Cliquez sur Charger l'instantané.
Dans la boîte de dialogue Charger l'instantané, cliquez sur Parcourir.
Sélectionnez un dossier où stocker l'instantané. Le nom du dossier répertorie l'ID de votre projet, l'emplacement de votre environnement et le code temporel correspondant au moment où l'instantané a été enregistré. Par exemple,
/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.(Facultatif) Pour ignorer l'installation de packages PyPI personnalisés à partir de l'instantané, sélectionnez Ignorer l'installation des packages PyPI personnalisés. Si vous chargez un instantané d'un environnement avec des packages PyPI personnalisés installés, Cloud Composer ne les installe pas.
Cliquez sur Charger et attendez que Cloud Composer charge l'instantané.
gcloud
La commande gcloud beta composer environments snapshots load
charge un instantané dans votre environnement.
L'argument
--snapshot-path
spécifie un dossier où se trouve l'instantané.Le nom du dossier répertorie l'ID de votre projet, l'emplacement de votre environnement et le code temporel correspondant au moment de l'enregistrement de l'instantané. Par exemple,
gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.(Facultatif) L'argument
--skip-pypi-packages-installation
ignore l'installation de packages PyPI personnalisés à partir de l'instantané. Si vous chargez un instantané d'un environnement avec des packages PyPI personnalisés installés, Cloud Composer ne les installe pas.
gcloud beta composer environments snapshots load \
DESTINATION_ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-path "SNAPSHOT_PATH"
Remplacez :
DESTINATION_ENVIRONMENT_NAME
par le nom de l'environnement dans lequel vous souhaitez charger l'instantané.LOCATION
par la région où se trouve l'environnement.SNAPSHOT_PATH
par l'URI d'un bucket, suivi du chemin d'accès à l'instantané.
Exemple :
gcloud beta composer environments snapshots load \
example-environment \
--location us-central1 \
--snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"
API
Envoyez une requête API
environments.loadSnapshot
.Dans le corps de la requête, dans le champ
snapshotPath
, spécifiez l'URI d'un bucket, suivi du chemin d'accès à l'instantané. Le nom du dossier répertorie l'ID de votre projet, l'emplacement de votre environnement et le code temporel du moment où l'instantané a été enregistré. Exemple :gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.(Facultatif) Dans le corps de la requête, spécifiez dans le champ
skipPypiPackagesInstallation
si Cloud Composer doit ignorer l'installation de packages PyPI personnalisés à partir de l'instantané. Si vous chargez un instantané d'un environnement avec des packages PyPI personnalisés installés, Cloud Composer ne les installe pas.Ce champ est facultatif. Si vous omettez ce champ, Cloud Composer installe les packages PyPI à partir de l'instantané.
{
"snapshotPath": "SNAPSHOT_PATH"
}
Remplacez :
SNAPSHOT_PATH
par l'URI d'un dossier de bucket où stocker l'instantané.
Exemple :
// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot
{
"snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
"skipPypiPackagesInstallation": "False"
}
Terraform
Il n'est pas possible d'enregistrer ni de charger des instantanés d'environnement à l'aide de Terraform.
L'enregistrement et le chargement des instantanés sont des actions effectuées dans un environnement. Les instantanés obtenus ne font pas partie de la définition d'un environnement. Comme Terraform ne gère que la configuration de l'environnement Cloud Composer, vous ne pouvez pas enregistrer ni charger d'instantanés d'environnement à partir de celui-ci.