

# AWS CloudFormation para AWS Glue
<a name="populate-with-cloudformation-templates"></a>

O CloudFormation é um serviço que pode criar muitos recursos da AWS. O AWS Glue fornece operações de API para criar objetos no AWS Glue Data Catalog. No entanto, pode ser mais conveniente definir e criar objetos do AWS Glue e outros objetos de recurso relacionados da AWS em um arquivo de modelo do CloudFormation. Em seguida, você pode automatizar o processo de criação de objetos. 

O CloudFormation fornece uma sintaxe simplificada, JSON (JavaScript Object Notation) ou YAML (YAML Ain't Markup Language), para expressar a criação de recursos da AWS. Você pode usar os modelos do CloudFormation para definir os objetos do Data Catalog, como bancos de dados, tabelas, partições, crawlers, classificadores e conexões. Você também pode definir objetos ETL como trabalhos, acionadores e endpoints de desenvolvimento. Você cria um modelo que descreve todos os recursos da AWS desejados, e o CloudFormation cuida do provisionamento e da configuração desses recursos para você.

Para obter mais informações, consulte [O que é o AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) e [Trabalhar com modelos do AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) no *Manual do usuário do AWS CloudFormation*.

Se você planeja usar modelos do CloudFormation compatíveis com o AWS Glue, como administrador, você deve conceder acesso ao CloudFormation e às ações e aos serviços da AWS dos quais ele depende. Para conceder permissões para criar recursos do CloudFormation, anexe a seguinte política aos usuários que trabalham com o CloudFormation: 

------
#### [ JSON ]

****  

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

------

A tabela a seguir contém as ações que um modelo do CloudFormation pode realizar em seu nome. Ela inclui links para informações sobre os tipos de recursos da AWS e os tipos de propriedade que você pode adicionar a um modelo do CloudFormation. 


| Recurso do AWS Glue | Modelo do CloudFormation | AWS GlueExemplos do  | 
| --- | --- | --- | 
| Classificador | [AWS::Glue::Classifier](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-classifier.html) | [Classificador grok](#sample-cfn-template-classifier), [Classificador JSON](#sample-cfn-template-classifier-json), [Classificador XML](#sample-cfn-template-classifier-xml) | 
| Conexão | [AWS::Glue::Connection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-connection.html) | [Conexão do MySQL](#sample-cfn-template-connection) | 
| Crawler | [AWS::Glue::Crawler](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html) | [Crawler do Amazon S3](#sample-cfn-template-crawler-s3), [Crawler do MySQL](#sample-cfn-template-crawler-jdbc) | 
| Banco de dados | [AWS::Glue::Database](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-database.html) | [Banco de dados vazio](#sample-cfn-template-database), [Banco de dados com tabelas](#sample-cfn-template-db-table-partition)  | 
| Endpoint de desenvolvimento | [AWS::Glue::DevEndpoint](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html) | [Endpoint de desenvolvimento](#sample-cfn-template-devendpoint) | 
| Integração | [AWS::Glue::Integration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-integration.html) | [Integração ETL zero](#sample-cfn-template-integration) | 
| Propriedade de recursos de integração | [AWS::Glue::IntegrationResourceProperty](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-integrationresourceproperty.html) | [Integração ETL zero com propriedade de recursos de integração](#sample-cfn-template-integration-resource-property) | 
| Trabalho | [AWS::Glue::Job](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html) | [Trabalho do Amazon S3](#sample-cfn-template-job-s3), [Trabalho do JDBC](#sample-cfn-template-job-jdbc) | 
| Transformação de machine learning | [AWS::Glue::MLTransform](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-mltransform.html) | [Transformação de machine learning](#sample-cfn-template-machine-learning-transform) | 
| Regras de qualidade de dados | [AWS::Glue::DataQualityRuleset](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-dataqualityruleset.html) | [Conjunto de regras de qualidade de dados](#sample-cfn-template-data-quality-ruleset), [Conjunto de regras de qualidade de dados com o agendador do EventBridge](#sample-cfn-template-data-quality-ruleset-eventbridge) | 
| Partition | [AWS::Glue::Partition](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-partition.html) | [Partições de uma tabela](#sample-cfn-template-db-table-partition) | 
| Tabela | [AWS::Glue::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html) | [Tabela em um banco de dados](#sample-cfn-template-db-table-partition) | 
| Trigger | [AWS::Glue::Trigger](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html) | [Acionador sob demanda](#sample-cfn-template-trigger-ondemand), [Acionador programado](#sample-cfn-template-trigger-scheduled), [Acionador condicional](#sample-cfn-template-trigger-conditional)  | 

Para começar, use os seguintes modelos de exemplo e personalize-os com seus próprios metadados. Em seguida, use o console do CloudFormation para criar uma pilha do CloudFormation para adicionar objetos ao AWS Glue e a todos os serviços associados. Muitos campos em um objeto do AWS Glue são opcionais. Esses modelos ilustram os campos que são obrigatórios ou necessários para um objeto do AWS Glue funcional. 

 Um modelo do CloudFormation pode estar no formato JSON ou YAML. Nestes exemplos, o YAML é usado para facilitar a leitura. Os exemplos contêm comentários (`#`) para descrever os valores que são definidos nos modelos. 

Os modelos do CloudFormation podem incluir uma seção `Parameters`. Esta seção pode ser alterada no texto de exemplo ou quando o arquivo YAML for enviado para o console do CloudFormation para criar uma pilha. A seção `Resources` do modelo contém a definição do AWS Glue e objetos relacionados. As definições de sintaxe de modelos do CloudFormation pode conter propriedades que incluem uma sintaxe de propriedades mais detalhada. Nem todas as propriedades podem ser necessárias para criar um objeto do AWS Glue. Essas amostras mostram exemplos de valores para propriedades comuns para criar um objeto do AWS Glue.

## Exemplo de modelo do CloudFormation para um banco de dados do AWS Glue
<a name="sample-cfn-template-database"></a>

Um banco de dados do AWS Glue no Data Catalog contém tabelas de metadados. O banco de dados consiste em poucas propriedades e pode ser criado no Data Catalog com um modelo do CloudFormation. O modelo de exemplo a seguir é fornecido para você começar e para ilustrar o uso de pilhas do CloudFormation com o AWS Glue. O único recurso criado pelo modelo de exemplo é um banco de dados chamado `cfn-mysampledatabase`. Você pode alterá-lo ao editar o texto do exemplo ou ao alterar o valor no console do CloudFormation quando você enviar o YAML.

Veja a seguir exemplos de valores para as propriedades comuns para criar um banco de dados do AWS Glue. Para obter mais informações sobre o modelo de banco de dados do CloudFormation para o AWS Glue, consulte [AWS::Glue::Database](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-database.html). 

```
---
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
```

## Exemplo de modelo do CloudFormation para um banco de dados, uma tabela e uma partição do AWS Glue
<a name="sample-cfn-template-db-table-partition"></a>

Uma tabela do AWS Glue contém os metadados que definem a estrutura e o local dos dados que você deseja processar com seus scripts de ETL. Em uma tabela, você pode definir partições para paralelizar o processamento de seus dados. Uma partição é um bloco de dados definido com uma chave. Por exemplo, usando o mês como uma chave, todos os dados de janeiro estão contidos na mesma partição. No AWS Glue, bancos de dados podem conter tabelas, e tabelas podem conter partições.

O exemplo a seguir mostra como preencher um banco de dados, uma tabela e partições usando um modelo do CloudFormation. O formato de dados base é `csv` e delimitado por uma vírgula (,). Como um banco de dados deve existir antes de poder conter uma tabela, e uma tabela deve existir antes que as partições possam ser criadas, o modelo usa a instrução `DependsOn` para definir a dependência desses objetos quando eles são criados.

Os valores neste exemplo definem uma tabela que contém dados de voo de um bucket do Amazon S3 publicamente disponível. Para ilustração, apenas algumas colunas dos dados e uma chave de particionamento são definidas. Quatro partições também são definidas no Data Catalog. Alguns campos para descrever o armazenamento do banco de dados também são mostrados nos campos `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
```

## Exemplo de modelo do CloudFormation para um classificador grok do AWS Glue
<a name="sample-cfn-template-classifier"></a>

Um classificador do AWS Glue determina o esquema dos seus dados. Um tipo de classificador personalizado usa um padrão grok para corresponder aos seus dados. Se o padrão corresponder, o classificador personalizado será usado para criar o esquema da tabela e definir `classification` como o valor definido na definição do classificador.

Este exemplo cria um classificador que cria um esquema com uma coluna denominada `message` e define a classificação para `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
```

## Exemplo de modelo do CloudFormation para um classificador JSON do AWS Glue
<a name="sample-cfn-template-classifier-json"></a>

Um classificador do AWS Glue determina o esquema dos seus dados. Um tipo de classificador personalizado usa uma string `JsonPath` que define os dados JSON para o classificador classificar. O AWS Glue oferece suporte a um subconjunto de operadores para `JsonPath`, conforme descrito em [Gravando classificadores personalizados JsonPath](https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json). 

Se o padrão for correspondente, o classificador personalizado será usado para criar o esquema da tabela.

Este exemplo cria um classificador que cria um esquema com cada registro na matriz `Records3` em um 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[*]
```

## Exemplo de modelo do CloudFormation para um classificador XML do AWS Glue
<a name="sample-cfn-template-classifier-xml"></a>

Um classificador do AWS Glue determina o esquema dos seus dados. Um tipo de classificador personalizado especifica uma tag XML para designar o elemento que contém cada registro em um documento XML que está sendo analisado. Se o padrão corresponder, o classificador personalizado será usado para criar o esquema da tabela e definir `classification` como o valor definido na definição do classificador.

Este exemplo cria um classificador que cria um esquema com uma registro na tag `Record` e define a classificação como `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>
```

## Exemplo de modelo do CloudFormation de um crawler do AWS Glue para o Amazon S3
<a name="sample-cfn-template-crawler-s3"></a>

Um crawler do AWS Glue cria tabelas de metadados no Data Catalog que correspondem aos seus dados. Você pode usar essas definições de tabela como origens e destinos em trabalhos de ETL.

Este exemplo cria um crawler, a função do IAM necessária e um banco de dados do AWS Glue no Data Catalog. Quando esse crawler é executado, ele assume a função do IAM e cria uma tabela no banco de dados para os dados de voos públicos. A tabela é criada com o prefixo "`cfn_sample_1_`". A função do IAM criada por esse modelo permite permissões globais, caso você queira criar uma função personalizada. Nenhum classificador personalizado é definido por esse classificador. Os classificadores integrados do AWS Glue são usados por padrão. 

Quando você envia esse exemplo para o console do CloudFormation, é necessário confirmar se deseja criar a função do 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\"}}}"
```

## Exemplo de modelo do CloudFormation para uma conexão do AWS Glue
<a name="sample-cfn-template-connection"></a>

Uma conexão do AWS Glue no Data Catalog contém as informações do JDBC e de rede que são necessárias para se conectar a um banco de dados JDBC. Essas informações são usadas quando você se conecta a um banco de dados JDBC para rastrear ou executar trabalhos de ETL.

Este exemplo cria uma conexão com um banco de dados MySQL do Amazon RDS chamado `devdb`. Quando essa conexão é usada, uma função do IAM, as credenciais do banco de dados e os valores de conexão de rede também devem ser fornecidos. Consulte as informações dos campos necessários no modelo.

```
---
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
```

## Modelo de amostra do CloudFormation para uma integração ETL zero do AWS Glue
<a name="sample-cfn-template-integration"></a>

O ETL zero da AWS é um conjunto de integrações totalmente gerenciadas que minimiza a necessidade de criar pipelines de dados ETL para casos de uso comuns de ingestão e replicação.

Esse exemplo cria uma integração ETL zero da fonte fornecida no destino. 

```
---
AWSTemplateFormatVersion: '2010-09-09'
# Sample CFN YAML to demonstrate creating a zero-ETL integration in AWS Glue
#
# Parameters section contains names that are substituted in the Resources section
# 
Parameters:                                                                                                       
  # The name of the zero-ETL integration to be created
  IntegrationName:  
    Type: String
  # The ARN for the source of the zero-ETL integration
  SourceArn:
    Type: String
  # The ARN for the target of the zero-ETL integration 
  TargetArn:
    Type: String
#
#
Resources:
# Create an AWS Glue zero-ETL integration
  GlueIntegration:
    Type: AWS::Glue::Integration
    Properties:
      IntegrationName: !Ref IntegrationName
      Description: "AWS Glue zero-ETL integration"
      SourceArn: !Ref SourceArn
      TargetArn: !Ref TargetArn
      DataFilter: "include:table1"
      Tags:
        - Key: Purpose
          Value: GlueZeroETLIntegration
```

## Modelo de amostra do CloudFormation para uma integração ETL zero do AWS Glue com propriedades de recursos de integração
<a name="sample-cfn-template-integration-resource-property"></a>

Uma integração ETL zero do AWS Glue exige que as propriedades do recurso sejam definidas para a origem e o destino. Para a fonte, a única propriedade que precisa ser definida é o perfil do IAM que a integração usará para acessar a conexão ou o banco de dados do DynamoDB do AWS Glue. Para o destino, as propriedades que podem ser configuradas incluem o perfil do IAM que será usado para acessar o destino, a rede VPC na qual a integração deve ser criada, o barramento de eventos que será usado para configurar notificações de eventos para a integração e a chave KMS que será usada para criptografia de dados.

O exemplo abaixo define as propriedades dos recursos de origem e destino e, em seguida, cria uma integração ETL zero da origem para o destino. 

```
---
AWSTemplateFormatVersion: '2010-09-09'
# Sample CFN YAML to demonstrate defining the integration resource properties and then creating a zero-ETL integration in AWS Glue
#
# Parameters section contains names that are substituted in the Resources section
# 
Parameters:
  #The name of the zero-ETL integration to be created
  IntegrationName:
    Type: String
  # The ARN for the target of the zero-ETL integration
  TargetArn:
    Type: String
  # The ARN for the IAM role that will be used to access the target
  TargetRoleArn:
    Type: String
  # The ARN for the source of the zero-ETL integration
  SourceArn:
    Type: String
  # The ARN for the IAM role that will be used to access thesource
  SourceRoleArn:
    Type: String
#
#
Resources:
  # Integration Resource Property for zero-ETL target
  TargetIntegrationResourceProperty:
    Type: AWS::Glue::IntegrationResourceProperty
    Properties:
      ResourceArn: !Ref TargetArn
      TargetProcessingProperties:
        RoleArn: !Ref TargetRoleArn
      Tags:
        - Key: Purpose
          Value: TargetIrpTag

  # Integration Resource Property for zero-ETL source
  SourceIntegrationResourceProperty:
    Type: AWS::Glue::IntegrationResourceProperty
    Properties:
      ResourceArn: !Ref SourceArn
      SourceProcessingProperties:
        RoleArn: !Ref SourceRoleArn
      Tags:
        - Key: Purpose
          Value: SourceIRPTag

  # Create an AWS Glue zero-ETL integration
  GlueIntegration:
    Type: AWS::Glue::Integration
    Properties:
      IntegrationName: !Ref IntegrationName
      Description: "AWS Glue zero-ETL integration"
      SourceArn: !Ref SourceArn
      TargetArn: !Ref TargetArn
      DataFilter: "include:table1"
      Tags:
        - Key: Purpose
          Value: GlueZeroETLIntegration
```

## Exemplo de modelo do CloudFormation para um crawler do AWS Glue para o JDBC
<a name="sample-cfn-template-crawler-jdbc"></a>

Um crawler do AWS Glue cria tabelas de metadados no Data Catalog que correspondem aos seus dados. Você pode usar essas definições de tabela como origens e destinos em trabalhos de ETL.

Este exemplo cria um crawler, a função do IAM necessária e um banco de dados do AWS Glue no Data Catalog. Quando esse crawler é executado, ele assume a função do IAM e cria uma tabela no banco de dados para os dados de voo públicos que foram armazenados em um banco de dados MySQL. A tabela é criada com o prefixo "`cfn_jdbc_1_`". A função do IAM criada por esse modelo permite permissões globais, caso você queira criar uma função personalizada. Nenhum classificador personalizado pode ser definido para dados JDBC. Os classificadores integrados do AWS Glue são usados por padrão. 

Quando você envia esse exemplo para o console do CloudFormation, é necessário confirmar se deseja criar a função do 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\"}}}"
```

## Exemplo do modelo do CloudFormation de um trabalho do AWS Glue para o Amazon S3 ao Amazon S3
<a name="sample-cfn-template-job-s3"></a>

Um trabalho do AWS Glue no Data Catalog contém os valores de parâmetros que são necessários para executar um script no AWS Glue.

Este exemplo cria um trabalho que lê dados de voo de um bucket do Amazon S3 no formato `csv` e os grava em um arquivo Parquet do Amazon S3. O script que é executado por esse trabalho já deve existir. Você pode gerar um script de ETL para seu ambiente com o console do AWS Glue. Quando esse trabalho é executado, uma função do IAM com as permissões corretas também deve ser fornecida.

Os valores de parâmetro comuns são exibidos no modelo. Por exemplo, o padrão é 5 para `AllocatedCapacity` (DPUs).

```
---
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
```

## Exemplo de modelo do CloudFormation de um trabalho do AWS Glue para JDBC para o Amazon S3
<a name="sample-cfn-template-job-jdbc"></a>

Um trabalho do AWS Glue no Data Catalog contém os valores de parâmetros que são necessários para executar um script no AWS Glue.

Este exemplo cria um trabalho que lê dados de voo de um banco de dados MySQL do JDBC, conforme definido pela conexão denominada `cfn-connection-mysql-flights-1` e os grava em um arquivo Parquet do Amazon S3. O script que é executado por esse trabalho já deve existir. Você pode gerar um script de ETL para seu ambiente com o console do AWS Glue. Quando esse trabalho é executado, uma função do IAM com as permissões corretas também deve ser fornecida.

Os valores de parâmetro comuns são exibidos no modelo. Por exemplo, o padrão é 5 para `AllocatedCapacity` (DPUs).

```
---
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
```

## Exemplo de modelo do CloudFormation para um acionador sob demanda do AWS Glue
<a name="sample-cfn-template-trigger-ondemand"></a>

Um acionador do AWS Glue no Data Catalog contém os valores de parâmetros que são necessários para iniciar uma execução de trabalho quando esse acionador é disparado. Um acionador sob demanda é acionado quando você o ativa.

Este exemplo cria um acionador sob demanda que inicia um trabalho denominado `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:
```

## Exemplo de modelo do CloudFormation para um acionador programado do AWS Glue
<a name="sample-cfn-template-trigger-scheduled"></a>

Um acionador do AWS Glue no Data Catalog contém os valores de parâmetros que são necessários para iniciar uma execução de trabalho quando esse acionador é disparado. Um acionador programado é acionado quando está habilitado e o temporizador cron é exibido.

Este exemplo cria um acionador programado que inicia um trabalho denominado `cfn-job-S3-to-S3-1`. O temporizador é uma expressão cron para executar o trabalho a cada 10 minutos em dias da 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:
```

## Exemplo de modelo do CloudFormation para um acionador condicional do AWS Glue
<a name="sample-cfn-template-trigger-conditional"></a>

Um acionador do AWS Glue no Data Catalog contém os valores de parâmetros que são necessários para iniciar uma execução de trabalho quando esse acionador é disparado. Um acionador condicional é acionado quando é ativado e suas condições são atendidas, como um trabalho sendo concluído com êxito.

Este exemplo cria um acionador condicional que inicia um trabalho denominado `cfn-job-S3-to-S3-1`. Esse trabalho começa quando o trabalho denominado `cfn-job-S3-to-S3-2 ` é concluído com êxito.

```
---
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
```

## Exemplo de modelo do CloudFormation para um endpoint de desenvolvimento do AWS Glue
<a name="sample-cfn-template-machine-learning-transform"></a>

Uma transformação de machine learning do AWS Glue é uma transformação personalizada para limpar seus dados. No momento, existe uma transformação disponível chamada FindMatches. A transformação FindMatches permite identificar registros duplicados ou correspondentes no seu conjunto de dados, mesmo quando os registros não têm um identificador exclusivo comum e quando não há campos com uma correspondência exata.

Essa amostra cria uma transformação de machine learning. Para obter mais informações sobre os parâmetros necessários para criar uma transformação de machine learning, consulte [Correspondência de registros com o FindMatches do AWS Lake Formation](machine-learning.md).

```
---
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
```

## Exemplo de modelo do CloudFormation para um conjunto de regras do AWS Glue Data Quality
<a name="sample-cfn-template-data-quality-ruleset"></a>

Um conjunto de regras de qualidade de dados do AWS Glue contém regras que podem ser avaliadas em uma tabela no catálogo de dados. Depois que o conjunto de regras é colocado na tabela de destino, você pode acessar o catálogo de dados e executar uma avaliação que executa seus dados de acordo com as regras do conjunto de regras. Essas regras podem variar desde a avaliação do número de linhas até a avaliação da integridade referencial em seus dados.

O exemplo a seguir é um modelo do CloudFormation que cria um conjunto de regras com uma variedade de regras na tabela 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
```

## Modelo da CloudFormation de amostra para um conjunto de regras do AWS Glue Data Quality com o agendador do EventBridge
<a name="sample-cfn-template-data-quality-ruleset-eventbridge"></a>

Um conjunto de regras de qualidade de dados do AWS Glue contém regras que podem ser avaliadas em uma tabela no catálogo de dados. Depois que o conjunto de regras é colocado na tabela de destino, você pode acessar o catálogo de dados e executar uma avaliação que executa seus dados de acordo com as regras do conjunto de regras. Em vez de precisar acessar manualmente o catálogo de dados para avaliar o conjunto de regras, você também pode adicionar um agendador do EventBridge em nosso modelo do CloudFormation para agendar essas avaliações do conjunto de regras para você em um intervalo cronometrado.

O exemplo a seguir é um modelo do CloudFormation que cria um conjunto de regras de qualidade de dados e um agendador do EventBridge para avaliar o conjunto de regras mencionado acima a 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" ] }
        '
```

## Exemplo de modelo do CloudFormation para um endpoint de desenvolvimento do AWS Glue
<a name="sample-cfn-template-devendpoint"></a>

Um endpoint de desenvolvimento do AWS Glue é um ambiente que você pode usar para desenvolver e testar seus scripts do AWS Glue.

Este exemplo cria um endpoint de desenvolvimento com os valores mínimos de parâmetros de rede necessários para criá-lo com êxito. Para obter mais informações sobre os parâmetros necessários para configurar um endpoint de desenvolvimento, consulte [Configurar redes para desenvolvimento para o AWS Glue](start-development-endpoint.md).

Você fornece um ARN (nome do recurso da Amazon) da função do IAM existente para criar o endpoint de desenvolvimento. Forneça uma chave pública RSA válida e mantenha a chave privada correspondente disponível se você planeja criar um servidor de notebook no endpoint de desenvolvimento.

**nota**  
Todo servidor de notebook que criar associado a um endpoint de desenvolvimento será gerenciado por você. Portanto, se você excluir o endpoint de desenvolvimento, deverá excluir a pilha do CloudFormation no console do CloudFormation se quiser excluir o servidor de notebook.

```
---
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
```