Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de l'API REST Apache Airflow
Amazon Managed Workflows for Apache Airflow (Amazon MWAA) permet d'interagir avec vos environnements Apache Airflow directement à l'aide de l'API REST Apache Airflow pour les environnements exécutant Apache Airflow v2.4.3 et versions ultérieures. Cela vous permet d'accéder à vos environnements Amazon MWAA et de les gérer par programmation, fournissant ainsi un moyen standardisé d'invoquer des flux de travail d'orchestration de données, de gérer vos différents composants d'Apache Airflow et de surveiller leur état DAGs, tels que la base de données de métadonnées, le déclencheur et le planificateur.
Pour garantir l'évolutivité lors de l'utilisation de l'API REST d'Apache Airflow, Amazon MWAA vous offre la possibilité de dimensionner horizontalement la capacité du serveur Web pour faire face à une demande accrue, qu'il s'agisse de demandes d'API REST, de l'utilisation de l'interface de ligne de commande (CLI) ou d'un plus grand nombre d'utilisateurs simultanés de l'interface utilisateur (UI) Apache Airflow. Pour plus d'informations sur la manière dont Amazon MWAA fait évoluer les serveurs Web, consultez. Configuration du dimensionnement automatique du serveur Web Amazon MWAA
Vous pouvez utiliser l'API REST Apache Airflow pour implémenter les cas d'utilisation suivants pour vos environnements :
-
Accès par programmation : vous pouvez désormais démarrer les exécutions d'Apache Airflow DAG, gérer des ensembles de données et récupérer l'état de divers composants tels que la base de données de métadonnées, les déclencheurs et les planificateurs sans avoir à vous fier à l'interface utilisateur ou à la CLI d'Apache Airflow.
-
Intégration à des applications externes et à des microservices : la prise en charge des API REST vous permet de créer des solutions personnalisées qui intègrent vos environnements Amazon MWAA à d'autres systèmes. Par exemple, vous pouvez démarrer des flux de travail en réponse à des événements provenant de systèmes externes, tels que des tâches de base de données terminées ou l'inscription de nouveaux utilisateurs.
-
Surveillance centralisée : vous pouvez créer des tableaux de bord de surveillance qui regroupent votre statut DAGs sur plusieurs environnements Amazon MWAA, permettant ainsi une surveillance et une gestion centralisées.
Pour plus d'informations sur l'API REST d'Apache Airflow, reportez-vous au manuel de référence de l'API REST d'Apache Airflow
En utilisantInvokeRestApi, vous pouvez accéder à l'API REST Apache Airflow à l'aide AWS d'informations d'identification. Vous pouvez également y accéder en obtenant un jeton d'accès au serveur Web, puis en utilisant le jeton pour l'appeler.
Si vous rencontrez une erreur avec le message Update your environment to use InvokeRestApi lors de l'utilisation de l'InvokeRestApiopération, cela indique que vous devez mettre à jour votre environnement Amazon MWAA. Cette erreur se produit lorsque votre environnement Amazon MWAA n'est pas compatible avec les dernières modifications liées à InvokeRestApi cette fonctionnalité. Pour résoudre ce problème, mettez à jour votre environnement Amazon MWAA afin d'intégrer les modifications nécessaires à la InvokeRestApi fonctionnalité.
Le délai d'expiration par défaut de l'InvokeRestApiopération est de 10 secondes. Si l'opération ne se termine pas dans ce délai de 10 secondes, elle sera automatiquement interrompue et une erreur sera générée. Assurez-vous que vos appels d'API REST sont conçus pour être exécutés dans ce délai afin d'éviter de rencontrer des erreurs.
Afin de garantir l'évolutivité lors de l'utilisation de l'API REST d'Apache Airflow, Amazon MWAA vous offre la possibilité de dimensionner horizontalement la capacité du serveur Web pour faire face à une demande accrue, qu'il s'agisse de demandes d'API REST, de l'utilisation de l'interface de ligne de commande (CLI) ou d'un plus grand nombre d'utilisateurs simultanés de l'interface utilisateur (UI) Apache Airflow. Pour plus d'informations sur la manière dont Amazon MWAA fait évoluer les serveurs Web, reportez-vous àConfiguration du dimensionnement automatique du serveur Web Amazon MWAA.
Vous pouvez utiliser l'API REST Apache Airflow pour implémenter les cas d'utilisation suivants pour vos environnements :
-
Accès par programmation : vous pouvez désormais démarrer les exécutions d'Apache Airflow DAG, gérer des ensembles de données et récupérer l'état de divers composants tels que la base de données de métadonnées, les déclencheurs et les planificateurs sans avoir à vous fier à l'interface utilisateur ou à la CLI d'Apache Airflow.
-
Intégration à des applications externes et à des microservices : la prise en charge des API REST vous permet de créer des solutions personnalisées qui intègrent vos environnements Amazon MWAA à d'autres systèmes. Par exemple, vous pouvez démarrer des flux de travail en réponse à des événements provenant de systèmes externes, tels que des tâches de base de données terminées ou l'inscription de nouveaux utilisateurs.
-
Surveillance centralisée : vous pouvez créer des tableaux de bord de surveillance qui regroupent votre statut DAGs sur plusieurs environnements Amazon MWAA, permettant ainsi une surveillance et une gestion centralisées.
Pour plus d'informations sur l'API REST d'Apache Airflow, reportez-vous au manuel de référence de l'API REST d'Apache Airflow
En utilisantInvokeRestApi, vous pouvez accéder à l'API REST Apache Airflow à l'aide AWS d'informations d'identification. Vous pouvez également y accéder en obtenant un jeton d'accès au serveur Web, puis en utilisant le jeton pour l'appeler.
-
Si vous rencontrez une erreur avec le message
Update your environment to use InvokeRestApilors de l'utilisation de l'InvokeRestApiopération, cela indique que vous devez mettre à jour votre environnement Amazon MWAA. Cette erreur se produit lorsque votre environnement Amazon MWAA n'est pas compatible avec les dernières modifications liées àInvokeRestApicette fonctionnalité. Pour résoudre ce problème, mettez à jour votre environnement Amazon MWAA afin d'intégrer les modifications nécessaires à laInvokeRestApifonctionnalité. -
Le délai d'expiration par défaut de l'
InvokeRestApiopération est de 10 secondes. Si l'opération ne se termine pas dans ce délai de 10 secondes, elle sera automatiquement interrompue et une erreur sera générée. Assurez-vous que vos appels d'API REST sont conçus pour être exécutés dans ce délai afin d'éviter de rencontrer des erreurs.
Important
La taille de la charge utile de réponse ne peut pas dépasser 6 Mo. Vous RestApi échouez si cette limite est dépassée.
Utilisez les exemples suivants pour effectuer des appels d'API vers l'API REST Apache Airflow et démarrer une nouvelle exécution du DAG :
Rubriques
Octroi de l'accès à l'API REST Apache Airflow : airflow:InvokeRestApi
Pour accéder à l'API REST Apache Airflow à l'aide AWS d'informations d'identification, vous devez accorder l'airflow:InvokeRestApiautorisation dans votre politique IAM. Dans l'exemple de politique suivant, spécifiez le AdminOp, UserViewer, ou le Public rôle dans {airflow-role} pour personnaliser le niveau d'accès des utilisateurs. Pour plus d'informations, reportez-vous à la section Rôles par défaut
Note
Lors de la configuration d'un serveur Web privé, l'InvokeRestApiaction ne peut pas être invoquée depuis l'extérieur d'un Virtual Private Cloud (VPC). Vous pouvez utiliser la aws:SourceVpc clé pour appliquer un contrôle d'accès plus précis à cette opération. Pour plus d'informations, consultez aws : SourceVpc.
Appel de l'API REST Apache Airflow
L'exemple de script suivant explique comment utiliser l'API REST d'Apache Airflow pour répertorier les éléments disponibles DAGs dans votre environnement et comment créer une variable Apache Airflow :
import boto3 env_name = "MyAirflowEnvironment" def list_dags(client): request_params = { "Name": env_name, "Path": "/dags", "Method": "GET", "QueryParameters": { "paused": False } } response = client.invoke_rest_api( **request_params ) print("Airflow REST API response: ", response['RestApiResponse']) def create_variable(client): request_params = { "Name": env_name, "Path": "/variables", "Method": "POST", "Body": { "key": "test-restapi-key", "value": "test-restapi-value", "description": "Test variable created by MWAA InvokeRestApi API", } } response = client.invoke_rest_api( **request_params ) print("Airflow REST API response: ", response['RestApiResponse']) if __name__ == "__main__": client = boto3.client("mwaa") list_dags(client) create_variable(client)
Création d'un jeton de session de serveur Web et appel de l'API REST Apache Airflow
Pour créer un jeton d'accès au serveur Web, utilisez la fonction Python suivante. Cette fonction appelle d'abord l'API Amazon MWAA pour obtenir un jeton de connexion Web. Le jeton de connexion Web, qui expire au bout de 60 secondes, est ensuite échangé contre un jeton de session Web, qui vous permet d'accéder au serveur Web et d'utiliser l'API REST Apache Airflow. Si vous avez besoin d'une capacité de régulation supérieure à 10 transactions par seconde (TPS), vous pouvez utiliser cette méthode pour accéder à l'API REST d'Apache Airflow.
Le jeton de session expire au bout de 12 heures.
Astuce
Les principales modifications apportées aux exemples de code suivants entre Apache Airflow v2 et v3 sont les suivantes :
-
Le chemin de l'API REST est passé de
/api/v1à/api/v2 -
Le chemin de connexion est passé de
/aws_maa/loginà/pluginsv2/aws_mwaa/login -
La réponse de connexion
response.cookies["_token"]contient des informations de jeton que vous devez utiliser pour les appels d'API suivants -
Pour un appel d'API REST, vous devez transmettre les
jwt_tokeninformations dans les en-têtes sous la forme suivante :headers = { "Authorization": f"Bearer {jwt_token}", "Content-Type": "application/json" }
Une fois l'authentification terminée, vous disposez des informations d'identification nécessaires pour commencer à envoyer des demandes aux points de terminaison de l'API. Dans l'exemple de la section suivante, utilisez le point de terminaisondags/{dag_name}/dagRuns.