

# Como usar o Amazon S3 Express One Zone com AWS Glue
<a name="aws-glue-programming-etl-s3-express"></a>

Com o AWS Glue versão 5.1 e superior, você pode ler e gravar dados nos buckets de diretório do [Amazon S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-high-performance.html#s3-express-one-zone) a partir de suas tarefas de ETL. O S3 Express One Zone é uma classe de armazenamento de zona única e alta performance do Amazon S3 que oferece acesso consistente a dados de milissegundos de um dígito para aplicações sensíveis à latência.

## Pré-requisitos
<a name="aws-glue-programming-etl-s3-express-prereqs"></a>

Antes de usar o S3 Express One Zone com o AWS Glue, você deve ter os seguintes itens:
+ Uma tarefa AWS Glue executando a versão 5.1 ou posterior.
+ Um bucket do diretório S3 criado na mesma região como sua tarefa AWS Glue. Os buckets de diretório não oferecem suporte ao acesso entre regiões. Para obter mais informações, consulte [Como criar buckets de diretório](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-create.html) no *Guia do usuário do Amazon S3*.
+ A permissão `s3express:CreateSession` do seu perfil do IAM. Quando o S3 Express One Zone executa uma ação em um bucket de diretório, ele chama `CreateSession` por você.

## Permissões do IAM
<a name="aws-glue-programming-etl-s3-express-iam"></a>

Adicione a seguinte permissão ao perfil do IAM da sua tarefa AWS Glue para permitir o acesso aos buckets de diretório do S3 Express One Zone:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3express:CreateSession",
            "Resource": "arn:aws:s3express:*:*:bucket/{{EXAMPLE-BUCKET}}--{{az-id}}--x-s3"
        }
    ]
}
```

Substitua {{EXAMPLE-BUCKET}} pelo nome do bucket do seu diretório e {{az-id}} pelo ID da zona de disponibilidade (por exemplo, `use1-az4`).

## Leitura e gravação de dados
<a name="aws-glue-programming-etl-s3-express-usage"></a>

O AWS Glue versão 5.1\+ suporta o acesso a buckets de diretório S3 Express One Zone usando os esquemas URI `s3://` e `s3a://`. Não é exigida nenhuma configuração adicional.

O exemplo a seguir mostra como ler e gravar dados de um bucket de diretório do S3 Express One Zone em uma tarefa AWS Glue ETL:

```
import sys
from pyspark.context import SparkContext
from awsglue.context import GlueContext

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# S3 Express One Zone directory bucket path
express_path = "s3://EXAMPLE-BUCKET--use1-az4--x-s3/my-data/"

# Read data from S3 Express One Zone
df = spark.read.parquet(express_path)

# Write data to S3 Express One Zone
df.write.mode("overwrite").parquet(express_path + "output/")
```

Você também pode usar DynamicFrames com o S3 Express One Zone:

```
# Read with DynamicFrame
dynamicFrame = glueContext.create_dynamic_frame.from_options(
    connection_type="s3",
    connection_options={"paths": [express_path]},
    format="parquet"
)

# Write with DynamicFrame
glueContext.write_dynamic_frame.from_options(
    frame=dynamicFrame,
    connection_type="s3",
    connection_options={"path": express_path + "output/"},
    format="parquet"
)
```