Uma pergunta bastante básica, mas não consegui encontrar uma resposta. Usando o Transit, posso "mover" arquivos de um bucket S3 em uma conta AWS para outro bucket S3 em outra conta AWS, mas o que ele realmente faz é baixar os arquivos do primeiro e depois carregá-los para o segundo.
Existe uma maneira de mover arquivos diretamente de uma conta S3 para outra sem baixá-los no meio?
Sim, há um jeito. E é muito simples, embora seja difícil de encontrar. 8)
Por exemplo, suponha que o seu primeiro nome de usuário da conta seja [email protected] e o segundo seja [email protected].
Abra o AWS Management Console como acc1. Acesse as propriedades do bucket do Amazon S3 e, na guia "Permissões", clique em "Adicionar mais permissões". Em seguida, adicione Permissões de Lista e Visualização para "Usuários Autenticados".
Em seguida, no AWS IAM (é acessível a partir das guias do console) de acc2, crie um usuário com acesso total ao bucket S3 (para ser mais seguro, você pode configurar as permissões exatas, mas eu prefiro criar um usuário temporário para a transferência e excluí-lo).
Em seguida, você pode usar s3cmd (usando as credenciais do usuário recém-criado em acc2) para fazer algo como:
Todas as transferências serão feitas do lado da Amazon.
fonte
rsync
, você pode usars3cmd sync s3://acc1_bucket s3://acc2_bucket
.s3cmd
também pode ser instalado com homebrew, fyi--acl-public
outra forma, todos os arquivos são privados (pelo menos era para mim quando executei o comando). com tantos arquivos privados, tive que adicionar uma política no intervalo para torná-los públicos novamenteUse o aws cli (usei uma instância do ubuntu 14 ec2) e execute o seguinte comando:
Você precisará especificar os detalhes da conta para um e ter acesso público de gravação ou acesso público de leitura ao outro.
Isso sincronizará os dois depósitos. Você pode usar o mesmo comando novamente mais tarde para sincronizar rapidamente. A melhor parte é que não parece exigir nenhuma largura de banda (por exemplo, os arquivos não estão passando pelo computador local).
fonte
aws s3 sync
parece correr cerca de uma ordem de magnitude mais rápido do ques3cmd cp
.--grants
opção. Mais informações na documentação: docs.aws.amazon.com/cli/latest/reference/s3/sync.html--grants
. Aprendi isso depois de copiar uma tonelada de dados e então tive que refazer a sincronização para um novo intervalo.--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
define permissão de leitura para usuários públicos.s3cmd
para mim e também é capaz de sincronizar arquivos de alteração em vez de copiar tudo novamente se você precisar executar o comando novamente no futuro - muito melhor!boto funciona bem. Veja este tópico . Usando o boto, você copia objetos direto de um depósito para outro, em vez de baixá-los para a máquina local e carregá-los para outro depósito.
fonte
No Mac OS XI usei o aplicativo Transmit do Panic. Abri uma janela para cada conta S3 (usando as chaves de API e segredos). Eu poderia então arrastar de um balde em uma janela para outro balde na outra janela.
Não há necessidade de baixar arquivos localmente primeiro.Andrew está correto, Transmit baixa os arquivos localmente e depois carrega os arquivos.
fonte
Mover arquivos S3 de uma conta para outra conta
Vamos considerar que há duas contas: conta de origem e conta de destino. E dois baldes
source-bucket
edestination bucket
. Queremos mover todos os arquivos desource-bucket
paradestination-bucket
. Podemos fazer isso pelas seguintes etapas: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, você pode usar o comando sync -
aws s3 sync s3://source-bucket s3://detination-bucket
Para uma melhor explicação siga o link
fonte
O CrossFTP pode copiar arquivos S3 diretamente de um depósito para outro, sem baixá-los. É um cliente GUI S3 que funciona em Windows, Mac e Linux.
fonte
Você pode usar o Cyberduck (código aberto)
fonte
Para arquivos recém-criados (objetos NÃO existentes), você pode aproveitar as vantagens da nova funcionalidade da AWS. É Replicação entre regiões (em "Controle de versão" para o bucket S3). Você pode criar uma política que permitirá replicar novos objetos para um intervalo em uma conta diferente.
Para objetos existentes, você ainda precisará copiar seus objetos usando outro método - a menos que a AWS introduza funcionalidade nativa para isso no futuro.
fonte
Pode-se fazê-lo executando o seguinte:
aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive
Anexe uma política de intervalo ao intervalo de origem na conta de origem.
Anexe uma política AWS Identity and Access Management (IAM) a um usuário ou função na conta de destino.
Use o usuário ou função IAM na conta de destino para realizar a movimentação entre contas.
fonte