AWS CloudFormation para AWS Glue
AWS CloudFormation es un servicio que puede crear muchos recursos de AWS. AWS Glue proporciona operaciones de API para crear objetos en AWS Glue Data Catalog. Sin embargo, podría ser más cómodo definir y crear objetos de AWS Glue y otros objetos de recursos de AWS relacionados en un archivo de plantilla de AWS CloudFormation. A continuación, puede automatizar el proceso de creación de objetos.
AWS CloudFormation proporciona una sintaxis simplificada, JSON (JavaScript Object Notation) o YAML (YAML Ain't Markup Language), para expresar la creación de recursos de AWS. Puede utilizar las plantillas de AWS CloudFormation para definir objetos del Catálogo de datos, como bases de datos, tablas, particiones, rastreadores, clasificadores y conexiones. También puede definir objetos ETL, por ejemplo, trabajos, disparadores y puntos de enlace de desarrollo. Puede crear una plantilla que describa todos los recursos de AWS que desea y AWS CloudFormation se encargará del aprovisionamiento y la configuración de dichos recursos.
Para obtener más información, consulte ¿Qué es AWS CloudFormation? y Trabajar con plantillas AWS CloudFormation en la Guía del usuario de AWS CloudFormation.
Si tiene previsto utilizar plantillas de AWS CloudFormation que sean compatibles con AWS Glue, como administrador, debe conceder acceso a AWS CloudFormation y a los servicios y acciones de AWS de los que depende. Para otorgar permisos para crear recursos de AWS CloudFormation, adjunte la siguiente política a los usuarios que trabajan con AWS CloudFormation:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ] }
La siguiente tabla contiene las acciones que puede realizar una plantilla de AWS CloudFormation en su nombre. Incluye enlaces a información sobre los tipos de recursos de AWS y sus tipos de propiedad que puede agregar a una plantilla de AWS CloudFormation.
Para comenzar, utilice las siguientes plantillas de muestra y personalícelas con sus propios metadatos. A continuación, utilice la consola de AWS CloudFormation para crear una pila de AWS CloudFormation con el fin de agregar objetos a AWS Glue y cualquier servicio asociado. Muchos campos de un objeto de AWS Glue son opcionales. Estas plantillas ilustran los campos que son obligatorios o necesarios para un objeto de AWS Glue operativo y funcional.
Una plantilla de AWS CloudFormation puede tener formato JSON o YAML. En estos ejemplos, se utiliza YAML para facilitar la legibilidad. Los ejemplos contienen comentarios (#
) para describir los valores que están definidos en las plantillas.
Las plantillas de AWS CloudFormation pueden incluir una sección Parameters
. Esta sección se puede modificar en el texto de muestra o cuando se envía el archivo YAML a la consola de AWS CloudFormation para crear una pila. La sección Resources
de la plantilla contiene la definición de AWS Glue y los objetos relacionados. Las definiciones de sintaxis de plantilla de AWS CloudFormation puede contener propiedades que incluyan sintaxis de propiedad más detallada. Es posible que no todas las propiedades sean necesarias para crear un objeto de AWS Glue. Estas muestras incluyen valores de ejemplo de propiedades comunes para crear un objeto de AWS Glue.
Plantilla de AWS CloudFormation de muestra para una base de datos de AWS Glue
Una base de datos de AWS Glue en el Catálogo de datos contiene tablas de metadatos. La base de datos se compone de muy pocas propiedades y se puede crear en el Catálogo de datos con una plantilla de AWS CloudFormation. La siguiente plantilla de muestra se proporciona para ayudarle a comenzar y para ilustrar el uso de las pilas de AWS CloudFormation con AWS Glue. El único recurso creado por la plantilla de muestra es una base de datos denominada cfn-mysampledatabase
. Puede cambiarlo si edita el texto de la muestra o cambia el valor en la consola de AWS CloudFormation al enviar el código YAML.
A continuación, se muestran valores de ejemplo de propiedades comunes para crear una base de datos de AWS Glue. Para obtener más información sobre la plantilla de base de datos de AWS CloudFormation para AWS Glue, consulte 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
Plantilla de AWS CloudFormation de muestra para una base de datos, tabla y partición de AWS Glue
Una tabla de AWS Glue contiene los metadatos que definen la estructura y la ubicación de los datos que desea procesar con los scripts de ETL. En una tabla, puede definir particiones para paralelizar el procesamiento de los datos. Una partición es un fragmento de datos que define con una clave. Por ejemplo, si se usa el mes como una clave, todos los datos de enero se encuentran en la misma partición. En AWS Glue, las bases de datos pueden contener tablas y las tablas pueden contener particiones.
En la siguiente muestra se presenta cómo rellenar una base de datos, una tabla y particiones con una plantilla de AWS CloudFormation. El formato de los datos base es csv
y están delimitados por una coma (,). Como debe existir una base de datos para que pueda contener una tabla, y una tabla debe existir para que se puedan crear particiones, la plantilla utiliza la instrucción DependsOn
para definir la dependencia de estos objetos cuando se crean.
Los valores de esta muestra definen una tabla que contiene los datos de vuelos de un bucket de Amazon S3 disponible públicamente. Con fines ilustrativos, solo hay definidas algunas columnas de los datos y una clave de partición. También se definen cuatro particiones en el Catálogo de datos. En los campos StorageDescriptor
también se muestran algunos campos para describir el almacenamiento de los datos base.
--- 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
Plantilla de AWS CloudFormation de muestra para un clasificador de grok de AWS Glue
Un clasificador de AWS Glue determina el esquema de sus datos. Un tipo de clasificador personalizado utiliza un patrón de grok para adaptarse a sus datos. Si el patrón coincide, el clasificador personalizado se utiliza para crear el esquema de la tabla y se establece classification
en el valor configurado en la definición de clasificador.
Esta muestra genera un clasificador que crea un esquema con una columna denominada message
y establece la clasificación en 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
Plantilla de AWS CloudFormation de muestra para un clasificador de JSON de AWS Glue
Un clasificador de AWS Glue determina el esquema de sus datos. Un tipo de clasificador personalizado utiliza una cadena JsonPath
que define los datos JSON que el clasificador debe clasificar. AWS Glue es compatible con un subconjunto de los operadores de JsonPath
, tal y como se describe en Escritura de clasificadores personalizados JSON.
Si el patrón coincide, el clasificador personalizado se utiliza para crear el esquema de la tabla.
En esta muestra se crea un clasificador que genera un esquema con cada registro de la matriz Records3
en un objeto.
--- 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[*]
Plantilla de AWS CloudFormation de muestra para un clasificador de XML de AWS Glue
Un clasificador de AWS Glue determina el esquema de sus datos. Un tipo de clasificador personalizado especifica una etiqueta XML para designar el elemento que contiene cada registro en un documento XML que se está analizando. Si el patrón coincide, el clasificador personalizado se utiliza para crear el esquema de la tabla y se establece classification
en el valor configurado en la definición de clasificador.
En esta muestra se crea un clasificador que genera un esquema con cada registro de la etiqueta Record
y establece la clasificación en 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>
Plantilla de AWS CloudFormation de muestra para un rastreador de AWS Glue para Amazon S3
Un rastreador de AWS Glue crea tablas de metadatos en el Catálogo de datos que se corresponden con sus datos. A continuación, puede utilizar estas definiciones de tabla como orígenes y destinos en sus trabajos de ETL.
Esta muestra crea un rastreador, el rol de IAM necesario y una base de datos de AWS Glue en el Catálogo de datos. Cuando se ejecuta este rastreador, asume el rol de IAM y crea una tabla en la base de datos correspondiente a los datos de vuelos públicos. La tabla se crea con el prefijo "cfn_sample_1_
". El rol de IAM que crea esta plantilla otorga permisos globales; es recomendable que cree un rol personalizado. No se definen clasificadores personalizados mediante este clasificador. De forma predeterminada, se usan los clasificadores integrados de AWS Glue.
Al enviar esta muestra a la consola de AWS CloudFormation, debe confirmar que desea crear el rol de 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\"}}}"
Plantilla de AWS CloudFormation de muestra para una conexión de AWS Glue
Una conexión de AWS Glue en el Catálogo de datos contiene la información de JDBC y de red que es necesaria para conectarse a una base de datos JDBC. Esta información se utiliza al conectarse a una base de datos JDBC para rastrear o ejecutar trabajos de ETL.
Esta muestra crea una conexión a una base de datos de Amazon RDS MySQL denominada devdb
. Cuando se utiliza esta conexión, también se suministran un rol de IAM, credenciales de base de datos y valores de conexión de red. Consulte los detalles de los campos necesarios en la plantilla.
--- 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
Plantilla de AWS CloudFormation de muestra para un rastreador de AWS Glue para JDBC
Un rastreador de AWS Glue crea tablas de metadatos en el Catálogo de datos que se corresponden con sus datos. A continuación, puede utilizar estas definiciones de tabla como orígenes y destinos en sus trabajos de ETL.
Esta muestra crea un rastreador, el rol de IAM necesario y una base de datos de AWS Glue en el Catálogo de datos. Cuando se ejecuta este rastreador, asume el rol de IAM y crea una tabla en la base de datos correspondiente a los datos de vuelos públicos que se han almacenado en una base de datos MySQL. La tabla se crea con el prefijo "cfn_jdbc_1_
". El rol de IAM que crea esta plantilla otorga permisos globales; es recomendable que cree un rol personalizado. No se puede definir ningún clasificador personalizado para los datos de JDBC. De forma predeterminada, se usan los clasificadores integrados de AWS Glue.
Al enviar esta muestra a la consola de AWS CloudFormation, debe confirmar que desea crear el rol de 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\"}}}"
Plantilla de AWS CloudFormation de muestra para un trabajo de AWS Glue para Amazon S3 a Amazon S3
Un trabajo de AWS Glue en el Catálogo de datos contiene los valores de parámetros que son necesarios para ejecutar un script en AWS Glue.
Esta muestra crea un trabajo que lee datos de vuelos de un bucket de Amazon S3 en formato csv
y los escribe en un archivo Parquet de Amazon S3. El script que ejecuta este flujo de trabajo ya debe existir. Puede generar un script de ETL para su entorno con la consola de AWS Glue. Cuando este trabajo se ejecuta, también se debe proporcionar un rol de IAM con los permisos correspondientes.
Los valores de parámetro comunes se muestran en la plantilla. Por ejemplo, el valor predeterminado de AllocatedCapacity
(DPU) es 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
Plantilla de AWS CloudFormation de muestra para un trabajo de AWS Glue para JDBC a Amazon S3
Un trabajo de AWS Glue en el Catálogo de datos contiene los valores de parámetros que son necesarios para ejecutar un script en AWS Glue.
Esta muestra crea un trabajo que lee los datos de vuelos de una base de datos MySQL JDBC según lo definido por la conexión denominada cfn-connection-mysql-flights-1
y los escribe en un archivo Parquet de Amazon S3. El script que ejecuta este flujo de trabajo ya debe existir. Puede generar un script de ETL para su entorno con la consola de AWS Glue. Cuando este trabajo se ejecuta, también se debe proporcionar un rol de IAM con los permisos correspondientes.
Los valores de parámetro comunes se muestran en la plantilla. Por ejemplo, el valor predeterminado de AllocatedCapacity
(DPU) es 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
Ejemplo de plantilla de AWS CloudFormation para un desencadenador bajo demanda de AWS Glue
Un desencadenador de AWS Glue en el Catálogo de datos contiene los valores de parámetros que son necesarios para iniciar una ejecución de flujo de trabajo cuando se activa el desencadenador. Un disparador bajo demanda se activa cuando lo habilita.
Esta muestra crea un disparador bajo demanda que comienza un flujo de trabajo llamado 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:
Plantilla de AWS CloudFormation de muestra para un disparador programado de AWS Glue
Un desencadenador de AWS Glue en el Catálogo de datos contiene los valores de parámetros que son necesarios para iniciar una ejecución de flujo de trabajo cuando se activa el desencadenador. Un disparador programado se activa cuando está habilitado y se activa el temporizador cron.
Esta muestra crea un disparador programado que comienza un flujo de trabajo llamado cfn-job-S3-to-S3-1
. El temporizador es una expresión cron para ejecutar el flujo de trabajo cada 10 minutos los días entre semana.
--- 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:
Plantilla de AWS CloudFormation de muestra para un disparador condicional de AWS Glue
Un desencadenador de AWS Glue en el Catálogo de datos contiene los valores de parámetros que son necesarios para iniciar una ejecución de flujo de trabajo cuando se activa el desencadenador. Un disparador condicional se activa cuando está habilitado y se cumplen sus condiciones, por ejemplo, que un flujo de trabajo se realice correctamente.
Esta muestra crea un disparador condicional que comienza un flujo de trabajo llamado cfn-job-S3-to-S3-1
. Este flujo de trabajo comienza cuando el flujo de trabajo llamado cfn-job-S3-to-S3-2
se completa correctamente.
--- 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
Plantilla de AWS CloudFormation de muestra para un punto de conexión de desarrollo de AWS Glue
Una transformación de machine learning de AWS Glue es una transformación personalizada para limpiar los datos. En la actualidad, hay una transformación disponible denominada FindMatches. La transformación FindMatches le permite identificar registros duplicados o coincidentes en el conjunto de datos, incluso cuando los registros no tienen un identificador único común y no coinciden exactamente los campos.
Este ejemplo crea una transformación de machine learning. Para obtener más información sobre los parámetros que se necesitan para crear una transformación de machine learning, consulte Coincidencia de registros con FindMatches de 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
Ejemplo de plantilla de AWS CloudFormation para un conjunto de reglas de AWS Glue Data Quality
Un conjunto de reglas de calidad de datos de AWS Glue contiene reglas que se pueden evaluar en una tabla del catálogo de datos. Una vez colocado el conjunto de reglas en la tabla de destino, puede ir al catálogo de datos y realizar una evaluación para comparar los datos con las reglas del conjunto de reglas. Estas reglas pueden variar desde la evaluación del recuento de filas hasta la evaluación de la integridad referencial de los datos.
En el siguiente ejemplo, se muestra una plantilla de CloudFormation que crea un conjunto de reglas con una variedad de reglas en la tabla de destino especificada.
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
Plantilla de AWS CloudFormation de ejemplo para un conjunto de reglas de AWS Glue Data Quality con el programador de EventBridge
Un conjunto de reglas de calidad de datos de AWS Glue contiene reglas que se pueden evaluar en una tabla del catálogo de datos. Una vez colocado el conjunto de reglas en la tabla de destino, puede ir al catálogo de datos y realizar una evaluación para comparar los datos con las reglas del conjunto de reglas. En lugar de tener que ir manualmente al catálogo de datos para evaluar el conjunto de reglas, también puede agregar un EventBridge Scheduler a nuestra plantilla de CloudFormation para programar estas evaluaciones del conjunto de reglas en un intervalo de tiempo determinado.
El siguiente ejemplo es una plantilla de CloudFormation que crea un conjunto de reglas de calidad de datos y un programador de EventBridge para evaluar el conjunto de reglas mencionado anteriormente cada cinco minutos.
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" ] } '
Plantilla de AWS CloudFormation de muestra para un punto de conexión de desarrollo de AWS Glue
Un punto de enlace de desarrollo de AWS Glue es un entorno que puede utilizar para desarrollar y probar los scripts de AWS Glue.
Esta muestra crea un punto de enlace de desarrollo con los valores de parámetro de red mínimos necesarios para crearlo correctamente. Para obtener más información acerca de los parámetros que necesita para configurar un punto de enlace de desarrollo, consulte Configuración de redes para el desarrollo de AWS Glue.
Proporcione un ARN (nombre de recurso de Amazon) de rol de IAM existente para crear el punto de enlace de desarrollo. Proporcione una clave pública RSA válida y mantenga disponible la clave privada correspondiente si tiene previsto crear un servidor de blocs de notas en el punto de enlace de desarrollo.
nota
Usted administrará los servidores de blocs de notas que cree y estén asociados con un punto de enlace de desarrollo. Por tanto, si elimina el punto de enlace de desarrollo, para eliminar el bloc de notas, será preciso que elimine la pila de AWS CloudFormation en la consola de 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