AWS CloudFormation pour AWS Glue - AWS Glue

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.

AWS CloudFormation pour AWS Glue

AWS CloudFormation est un service qui peut créer de nombreuses ressources AWS. AWS Glue fournit des opérations d'API pour créer des objets dans le AWS Glue Data Catalog. Toutefois, il peut être plus facile de définir et créer des objets AWS Glue et d'autres objets de ressource AWS connexes dans un fichier de modèle AWS CloudFormation. Ensuite, vous pouvez automatiser le processus de création d'objets.

AWS CloudFormation fournit une syntaxe simplifiée — JSON (JavaScript Object Notation) ou YAML (YAML Ain't Markup Language) — pour exprimer la création de ressources AWS. Vous pouvez utiliser les modèles AWS CloudFormation pour définir les objets de catalogue de données tels que les bases de données, les tables, les partitions, les crawlers, les classifieurs et les connexions. Vous pouvez également définir des objets ETL tels que les tâches, les déclencheurs et les points de terminaison de développement. Vous créez un modèle qui décrit toutes les ressources AWS que vous souhaitez et AWS CloudFormation s'occupe de la mise en service et de la configuration de ces ressources.

Pour de plus amples informations, veuillez consulter Qu'est-ce que AWS CloudFormation ? et Utilisation de modèles AWS CloudFormation dans le Guide de l'utilisateur AWS CloudFormation.

Si vous envisagez d'utiliser des modèles AWS CloudFormation compatibles avec AWS Glue, en tant qu'administrateur, vous devez accorder l'accès à AWS CloudFormation et aux services et actions AWS dont ils dépendent. Pour accorder des autorisations de création de ressources AWS CloudFormation, attachez la politique suivante aux utilisateurs qui utilisent AWS CloudFormation :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ] }

Le tableau suivant contient les actions qu'un modèle AWS CloudFormation peut effectuer en votre nom. Il inclut les liens vers des informations sur les types de ressources AWS et leurs types de propriété que vous pouvez ajouter à un modèle AWS CloudFormation.

Pour démarrer, utilisez les exemples de modèles suivants et personnalisez-les avec vos propres métadonnées. Utilisez ensuite la console AWS CloudFormation pour créer une pile AWS CloudFormation et ajouter des objets à AWS Glue et aux services associés. La plupart des champs d'un objet AWS Glue sont facultatifs. Ces modèles illustrent les champs obligatoires ou qui sont nécessaires pour un objet AWS Glue opérationnel et fonctionnel.

Un modèle AWS CloudFormation peut être au format JSON ou YAML. Dans ces exemples, YAML est utilisé pour faciliter la lisibilité. Les exemples contiennent des commentaires (#) pour décrire les valeurs qui sont définies dans les modèles.

Les modèles AWS CloudFormation peuvent inclure une section Parameters. Cette section peut être modifiée dans l'exemple de texte ou lorsque le fichier YAML est soumis à la AWS CloudFormation console pour créer une pile. La section Resources du modèle contient la définition de AWS Glue et les objets associés. Les définitions de syntaxe de modèle AWS CloudFormation peuvent contenir des propriétés qui incluent une syntaxe de propriété plus détaillée. Toutes les propriétés ne sont pas nécessairement obligatoires pour créer un objet AWS Glue. Ces exemples montrent des exemples de valeurs des propriétés communes pour créer un objet AWS Glue.

Exemple de modèle AWS CloudFormation pour une base de données AWS Glue

Une base de données AWS Glue dans le catalogue de données contient les tables de métadonnées. La base de données se compose de très peu de propriétés et peut être créée dans le catalogue de données avec un modèle AWS CloudFormation. L'exemple de modèle suivant est fourni pour vous aider à démarrer et pour illustrer l'utilisation des piles AWS CloudFormation avec AWS Glue. La seule ressource créée par l'exemple de modèle est une base de données nommée cfn-mysampledatabase. Vous pouvez la modifier en modifiant le texte de l'échantillon ou en changeant la valeur sur la console AWS CloudFormation lorsque vous soumettez le fichier YAML.

L'exemple suivant montre des exemples de valeurs des propriétés communes pour créer une base de données AWS Glue. Pour plus d'informations sur le modèle de base de données AWS CloudFormation pour AWS Glue, consultez AWS::Glue::Database.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CloudFormation template in YAML to demonstrate creating a database named mysampledatabase # The metadata created in the Data Catalog points to the flights public S3 bucket # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: CFNDatabaseName: Type: String Default: cfn-mysampledatabse # Resources section defines metadata for the Data Catalog Resources: # Create an AWS Glue database CFNDatabaseFlights: Type: AWS::Glue::Database Properties: # The database is created in the Data Catalog for your account CatalogId: !Ref AWS::AccountId DatabaseInput: # The name of the database is defined in the Parameters section above Name: !Ref CFNDatabaseName Description: Database to hold tables for flights data LocationUri: s3://crawler-public-us-east-1/flight/2016/csv/ #Parameters: Leave AWS database parameters blank

Exemple de modèle AWS CloudFormation pour une base de données AWS Glue, une table et une partition

Une table AWS Glue contient les métadonnées qui définissent la structure et l'emplacement des données que vous souhaitez traiter avec vos scripts ETL. Dans une table, vous pouvez définir des partitions pour mettre en parallèle le traitement de vos données. Une partition est un fragment de données que vous avez défini avec une clé. Par exemple, en utilisant un mois en tant que clé, toutes les données de janvier se trouvent dans la même partition. Dans AWS Glue, les bases de données peuvent contenir des tables et les tables peuvent contenir des partitions.

L'exemple suivant montre comment remplir une base de données, une table et des partitions à l'aide d'un modèle AWS CloudFormation. Le format des données de base est csv et délimité par une virgule (,). Comme une base de données doit exister avant qu'elle ne puisse contenir une table et qu'une table doit exister avant que les partitions ne puissent être créées, le modèle utilise l'instruction DependsOn pour définir la dépendance de ces objets lorsqu'ils sont créés.

Les valeurs de cet exemple définissent une table qui contient les données de vol à partir d'un compartiment Amazon S3 disponible publiquement. À des fins d'illustration, quelques colonnes de données et une clé de partitionnement sont définies. Quatre partitions sont également définies dans le catalogue de données. Certains champs pour décrire le stockage des données de base sont également affichés dans les champs StorageDescriptor.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CloudFormation template in YAML to demonstrate creating a database, a table, and partitions # The metadata created in the Data Catalog points to the flights public S3 bucket # # Parameters substituted in the Resources section # These parameters are names of the resources created in the Data Catalog Parameters: CFNDatabaseName: Type: String Default: cfn-database-flights-1 CFNTableName1: Type: String Default: cfn-manual-table-flights-1 # Resources to create metadata in the Data Catalog Resources: ### # Create an AWS Glue database CFNDatabaseFlights: Type: AWS::Glue::Database Properties: CatalogId: !Ref AWS::AccountId DatabaseInput: Name: !Ref CFNDatabaseName Description: Database to hold tables for flights data ### # Create an AWS Glue table CFNTableFlights: # Creating the table waits for the database to be created DependsOn: CFNDatabaseFlights Type: AWS::Glue::Table Properties: CatalogId: !Ref AWS::AccountId DatabaseName: !Ref CFNDatabaseName TableInput: Name: !Ref CFNTableName1 Description: Define the first few columns of the flights table TableType: EXTERNAL_TABLE Parameters: { "classification": "csv" } # ViewExpandedText: String PartitionKeys: # Data is partitioned by month - Name: mon Type: bigint StorageDescriptor: OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Columns: - Name: year Type: bigint - Name: quarter Type: bigint - Name: month Type: bigint - Name: day_of_month Type: bigint InputFormat: org.apache.hadoop.mapred.TextInputFormat Location: s3://crawler-public-us-east-1/flight/2016/csv/ SerdeInfo: Parameters: field.delim: "," SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe # Partition 1 # Create an AWS Glue partition CFNPartitionMon1: DependsOn: CFNTableFlights Type: AWS::Glue::Partition Properties: CatalogId: !Ref AWS::AccountId DatabaseName: !Ref CFNDatabaseName TableName: !Ref CFNTableName1 PartitionInput: Values: - 1 StorageDescriptor: OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Columns: - Name: mon Type: bigint InputFormat: org.apache.hadoop.mapred.TextInputFormat Location: s3://crawler-public-us-east-1/flight/2016/csv/mon=1/ SerdeInfo: Parameters: field.delim: "," SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe # Partition 2 # Create an AWS Glue partition CFNPartitionMon2: DependsOn: CFNTableFlights Type: AWS::Glue::Partition Properties: CatalogId: !Ref AWS::AccountId DatabaseName: !Ref CFNDatabaseName TableName: !Ref CFNTableName1 PartitionInput: Values: - 2 StorageDescriptor: OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Columns: - Name: mon Type: bigint InputFormat: org.apache.hadoop.mapred.TextInputFormat Location: s3://crawler-public-us-east-1/flight/2016/csv/mon=2/ SerdeInfo: Parameters: field.delim: "," SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe # Partition 3 # Create an AWS Glue partition CFNPartitionMon3: DependsOn: CFNTableFlights Type: AWS::Glue::Partition Properties: CatalogId: !Ref AWS::AccountId DatabaseName: !Ref CFNDatabaseName TableName: !Ref CFNTableName1 PartitionInput: Values: - 3 StorageDescriptor: OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Columns: - Name: mon Type: bigint InputFormat: org.apache.hadoop.mapred.TextInputFormat Location: s3://crawler-public-us-east-1/flight/2016/csv/mon=3/ SerdeInfo: Parameters: field.delim: "," SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe # Partition 4 # Create an AWS Glue partition CFNPartitionMon4: DependsOn: CFNTableFlights Type: AWS::Glue::Partition Properties: CatalogId: !Ref AWS::AccountId DatabaseName: !Ref CFNDatabaseName TableName: !Ref CFNTableName1 PartitionInput: Values: - 4 StorageDescriptor: OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Columns: - Name: mon Type: bigint InputFormat: org.apache.hadoop.mapred.TextInputFormat Location: s3://crawler-public-us-east-1/flight/2016/csv/mon=4/ SerdeInfo: Parameters: field.delim: "," SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

Exemple de modèle AWS CloudFormation pour un classifieur Grok AWS Glue

Un classifieur AWS Glue détermine le schéma de vos données. Un type de classifieur utilise un modèle grok personnalisé pour mettre vos données en correspondance. Si le modèle correspond, le classificateur personnalisé est utilisé pour créer le schéma de votre table et définir la classification avec la valeur définie dans la définition du classificateur.

Cet exemple crée un classificateur qui crée un schéma avec une colonne nommée message et définit la classification avec la valeur greedy.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a classifier # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the classifier to be created CFNClassifierName: Type: String Default: cfn-classifier-grok-one-column-1 # # # Resources section defines metadata for the Data Catalog Resources: # Create classifier that uses grok pattern to put all data in one column and classifies it as "greedy". CFNClassifierFlights: Type: AWS::Glue::Classifier Properties: GrokClassifier: #Grok classifier that puts all data in one column Name: !Ref CFNClassifierName Classification: greedy GrokPattern: "%{GREEDYDATA:message}" #CustomPatterns: none

Exemple de modèle AWS CloudFormation pour un classifieur JSON AWS Glue

Un classifieur AWS Glue détermine le schéma de vos données. Un type de classifieur personnalisé utilise une chaîne JsonPath définissant les données JSON pour que le classifieur puisse classer. AWS Glue prend en charge un sous-ensemble des opérateurs pour JsonPath, comme décrit dans Écriture de classifieurs personnalisés JsonPath.

Si le modèle correspond, le classifieur personnalisé est utilisé pour créer le schéma de votre table.

Cet exemple crée un classifieur qui crée un schéma à chaque enregistrement du tableau Records3 dans un objet.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a JSON classifier # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the classifier to be created CFNClassifierName: Type: String Default: cfn-classifier-json-one-column-1 # # # Resources section defines metadata for the Data Catalog Resources: # Create classifier that uses a JSON pattern. CFNClassifierFlights: Type: AWS::Glue::Classifier Properties: JSONClassifier: #JSON classifier Name: !Ref CFNClassifierName JsonPath: $.Records3[*]

Exemple de modèle AWS CloudFormation pour un classifieur XML AWS Glue

Un classifieur AWS Glue détermine le schéma de vos données. Un type de classifieur personnalisé spécifie une balise XML pour désigner l'élément qui contient chaque enregistrement dans un document XML en cours d'analyse. Si le modèle correspond, le classificateur personnalisé est utilisé pour créer le schéma de votre table et définir la classification avec la valeur définie dans la définition du classificateur.

Cet exemple crée un classifieur qui crée un schéma avec chaque enregistrement dans la balise Record et définit la classification sur XML.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating an XML classifier # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the classifier to be created CFNClassifierName: Type: String Default: cfn-classifier-xml-one-column-1 # # # Resources section defines metadata for the Data Catalog Resources: # Create classifier that uses the XML pattern and classifies it as "XML". CFNClassifierFlights: Type: AWS::Glue::Classifier Properties: XMLClassifier: #XML classifier Name: !Ref CFNClassifierName Classification: XML RowTag: <Records>

Exemple de modèle AWS CloudFormation pour un crawler AWS Glue pour Amazon S3

Un crawler AWS Glue crée les tables de métadonnées dans votre catalogue de données correspondant à vos données. Vous pouvez ensuite utiliser ces définitions de table en tant que sources et cibles dans vos tâches ETL.

Cet exemple crée un crawler, le rôle IAM nécessaire et une base de données AWS Glue dans le catalogue de données. Lorsque cet crawler est exécuté, il endosse le rôle IAM et crée une table dans la base de données pour les données de vol publiques. La table est créée avec le préfixe « cfn_sample_1_ ». Le rôle IAM créé par ce modèle permet des autorisations globales ; il se peut que vous vouliez créer un rôle personnalisé. Aucun classifieur personnalisé n'est défini par ce classifieur. Les classifieurs AWS Glue intégrés sont utilisées par défaut.

Lorsque vous soumettez cet exemple à la console AWS CloudFormation, vous devez confirmer que vous souhaitez créer le rôle IAM.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a crawler # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the crawler to be created CFNCrawlerName: Type: String Default: cfn-crawler-flights-1 CFNDatabaseName: Type: String Default: cfn-database-flights-1 CFNTablePrefixName: Type: String Default: cfn_sample_1_ # # # Resources section defines metadata for the Data Catalog Resources: #Create IAM Role assumed by the crawler. For demonstration, this role is given all permissions. CFNRoleFlights: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "glue.amazonaws.com" Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "*" Resource: "*" # Create a database to contain tables created by the crawler CFNDatabaseFlights: Type: AWS::Glue::Database Properties: CatalogId: !Ref AWS::AccountId DatabaseInput: Name: !Ref CFNDatabaseName Description: "AWS Glue container to hold metadata tables for the flights crawler" #Create a crawler to crawl the flights data on a public S3 bucket CFNCrawlerFlights: Type: AWS::Glue::Crawler Properties: Name: !Ref CFNCrawlerName Role: !GetAtt CFNRoleFlights.Arn #Classifiers: none, use the default classifier Description: AWS Glue crawler to crawl flights data #Schedule: none, use default run-on-demand DatabaseName: !Ref CFNDatabaseName Targets: S3Targets: # Public S3 bucket with the flights data - Path: "s3://crawler-public-us-east-1/flight/2016/csv" TablePrefix: !Ref CFNTablePrefixName SchemaChangePolicy: UpdateBehavior: "UPDATE_IN_DATABASE" DeleteBehavior: "LOG" Configuration: "{\"Version\":1.0,\"CrawlerOutput\":{\"Partitions\":{\"AddOrUpdateBehavior\":\"InheritFromTable\"},\"Tables\":{\"AddOrUpdateBehavior\":\"MergeNewColumns\"}}}"

Exemple de modèle AWS CloudFormation pour une connexion AWS Glue

Une connexion AWS Glue dans le catalogue de données contient les informations JDBC et réseau nécessaires pour se connecter à une base de données JDBC. Ces informations sont utilisées lorsque vous vous connectez à une base de données JDBC pour analyser ou exécuter des tâches ETL.

Cet exemple crée une connexion à une base de données MySQL Amazon RDS nommée devdb. Lorsque cette connexion est utilisée, un rôle IAM, les informations d'identification de base de données et les valeurs de connexion réseau doivent également être fournies. Consultez les détails des champs nécessaires du modèle.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a connection # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the connection to be created CFNConnectionName: Type: String Default: cfn-connection-mysql-flights-1 CFNJDBCString: Type: String Default: "jdbc:mysql://xxx-mysql.yyyyyyyyyyyyyy.us-east-1.rds.amazonaws.com:3306/devdb" CFNJDBCUser: Type: String Default: "master" CFNJDBCPassword: Type: String Default: "12345678" NoEcho: true # # # Resources section defines metadata for the Data Catalog Resources: CFNConnectionMySQL: Type: AWS::Glue::Connection Properties: CatalogId: !Ref AWS::AccountId ConnectionInput: Description: "Connect to MySQL database." ConnectionType: "JDBC" #MatchCriteria: none PhysicalConnectionRequirements: AvailabilityZone: "us-east-1d" SecurityGroupIdList: - "sg-7d52b812" SubnetId: "subnet-84f326ee" ConnectionProperties: { "JDBC_CONNECTION_URL": !Ref CFNJDBCString, "USERNAME": !Ref CFNJDBCUser, "PASSWORD": !Ref CFNJDBCPassword } Name: !Ref CFNConnectionName

Exemple de modèle AWS CloudFormation pour un crawler AWS Glue pour JDBC

Un crawler AWS Glue crée les tables de métadonnées dans votre catalogue de données correspondant à vos données. Vous pouvez ensuite utiliser ces définitions de table en tant que sources et cibles dans vos tâches ETL.

Cet exemple crée un crawler, le rôle IAM nécessaire et une base de données AWS Glue dans le catalogue de données. Lorsque cet crawler est exécuté, il endosse le rôle IAM et crée une table dans la base de données pour les données de vol publiques qui ont été stockées dans une base de données MySQL. La table est créée avec le préfixe « cfn_jdbc_1_ ». Le rôle IAM créé par ce modèle permet des autorisations globales ; il se peut que vous vouliez créer un rôle personnalisé. Aucun classifieur personnalisé ne peur être défini pour les données JDBC. Les classifieurs AWS Glue intégrés sont utilisées par défaut.

Lorsque vous soumettez cet exemple à la console AWS CloudFormation, vous devez confirmer que vous souhaitez créer le rôle IAM.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a crawler # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the crawler to be created CFNCrawlerName: Type: String Default: cfn-crawler-jdbc-flights-1 # The name of the database to be created to contain tables CFNDatabaseName: Type: String Default: cfn-database-jdbc-flights-1 # The prefix for all tables crawled and created CFNTablePrefixName: Type: String Default: cfn_jdbc_1_ # The name of the existing connection to the MySQL database CFNConnectionName: Type: String Default: cfn-connection-mysql-flights-1 # The name of the JDBC path (database/schema/table) with wildcard (%) to crawl CFNJDBCPath: Type: String Default: saldev/% # # # Resources section defines metadata for the Data Catalog Resources: #Create IAM Role assumed by the crawler. For demonstration, this role is given all permissions. CFNRoleFlights: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "glue.amazonaws.com" Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "*" Resource: "*" # Create a database to contain tables created by the crawler CFNDatabaseFlights: Type: AWS::Glue::Database Properties: CatalogId: !Ref AWS::AccountId DatabaseInput: Name: !Ref CFNDatabaseName Description: "AWS Glue container to hold metadata tables for the flights crawler" #Create a crawler to crawl the flights data in MySQL database CFNCrawlerFlights: Type: AWS::Glue::Crawler Properties: Name: !Ref CFNCrawlerName Role: !GetAtt CFNRoleFlights.Arn #Classifiers: none, use the default classifier Description: AWS Glue crawler to crawl flights data #Schedule: none, use default run-on-demand DatabaseName: !Ref CFNDatabaseName Targets: JdbcTargets: # JDBC MySQL database with the flights data - ConnectionName: !Ref CFNConnectionName Path: !Ref CFNJDBCPath #Exclusions: none TablePrefix: !Ref CFNTablePrefixName SchemaChangePolicy: UpdateBehavior: "UPDATE_IN_DATABASE" DeleteBehavior: "LOG" Configuration: "{\"Version\":1.0,\"CrawlerOutput\":{\"Partitions\":{\"AddOrUpdateBehavior\":\"InheritFromTable\"},\"Tables\":{\"AddOrUpdateBehavior\":\"MergeNewColumns\"}}}"

Exemple de modèle AWS CloudFormation pour une tâche AWS Glue pour Amazon S3 vers Amazon S3

Une tâche AWS Glue dans le catalogue de données contient les valeurs des paramètres qui sont requises pour exécuter un script dans AWS Glue.

Cet exemple crée une tâche qui lit les données de vol à partir d'un compartiment Amazon S3 dans un format csv et les écrit dans un fichier Parquet Amazon S3. Le script qui est exécuté par cette tâche doit déjà exister. Vous pouvez générer un script ETL pour votre environnement avec la console AWS Glue. Lorsque la tâche est exécutée, un rôle IAM avec les autorisations appropriées doit également être fourni.

Les valeurs courantes des paramètres sont affichées dans le modèle. Par exemple, AllocatedCapacity (DPU) a comme valeur par défaut 5.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a job using the public flights S3 table in a public bucket # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the job to be created CFNJobName: Type: String Default: cfn-job-S3-to-S3-2 # The name of the IAM role that the job assumes. It must have access to data, script, temporary directory CFNIAMRoleName: Type: String Default: AWSGlueServiceRoleGA # The S3 path where the script for this job is located CFNScriptLocation: Type: String Default: s3://aws-glue-scripts-123456789012-us-east-1/myid/sal-job-test2 # # # Resources section defines metadata for the Data Catalog Resources: # Create job to run script which accesses flightscsv table and write to S3 file as parquet. # The script already exists and is called by this job CFNJobFlights: Type: AWS::Glue::Job Properties: Role: !Ref CFNIAMRoleName #DefaultArguments: JSON object # If script written in Scala, then set DefaultArguments={'--job-language'; 'scala', '--class': 'your scala class'} #Connections: No connection needed for S3 to S3 job # ConnectionsList #MaxRetries: Double Description: Job created with CloudFormation #LogUri: String Command: Name: glueetl ScriptLocation: !Ref CFNScriptLocation # for access to directories use proper IAM role with permission to buckets and folders that begin with "aws-glue-" # script uses temp directory from job definition if required (temp directory not used S3 to S3) # script defines target for output as s3://aws-glue-target/sal AllocatedCapacity: 5 ExecutionProperty: MaxConcurrentRuns: 1 Name: !Ref CFNJobName

Exemple de modèle AWS CloudFormation pour une tâche AWS Glue de JDBC vers Amazon S3

Une tâche AWS Glue dans le catalogue de données contient les valeurs des paramètres qui sont requises pour exécuter un script dans AWS Glue.

Cet exemple crée une tâche qui lit les données de vol à partir d'une base de données JDBC MySQL comme définie par la connexion nommée cfn-connection-mysql-flights-1 et les écrit dans un fichier Parquet Amazon S3. Le script qui est exécuté par cette tâche doit déjà exister. Vous pouvez générer un script ETL pour votre environnement avec la console AWS Glue. Lorsque la tâche est exécutée, un rôle IAM avec les autorisations appropriées doit également être fourni.

Les valeurs courantes des paramètres sont affichées dans le modèle. Par exemple, AllocatedCapacity (DPU) a comme valeur par défaut 5.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a job using a MySQL JDBC DB with the flights data to an S3 file # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the job to be created CFNJobName: Type: String Default: cfn-job-JDBC-to-S3-1 # The name of the IAM role that the job assumes. It must have access to data, script, temporary directory CFNIAMRoleName: Type: String Default: AWSGlueServiceRoleGA # The S3 path where the script for this job is located CFNScriptLocation: Type: String Default: s3://aws-glue-scripts-123456789012-us-east-1/myid/sal-job-dec4a # The name of the connection used for JDBC data source CFNConnectionName: Type: String Default: cfn-connection-mysql-flights-1 # # # Resources section defines metadata for the Data Catalog Resources: # Create job to run script which accesses JDBC flights table via a connection and write to S3 file as parquet. # The script already exists and is called by this job CFNJobFlights: Type: AWS::Glue::Job Properties: Role: !Ref CFNIAMRoleName #DefaultArguments: JSON object # For example, if required by script, set temporary directory as DefaultArguments={'--TempDir'; 's3://aws-glue-temporary-xyc/sal'} Connections: Connections: - !Ref CFNConnectionName #MaxRetries: Double Description: Job created with CloudFormation using existing script #LogUri: String Command: Name: glueetl ScriptLocation: !Ref CFNScriptLocation # for access to directories use proper IAM role with permission to buckets and folders that begin with "aws-glue-" # if required, script defines temp directory as argument TempDir and used in script like redshift_tmp_dir = args["TempDir"] # script defines target for output as s3://aws-glue-target/sal AllocatedCapacity: 5 ExecutionProperty: MaxConcurrentRuns: 1 Name: !Ref CFNJobName

Exemple de modèle AWS CloudFormation pour un déclencheur AWS Glue à la demande

Un déclencheur AWS Glue du catalogue de données contient les valeurs des paramètres qui sont requises pour démarrer une tâche lorsque le déclencheur est exécuté. Un déclencheur à la demande s'exécute lorsque vous l'activez.

Cet exemple crée un déclencheur à la demande qui démarre une tâche nommée cfn-job-S3-to-S3-1.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating an on-demand trigger # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The existing job to be started by this trigger CFNJobName: Type: String Default: cfn-job-S3-to-S3-1 # The name of the trigger to be created CFNTriggerName: Type: String Default: cfn-trigger-ondemand-flights-1 # # Resources section defines metadata for the Data Catalog # Sample CFN YAML to demonstrate creating an on-demand trigger for a job Resources: # Create trigger to run an existing job (CFNJobName) on an on-demand schedule. CFNTriggerSample: Type: AWS::Glue::Trigger Properties: Name: Ref: CFNTriggerName Description: Trigger created with CloudFormation Type: ON_DEMAND Actions: - JobName: !Ref CFNJobName # Arguments: JSON object #Schedule: #Predicate:

Exemple de modèle AWS CloudFormation pour un déclencheur AWS Glue planifié

Un déclencheur AWS Glue du catalogue de données contient les valeurs des paramètres qui sont requises pour démarrer une tâche lorsque le déclencheur est exécuté. Un déclencheur planifié est exécuté lorsqu'il est activé et que le minuteur cron s'affiche.

Cet exemple crée un déclencheur planifié qui démarre une tâche nommée cfn-job-S3-to-S3-1. Le minuteur est une expression cron qui permet d'exécuter la tâche toutes les 10 minutes du lundi au vendredi.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a scheduled trigger # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The existing job to be started by this trigger CFNJobName: Type: String Default: cfn-job-S3-to-S3-1 # The name of the trigger to be created CFNTriggerName: Type: String Default: cfn-trigger-scheduled-flights-1 # # Resources section defines metadata for the Data Catalog # Sample CFN YAML to demonstrate creating a scheduled trigger for a job # Resources: # Create trigger to run an existing job (CFNJobName) on a cron schedule. TriggerSample1CFN: Type: AWS::Glue::Trigger Properties: Name: Ref: CFNTriggerName Description: Trigger created with CloudFormation Type: SCHEDULED Actions: - JobName: !Ref CFNJobName # Arguments: JSON object # # Run the trigger every 10 minutes on Monday to Friday Schedule: cron(0/10 * ? * MON-FRI *) #Predicate:

Exemple de modèle AWS CloudFormation pour un déclencheur AWS Glue conditionnel

Un déclencheur AWS Glue du catalogue de données contient les valeurs des paramètres qui sont requises pour démarrer une tâche lorsque le déclencheur est exécuté. Un déclencheur conditionnel est exécuté lorsqu'il est activé et que ses conditions sont satisfaites, comme un travail terminé avec succès.

Cet exemple crée un déclencheur conditionnel qui démarre une tâche nommée cfn-job-S3-to-S3-1. Cette tâche commence lorsque la tâche nommée cfn-job-S3-to-S3-2 se termine correctement.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a conditional trigger for a job, which starts when another job completes # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The existing job to be started by this trigger CFNJobName: Type: String Default: cfn-job-S3-to-S3-1 # The existing job that when it finishes causes trigger to fire CFNJobName2: Type: String Default: cfn-job-S3-to-S3-2 # The name of the trigger to be created CFNTriggerName: Type: String Default: cfn-trigger-conditional-1 # Resources: # Create trigger to run an existing job (CFNJobName) when another job completes (CFNJobName2). CFNTriggerSample: Type: AWS::Glue::Trigger Properties: Name: Ref: CFNTriggerName Description: Trigger created with CloudFormation Type: CONDITIONAL Actions: - JobName: !Ref CFNJobName # Arguments: JSON object #Schedule: none Predicate: #Value for Logical is required if more than 1 job listed in Conditions Logical: AND Conditions: - LogicalOperator: EQUALS JobName: !Ref CFNJobName2 State: SUCCEEDED

Exemple de modèle AWS CloudFormation pour un point de terminaison de développement AWS Glue

Une transformation de machine learning AWS Glue est une transformation personnalisée destinée à nettoyer vos données. Il existe actuellement une transformation disponible nommée FindMatches. La transformation FindMatches vous permet d'identifier les enregistrements en double ou correspondants dans votre ensemble de données, même lorsque les enregistrements n'ont pas un identifiant unique commun et qu'aucun champ ne correspond exactement.

Cet exemple crée une transformation de machine learning. Pour plus d'informations sur les paramètres dont vous avez besoin pour créer une transformation de machine learning, consultez Correspondance d'enregistrements avec FindMatches AWS Lake Formation.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a machine learning transform # # Resources section defines metadata for the machine learning transform Resources: MyMLTransform: Type: "AWS::Glue::MLTransform" Condition: "isGlueMLGARegion" Properties: Name: !Sub "MyTransform" Description: "The bestest transform ever" Role: !ImportValue MyMLTransformUserRole GlueVersion: "1.0" WorkerType: "Standard" NumberOfWorkers: 5 Timeout: 120 MaxRetries: 1 InputRecordTables: GlueTables: - DatabaseName: !ImportValue MyMLTransformDatabase TableName: !ImportValue MyMLTransformTable TransformParameters: TransformType: "FIND_MATCHES" FindMatchesParameters: PrimaryKeyColumnName: "testcolumn" PrecisionRecallTradeoff: 0.5 AccuracyCostTradeoff: 0.5 EnforceProvidedLabels: True Tags: key1: "value1" key2: "value2" TransformEncryption: TaskRunSecurityConfigurationName: !ImportValue MyMLTransformSecurityConfiguration MLUserDataEncryption: MLUserDataEncryptionMode: "SSE-KMS" KmsKeyId: !ImportValue MyMLTransformEncryptionKey

Exemple de modèle AWS CloudFormation pour un ensemble de règles AWS Glue Data Quality

Un ensemble de règles de qualité des données AWS Glue contient des règles qui peuvent être évaluées dans une table du catalogue de données. Une fois que l'ensemble de règles est placé sur votre table cible, vous pouvez accéder au catalogue de données et exécuter une évaluation qui confronte vos données aux règles de l'ensemble de règles. Ces règles peuvent aller de l'évaluation du nombre de lignes à l'évaluation de l'intégrité référentielle de vos données.

L'exemple suivant est un modèle CloudFormation qui crée un ensemble de règles avec diverses règles sur la table cible spécifiée.

AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a DataQualityRuleset # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the ruleset to be created RulesetName: Type: String Default: "CFNRulesetName" RulesetDescription: Type: String Default: "CFN DataQualityRuleset" # Rules that will be associated with this ruleset Rules: Type: String Default: 'Rules = [ RowCount > 100, IsUnique "id", IsComplete "nametype" ]' # Name of database and table within Data Catalog which the ruleset will # be applied too DatabaseName: Type: String Default: "ExampleDatabaseName" TableName: Type: String Default: "ExampleTableName" # Resources section defines metadata for the Data Catalog Resources: # Creates a Data Quality ruleset under specified rules DQRuleset: Type: AWS::Glue::DataQualityRuleset Properties: Name: !Ref RulesetName Description: !Ref RulesetDescription # The String within rules must be formatted in DQDL, a language # used specifically to make rules Ruleset: !Ref Rules # The targeted table must exist within Data Catalog alongside # the correct database TargetTable: DatabaseName: !Ref DatabaseName TableName: !Ref TableName

Exemple de modèle AWS CloudFormation pour un ensemble de règles AWS Glue Data Quality avec le planificateur EventBridge

Un ensemble de règles de qualité des données AWS Glue contient des règles qui peuvent être évaluées dans une table du catalogue de données. Une fois que l'ensemble de règles est placé sur votre table cible, vous pouvez accéder au catalogue de données et exécuter une évaluation qui confronte vos données aux règles de l'ensemble de règles. Au lieu d'avoir à accéder manuellement au catalogue de données pour évaluer l'ensemble de règles, vous pouvez également ajouter un planificateur EventBridge dans notre modèle CloudFormation afin de planifier ces évaluations d'ensembles de règles pour vous à intervalles réguliers.

L'exemple suivant est un modèle CloudFormation qui crée un ensemble de règles de qualité des données et un planificateur EventBridge pour évaluer l'ensemble de règles susmentionné toutes les cinq minutes.

AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a DataQualityRuleset # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the ruleset to be created RulesetName: Type: String Default: "CFNRulesetName" # Rules that will be associated with this Ruleset Rules: Type: String Default: 'Rules = [ RowCount > 100, IsUnique "id", IsComplete "nametype" ]' # The name of the Schedule to be created ScheduleName: Type: String Default: "ScheduleDQRulsetEvaluation" # This expression determines the rate at which the Schedule will evaluate # your data using the above ruleset ScheduleRate: Type: String Default: "rate(5 minutes)" # The Request that being sent must match the details of the Data Quality Ruleset ScheduleRequest: Type: String Default: ' { "DataSource": { "GlueTable": { "DatabaseName": "ExampleDatabaseName", "TableName": "ExampleTableName" } }, "Role": "role/AWSGlueServiceRoleDefault", "RulesetNames": [ ""CFNRulesetName"" ] } ' # Resources section defines metadata for the Data Catalog Resources: # Creates a Data Quality ruleset under specified rules DQRuleset: Type: AWS::Glue::DataQualityRuleset Properties: Name: !Ref RulesetName Description: "CFN DataQualityRuleset" # The String within rules must be formatted in DQDL, a language # used specifically to make rules Ruleset: !Ref Rules # The targeted table must exist within Data Catalog alongside # the correct database TargetTable: DatabaseName: "ExampleDatabaseName" TableName: "ExampleTableName" # Create a Scheduler to schedule evaluation runs on the above ruleset ScheduleDQEval: Type: AWS::Scheduler::Schedule Properties: Name: !Ref ScheduleName Description: "Schedule DataQualityRuleset Evaluations" FlexibleTimeWindow: Mode: "OFF" ScheduleExpression: !Ref ScheduleRate ScheduleExpressionTimezone: "America/New_York" State: "ENABLED" Target: # The ARN is the API that will be run, since we want to evaluate our ruleset # we want this specific ARN Arn: "arn:aws:scheduler:::aws-sdk:glue:startDataQualityRulesetEvaluationRun" # Your RoleArn must have approval to schedule RoleArn: "arn:aws:iam::123456789012:role/AWSGlueServiceRoleDefault" # This is the Request that is being sent to the Arn Input: ' { "DataSource": { "GlueTable": { "DatabaseName": "sampledb", "TableName": "meteorite" } }, "Role": "role/AWSGlueServiceRoleDefault", "RulesetNames": [ "TestCFN" ] } '

Exemple de modèle AWS CloudFormation pour un point de terminaison de développement AWS Glue

Un point de terminaison de développement AWS Glue est un environnement que vous pouvez utiliser pour développer et tester vos scripts AWS Glue.

Cet exemple crée un point de terminaison de développement avec les valeurs de paramètres réseau minimales requises pour le créer avec succès. Pour plus d'informations sur les paramètres dont vous avez besoin pour configurer un point de terminaison de développement, consultez Configuration du réseau pour le développement de AWS Glue.

Vous fournissez un ARN (Amazon Resource Name) de rôle IAM existant pour créer le point de terminaison de développement. Fournissez une clé publique RSA valide et conservez la clé privée correspondante disponible si vous prévoyez de créer un serveur de bloc-notes sur le point de terminaison de développement.

Note

Dans le cas d'un serveur de bloc-notes que vous créez qui est associé à un point de terminaison de développement, vous le gérez. Par conséquent, si vous supprimez le point de terminaison de développement, pour supprimer le serveur de bloc-notes, vous devez supprimer la pile AWS CloudFormation sur la console AWS CloudFormation.

--- AWSTemplateFormatVersion: '2010-09-09' # Sample CFN YAML to demonstrate creating a development endpoint # # Parameters section contains names that are substituted in the Resources section # These parameters are the names the resources created in the Data Catalog Parameters: # The name of the crawler to be created CFNEndpointName: Type: String Default: cfn-devendpoint-1 CFNIAMRoleArn: Type: String Default: arn:aws:iam::123456789012/role/AWSGlueServiceRoleGA # # # Resources section defines metadata for the Data Catalog Resources: CFNDevEndpoint: Type: AWS::Glue::DevEndpoint Properties: EndpointName: !Ref CFNEndpointName #ExtraJarsS3Path: String #ExtraPythonLibsS3Path: String NumberOfNodes: 5 PublicKey: ssh-rsa public.....key myuserid-key RoleArn: !Ref CFNIAMRoleArn SecurityGroupIds: - sg-64986c0b SubnetId: subnet-c67cccac