Come rinominare il nome del bucket AWS S3


151

Dopo tutto il duro lavoro di migrazione, ecc. Ti rendi conto che se è necessario pubblicare i contenuti utilizzando CNAME (ad esempio media.abc.com). Il nome del bucket deve iniziare con media.abc.com/S3/amazon.com per garantire il perfetto funzionamento.

Basta capire che S3 non consente la ridenominazione diretta dalla console.

Esistono modi per aggirare questo?

Risposte:


104

Penso che l'unico modo sia quello di creare un nuovo bucket con il nome corretto e quindi copiare tutti i tuoi oggetti dal vecchio bucket al nuovo bucket. Puoi farlo utilizzando l'interfaccia della riga di comando di Aws.


2
ci sono costi per la soluzione di cui sopra @navjot?
Pavitran,

@pavitran no, questa è ancora la strada da percorrere
Tashows,

8
@Tashows pavitran stava chiedendo di chaRges, non di chaNges. Per quanto ne so, ci sono costi per la copia di articoli bucket, credo che 1 GET e 1 PUT operazione per ciascun articolo.
Guiva,

5
@Tashows In realtà c'è una voce per le operazioni COPIA nella tabella dei prezzi per S3 , in realtà è lo stesso costo di fare un PUT (quindi non ci sono costi GET extra).
Guiva,

3
Nota che puoi anche tagliare e incollare utilizzando la console Web, per le persone che non vogliono farlo tramite l'interfaccia della riga di comando.
mahemoff,

243

Soluzione

aws s3 mb s3://[new-bucket]
aws s3 sync s3://[old-bucket] s3://[new-bucket]
aws s3 rb --force s3://[old-bucket]

Spiegazione

Non esiste la funzionalità di ridenominazione del bucket per S3 perché non ci sono tecnicamente cartelle in S3, quindi dobbiamo gestire tutti i file all'interno del bucket.

Il codice sopra 1. crea un nuovo bucket, 2. copia i file e 3. elimina il vecchio bucket. Questo è tutto.

Se hai molti file nel secchio e sei preoccupato per i costi, continua a leggere. Dietro le quinte, ciò che accade è che tutti i file all'interno del bucket vengono prima copiati e quindi eliminati. Dovrebbe costare un importo insignificante se hai qualche migliaio di file. Altrimenti controlla questa risposta per vedere come questo potrebbe avere un impatto su di te.

Esempio

Nel seguente esempio creiamo e popoliamo il vecchio bucket e quindi sincronizziamo i file con quello nuovo. Controlla l'output dei comandi per vedere cosa fa AWS.

> # bucket suffix so we keep it unique
> suffix="ieXiy2"  # used `pwgen -1 -6` to get this
>
> # populate old bucket
> echo "asdf" > asdf.txt
> echo "yxcv" > yxcv.txt
> aws s3 mb s3://old-bucket-$suffix
make_bucket: old-bucket-ieXiy2
> aws s3 cp asdf.txt s3://old-bucket-$suffix/asdf.txt
upload: ./asdf.txt to s3://old-bucket-ieXiy2/asdf.txt
> aws s3 cp yxcv.txt s3://old-bucket-$suffix/yxcv.txt
upload: ./yxcv.txt to s3://old-bucket-ieXiy2/yxcv.txt
>
> # "rename" to new bucket
> aws s3 mb s3://new-bucket-$suffix
make_bucket: new-bucket-ieXiy2
> aws s3 sync s3://old-bucket-$suffix s3://new-bucket-$suffix
copy: s3://old-bucket-ieXiy2/yxcv.txt to s3://new-bucket-ieXiy2/yxcv.txt
copy: s3://old-bucket-ieXiy2/asdf.txt to s3://new-bucket-ieXiy2/asdf.txt
> aws s3 rb --force s3://old-bucket-$suffix
delete: s3://old-bucket-ieXiy2/asdf.txt
delete: s3://old-bucket-ieXiy2/yxcv.txt
remove_bucket: old-bucket-ieXiy2

8
Questa risposta è la stessa della risposta accettata, tranne per il fatto che questa pubblicazione fornisce un esempio passo passo di come farlo. (L'esempio dovrebbe essere abbreviato, però. Non è necessario mostrare la creazione di un vecchio bucket di esempio e l'utilizzo di una variabile di suffisso.) La parte esplicativa di questa risposta non mi soddisfa. Dice che la mancanza di cartelle in S3 è il motivo per cui è necessaria questa procedura scomoda. Poiché la domanda originale non menzionava le cartelle, non capisco come ciò spieghi l'incapacità di rinominare i bucket S3.
LS

2
Ho provato questo metodo ... sembrava funzionare ... tuttavia per qualche strana ragione non riesco a visualizzare nessuno degli elementi (immagini). Posso navigare attraverso il browser attraverso gli elementi sulla dashboard di s3 ... ma non posso visualizzarli tramite un URL o scaricarli. Qualche idea sul perché? Le autorizzazioni sembrano essere identiche. Ci sono alcune autorizzazioni speciali da cercare?
bmiskie,

1
@duality_ puoi aggiungere nella tua notifica di risposta sulle autorizzazioni e con cui puoi copiare i file --acl bucket-owner-full-control(come in quella risposta )
Евгений Масленков

1
Si noti che è necessario specificare anche la regione, altrimenti i nuovi secchi saranno negli Stati Uniti orientali (Virginia settentrionale). Ad esempio aws --region ap-southeast-2 s3 mb s3://new-bucket
cobberboy,

1
Se hai il controllo delle versioni, dovrai usare la gestione del ciclo di vita per far scadere le versioni ... apparentemente: docs.aws.amazon.com/AmazonS3/latest/dev/…
carlin.scott

38

Probabilmente una versione successiva del toolkit della CLI AWS ha fornito l' mvopzione.

$ aws --version
aws-cli/1.15.30 Python/3.6.5 Darwin/17.6.0 botocore/1.10.30

Sto rinominando i bucket usando il seguente comando:

aws s3 mv s3://old-bucket s3://new-bucket --recursive

9
Questo ha funzionato per me. Tuttavia, è importante notare che new-bucketdeve essere creato prima di eseguire il comando. Inoltre, old-bucketsarà quindi vuoto ma NON eliminato. Se si desidera eliminarlo dopo il trasferimento di tutti i file, utilizzare il seguente comando (senza parentesi angolari):aws s3api delete-bucket --bucket <old-bucket> --region <region id>
Mabyn

Se il vecchio bucket viene utilizzato ovunque, è ovviamente buona norma copiare il bucket, testare con la nuova destinazione e solo allora eliminare il vecchio bucket. aws s3 mvin realtà copia ed elimina, quindi i costi finanziari dovrebbero essere gli stessi (penso).
Flimm,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.