Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

234
Views
¿Diferente comportamiento de S3 usando diferentes puntos finales?

Actualmente estoy escribiendo código para usar la API REST S3 de Amazon y noto un comportamiento diferente donde la única diferencia parece ser el URI del punto final de Amazon que uso, por ejemplo, https://s3.amazonaws.com vs. https://s3-us-west-2.amazonaws.com .

Ejemplos de diferentes comportamientos para la llamada GET Bucket (List Objects):

  • Usando un punto final, incluye la "carpeta" en los resultados, por ejemplo:

     /path/subfolder/ /path/subfolder/file1.txt /path/subfolder/file2.txt

    y, utilizando el otro extremo, no incluye la "carpeta" en los resultados:

     /path/subfolder/file1.txt /path/subfolder/file2.txt
  • Usando un punto final, representa "carpetas" usando un final / como se muestra arriba y, usando el otro punto final, usa un final _$folder$ :

     /path/subfolder_$folder$ /path/subfolder/file1.txt /path/subfolder/file2.txt

¿Por qué las diferencias? ¿Cómo puedo hacer que devuelva resultados de manera consistente, independientemente del punto final?

Tenga en cuenta que obtengo estos mismos resultados extraños incluso si uso el propio cliente AWS S3 de línea de comandos de Amazon, por lo que no es mi código.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Y el contenido de los cubos debería ser irrelevante de todos modos.

A pesar de su afirmación, su problema es exactamente sobre el contenido de los cubos, y no algo que S3 esté haciendo: la API de S3 no tiene concepto de carpetas. Ninguna. La consola S3 puede mostrar carpetas, pero esto es por conveniencia, las carpetas no están realmente allí, o si hay entidades similares a carpetas, son irrelevantes y no son necesarias.

En Amazon S3, los depósitos y los objetos son los recursos principales, donde los objetos se almacenan en depósitos. Amazon S3 tiene una estructura plana sin jerarquía como la que vería en un sistema de archivos típico. Sin embargo, en aras de la simplicidad organizativa, la consola de Amazon S3 admite el concepto de carpeta como medio para agrupar objetos. Amazon S3 hace esto mediante el uso de prefijos de nombres clave para objetos.

http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html

Entonces, ¿por qué estás viendo esto?

O ha estado usando EMR/Hadoop, o algún otro código escrito por alguien que tomó un mal ejemplo y lo ejecutó... o está haciendo algo diferente de lo que debería haberse hecho durante bastante tiempo.

Amazon EMR es un servicio web que utiliza un marco Hadoop administrado para procesar, distribuir e interactuar con datos en almacenes de datos de AWS, incluido Amazon S3. Dado que S3 utiliza un sistema de almacenamiento de pares clave-valor, el sistema de archivos de Hadoop implementa la compatibilidad con directorios en S3 mediante la creación de archivos vacíos con el sufijo <directoryname>_$folder$ .

https://aws.amazon.com/premiumsupport/knowledge-center/emr-s3-empty-files/

Esto puede haber sido algo que hizo la consola S3 hace muchos años, y aparentemente (dado que no informa haberlos visto en la consola) todavía admite la visualización de objetos como carpetas en la consola... pero la consola S3 ya no los crea. de esta manera, si alguna vez lo hizo.

Reflejé exactamente el diseño de la "carpeta" del depósito.

Si crea una carpeta en la consola, se crea un objeto vacío con la clave "nombre de carpeta/". Esto, a su vez, se usa para mostrar una carpeta a la que puede navegar y cargar objetos con claves que comienzan con ese nombre de carpeta como prefijo.

La consola de Amazon S3 trata todos los objetos que tienen un carácter de barra inclinada "/" como el último carácter (posterior) en el nombre de la clave como una carpeta.

http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html

Si solo crea objetos usando la API, entonces "mi/objeto.txt" aparece en la consola como "objeto.txt" dentro de la carpeta "mi" aunque no haya ningún objeto "mi/" creado... así que si los objetos se crean con la API, no verá ningún estilo de "carpeta" en la lista de objetos.

over 4 years ago · Santiago Trujillo Report

0

Probablemente sea un error en el punto final de la API que incluye la "carpeta": S3 internamente no tiene una estructura de carpetas, sino que es solo un conjunto de claves asociadas con archivos, donde las claves (por conveniencia) pueden contener barras separadas. rutas que luego aparecen como "carpetas" en la interfaz web. Existe la opción en la API para especificar un prefijo , que creo que puede ser cualquier parte de la clave hasta incluir parte del nombre del archivo.

over 4 years ago · Santiago Trujillo Report

0

El cliente s3 de EMR no es el de Apache, por lo que no puedo hablar con precisión al respecto.

En versiones de ASF hadoop (y HDP, CDH)

  1. El antiguo cliente s3n:// utiliza $folder$ como delimitador de carpeta.
  2. El cliente s3a:// más nuevo usa / como su marcador de carpeta, pero manejará $carpeta$ si existe. Al menos solía hacerlo; No puedo ver en qué parte del código lo hace ahora.

Los clientes de S3A eliminan todos los marcadores de carpeta cuando enumera cosas; S3A los usa para simular directorios vacíos y elimina todos los marcadores principales cuando crea entradas de archivos/directorios secundarios.

Independientemente de lo que tenga, los procesos GET deben ignorar las entradas con "/" o $folder al final.

En cuanto a por qué son diferentes, el EMRFS local es una ruta de código diferente, que usa dínamo para implementar consistencia. Supongo que no necesita simular directorios vacíos, ya que las tablas DDB alojarán todas las entradas del directorio.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!