Come caricare un file su S3 senza nome
Sto leggendo i dati dal bucket S3 utilizzando Athena e i dati dal seguente file sono corretti.
# aws s3 ls --human s3://some_bucket/email_backup/email1/
2020-08-17 07:00:12 0 Bytes
2020-08-17 07:01:29 5.0 GiB email_logs_old1.csv.gz
Quando cambio il percorso in _updated come mostrato di seguito, ricevo un errore.
# aws s3 ls --human s3://some_bucket/email_backup_updated/email1/
2020-08-22 12:01:36 5.0 GiB email_logs_old1.csv.gz
2020-08-22 11:41:18 5.0 GiB
Ciò è dovuto al file aggiuntivo senza nome nella stessa posizione. Non ho idea di come sono riuscito a caricare un file senza nome. Mi piacerebbe sapere come ripeterlo (così da poterlo evitare)
Risposte
Tutti i file S3 hanno un nome (infatti il percorso completo è in realtà la chiave dell'oggetto, che è i metadati per definire il nome dell'oggetto).
Se vedi un file con nome vuoto nel percorso di s3://some_bucket/email_backup_updated/email1/
, probabilmente hai creato un file denominato s3://some_bucket/email_backup_updated/email1/
.
Come ho accennato in precedenza, gli oggetti S3 utilizzano la chiave, per questo motivo la gerarchia dei file non esiste. Stai semplicemente filtrando per prefisso invece.
Dovresti essere in grado di convalidarlo eseguendo quanto segue senza la barra finale aws s3 ls --human s3://some_bucket/email_backup_updated/email1
.
Se aggiungi uno spazio unificatore extra alla fine del percorso di destinazione, il file verrà copiato in S3 ma con un nome vuoto. per es
aws s3 cp t.txt s3://some_bucket_123/email_backup_updated/email1/
(Nota lo spazio unificatore dopo e-mail1 /)
\ xa0 è effettivamente uno spazio unificatore in Latin1, anche chr (160). Lo spazio unificatore stesso è il nome del file!
Utilizzando la stessa logica, posso rimuovere il file "spazio" aggiungendo lo spazio unificatore alla fine.
aws s3 rm s3://some_bucket_123/email_backup_updated/email1/
Posso anche accedere alla console e rimuoverlo dall'interfaccia utente.