Pregunta bastante básica, pero no he podido encontrar una respuesta. Con Transit puedo "mover" archivos de un bucket de S3 en una cuenta de AWS a otro bucket de S3 en otra cuenta de AWS, pero lo que realmente hace es descargar los archivos del primero y luego subirlos al segundo.
¿Hay alguna forma de mover archivos directamente de una cuenta S3 a otra sin descargarlos en el medio?
Sí, hay una manera. Y es bastante simple, aunque es difícil encontrarlo. 8)
Por ejemplo, suponga que el primer nombre de usuario de su cuenta es [email protected] y el segundo es [email protected].
Abra la Consola de administración de AWS como acc1. Vaya a las propiedades del bucket de Amazon S3 y, en la pestaña "Permisos", haga clic en "Agregar más permisos". A continuación, agregue permisos de visualización y lista para "usuarios autenticados".
A continuación, en AWS IAM (se puede acceder desde entre las pestañas de la consola) de acc2, cree un usuario con acceso completo al bucket de S3 (para estar más seguro, puede configurar permisos exactos, pero prefiero crear un usuario temporal para la transferencia y luego eliminarlo).
Luego puede usar s3cmd (usando las credenciales del usuario recién creado en acc2) para hacer algo como:
Toda la transferencia se realizará por parte de Amazon.
fuente
rsync
, puede usars3cmd sync s3://acc1_bucket s3://acc2_bucket
.s3cmd
también se puede instalar con homebrew, fyi--acl-public
contrario, todos los archivos son privados (al menos lo era para mí cuando ejecuté el comando). con tantos archivos privados, tuve que agregar una política en el depósito para hacerlos públicos nuevamenteUse aws cli (utilicé la instancia de ubuntu 14 ec2) y simplemente ejecute el siguiente comando:
Deberá especificar los detalles de la cuenta para uno y tener acceso público de escritura o acceso público de lectura al otro.
Esto sincronizará los dos depósitos. Puede usar el mismo comando nuevamente más tarde para sincronizar rápidamente. La mejor parte es que no parece requerir ningún ancho de banda (por ejemplo, los archivos no pasan por la computadora local).
fuente
aws s3 sync
parece correr un orden de magnitud más rápido ques3cmd cp
.--grants
opción. Más información en la documentación: docs.aws.amazon.com/cli/latest/reference/s3/sync.html--grants
. Aprendí esto después de copiar una tonelada de datos y luego tuve que rehacer la sincronización en un nuevo depósito.--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
establece permisos de lectura para usuarios públicos.s3cmd
para mí, y también puede sincronizar archivos de cambio en lugar de volver a copiar todo si necesita volver a ejecutar el comando en el futuro, ¡mucho mejor!boto funciona bien. Vea este hilo . Con boto, copia objetos directamente de un depósito a otro, en lugar de descargarlos a la máquina local y subirlos a otro depósito.
fuente
En Mac OS X, usé la aplicación Transmit de Panic. Abrí una ventana para cada cuenta S3 (usando las claves y secretos API). Entonces podría arrastrar de un cubo en una ventana a otro cubo en la otra ventana.
No es necesario descargar archivos localmente primero.Andrew tiene razón, Transmit descarga los archivos localmente y luego carga los archivos.
fuente
Mover archivos S3 de una cuenta a otra cuenta
Consideremos que hay dos cuentas, cuenta de origen y cuenta de destino. Y dos cubos
source-bucket
ydestination bucket
. Queremos mover todos los archivos desource-bucket
adestination-bucket
. Podemos hacerlo siguiendo los siguientes pasos:aws configure
aws s3 ls s3://source-bucket/
aws s3 cp s3://source-bucket s3://destination-bucket --recursive
aws s3 mv s3://source-bucket s3://destination-bucket --recursive
Alternativamente, puede usar el comando de sincronización:
aws s3 sync s3://source-bucket s3://detination-bucket
Para una mejor explicación, siga el enlace
fuente
CrossFTP puede copiar archivos S3 directamente de un depósito a otro sin descargarlos. Es un cliente GUI S3 que funciona en Windows, Mac y Linux.
fuente
Puede utilizar Cyberduck (código abierto)
fuente
Para archivos recién creados (NO objetos existentes), puede aprovechar la nueva funcionalidad de AWS. Es la replicación entre regiones (en "Control de versiones" para el bucket de S3). Puede crear una política que le permitirá replicar nuevos objetos en un depósito en una cuenta diferente.
En el caso de los objetos existentes, deberá copiar sus objetos con otro método, a menos que AWS introduzca una funcionalidad nativa para esto en el futuro.
fuente
Uno puede hacerlo ejecutando lo siguiente:
aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive
Adjunte una política de depósito al depósito de origen en Cuenta de origen.
Adjunte una política de AWS Identity and Access Management (IAM) a un usuario o rol en la cuenta de destino.
Utilice el usuario o la función de IAM en la cuenta de destino para realizar el movimiento entre cuentas.
fuente