View a markdown version of this page

Como usar o Amazon S3 Express One Zone com AWS Glue - AWS Glue

Como usar o Amazon S3 Express One Zone com AWS Glue

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

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

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

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" )