View a markdown version of this page

Uso de Amazon S3 Express One Zone con AWS Glue - AWS Glue

Uso de Amazon S3 Express One Zone con AWS Glue

Con la versión 5.1 y superior de AWS Glue, puede leer y escribir datos en los buckets de directorio Amazon S3 Express One Zone desde los trabajos de ETL. S3 Express One Zone es una clase de almacenamiento de Amazon S3 en zona única de alto rendimiento que ofrece un acceso a los datos constante, con tiempos de respuesta de un solo dígito en milisegundos, para aplicaciones sensibles a la latencia.

Requisitos previos

Antes de utilizar S3 Express One Zone con AWS Glue, debe tener lo siguiente:

  • Un trabajo de AWS Glue que ejecuta la versión 5.1 o superior.

  • Un bucket de directorio de S3 creado en la misma región que su trabajo de AWS Glue. Los buckets de directorio no admiten el acceso entre regiones. Para obtener más información, consulte Creación de buckets de directorio en la Guía del usuario de Amazon S3.

  • El permiso s3express:CreateSession en su rol de IAM. Cuando S3 Express One Zone realiza una acción en un bucket de directorio, llama a CreateSession por usted.

Permisos de IAM

Agregue el siguiente permiso al rol de IAM de su trabajo de AWS Glue para permitir el acceso a los buckets de directorio en 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" } ] }

Sustituya EXAMPLE-BUCKET por el nombre de su bucket de directorio y az-id por el ID de la zona de disponibilidad (por ejemplo, use1-az4).

Lectura y escritura de datos

La versión 5.1 y posterior de AWS Glue admite el acceso a los buckets de directorio de S3 Express One Zone mediante el esquema URI s3:// y s3a://. No se necesita configuración adicional.

El siguiente ejemplo muestra cómo leer y escribir datos de un bucket de directorio de S3 Express One Zone en un trabajo de 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/")

También puede utilizar DynamicFrames con 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" )