Como transferir dados entre os buckets s3 da conta diferente do aws usando a linha de comando

1

Como transferir dados entre os buckets s3 da conta diferente do aws usando s3cmd?

command will be like this: s3cmd rsync s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive 

Mas como identificar o segundo ambiente de bucket? Qual é a maneira correta de fazer isso?

    
por Ashish Karpe 20.08.2015 / 16:21

3 respostas

3

você simplesmente tem que autorizar seu usuário do IAM a acessar o buvket, dentro da política de bucket do S3, assim:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "whatever",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "<ARN OF YOUR IAM USER>"
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::<YOUR BUCKET NAME>", 
                "arn:aws:s3:::<YOUR BUCKET NAME>/*"
            ]
        }
    ]
}

Então, como é uma conta cruzada, você também precisa permitir que o usuário do IAM faça chamadas S3 anexando uma política ao usuário do IAM, assim:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "whateveryoulike",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::<BUCKET_NAME>",
                "arn:aws:s3:::<BUCKET_NAME>/*"
            ]
        }
    ]
}

basta configurar seu cli e você poderá acessar sua conta cruzada de blocos.

    
por 20.08.2015 / 19:15
3

Você pode usar cliente Minio, também conhecido como mc , seu código-fonte aberto & compatível com o AWS S3.

Instalando o cliente Minio no Linux

$ wget https://dl.minio.io/client/mc/release/linux-amd64/mc
$ chmod 755 mc
$ ./mc --help

Adicionando credenciais do AWS S3

$ ./mc config host add mys3one https://s3.amazonaws.com BKIKJAA5BMMU2RHO6Izz V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

$ ./mc config host add mys3two https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSaa64

Usando o mc mirror para transferir objetos / bucket de uma conta para outra.

$ ./mc mirror mys3one/photos mys3two/photos2

Neste exemplo, a conta s3 com alias "mys3one" com bucketname "photos" está sendo espelhada na conta s3 com alias "mys3two" com bucketname photo2.

Você pode automatizar o mesmo adicionando isso ao cron, então periodicamente sempre que necessário, o conteúdo pode ser sincronizado.

Espero que ajude. Isenção de responsabilidade: Eu trabalho para Minio

    
por 08.03.2016 / 14:43
1

Contas usam credenciais diferentes. Não há como sincronizar de uma conta para outra e fornecer credenciais separadas. A única maneira de fazer isso é permitir o acesso público ao segundo bucket com uma conta temporária.

Se isso não for uma opção, sua melhor aposta é:

s3 sync s3://acct1/bucket . --profile acct1 s3 sync . s3://acct2/bucket --profile acct2

    
por 20.08.2015 / 16:36