tutorial subir route pagina ec2 dominio domain custom crear configurar cloudfront aws amazon-web-services amazon-s3 cname

amazon-web-services - subir - s3 static website



Cómo cambiar el nombre de AWS S3 Bucket name (3)

Después de todos los trabajos difíciles de la migración, etc. Solo tenga en cuenta que si es necesario servir el contenido utilizando CNAME (por ejemplo, media.abc.com). El nombre del depósito debe comenzar con media.abc.com/S3/amazon.com para garantizar que funcione perfectamente.

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

¿Hay alguna forma de evitar esto?


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, por lo que tenemos que manejar todos los archivos dentro del depósito.

El código anterior 1. creará un nuevo depósito, 2. copiará los archivos y 3. eliminará el depósito anterior. Eso es.

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

Ejemplo

En el siguiente ejemplo, creamos y rellenamos el cubo antiguo y luego sincronizamos los archivos con el nuevo. Verifique la salida 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


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


Probablemente una versión posterior del kit de herramientas de AWS CLI proporcionó la opción mv .

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

Estoy cambiando el nombre de los cubos con el siguiente comando:

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