Pregunta Cómo cambiar el nombre del nombre AWS S3 Bucket


Después de todos los duros trabajos de migración, etc. Solo tenga en cuenta que si necesita servir el contenido usando CNAME (por ejemplo, media.abc.com). El nombre del depósito debe comenzar con media.abc.com/S3/amazon.com para garantizar que funcione a la perfección.

Solo tenga en cuenta que S3 no permite el cambio de nombre directo desde la consola.

¿Hay alguna forma de evitar esto?


75
2018-01-06 17:30


origen


Respuestas:


Creo que la única manera es crear un nuevo cubo con el nombre correcto y luego copiar todos los objetos del cubo viejo al cubo nuevo. Puedes hacerlo usando Aws CLI.


46
2018-01-06 22:40



Solución

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

Explicación

No hay funcionalidad de cambio de nombre para S3 porque técnicamente no hay carpetas en S3, así que tenemos que manejar cada archivo dentro del contenedor.

El código anterior 1. creará una nueva categoría, 2. copiará los archivos una y 3. eliminará la categoría anterior. Eso es.

Si tiene muchos archivos en su cubo y le preocupan los costos, continúe leyendo. Detrás de escena, lo que sucede es que todos los archivos dentro del cubo se copian primero y luego se eliminan. Debería costar una cantidad insignificante si tiene unos pocos miles de archivos. De lo esta respuesta para ver cómo esto te impactaría.

Ejemplo

En el siguiente ejemplo, creamos y llenamos el antiguo cubo y luego sincronizamos los archivos con el nuevo. Verifique el resultado de los comandos para ver qué hace 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

135
2018-04-07 10:05



Probablemente, una versión posterior de AWS CLI toolkit proporcionó mv opción.

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

Estoy renombrando cubos usando el siguiente comando:

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

2
2018-06-19 12:01