Как перенести данные между корзинами s3 другой учетной записи aws с помощью командной строки

Как перенести данные между сегментами s3 разных аккаунтов aws с помощью s3cmd?

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

Но тогда как он будет идентифицировать второе ведро среды? Как правильно это сделать?

3 ответа

Решение

Вам просто нужно авторизовать вашего пользователя IAM для доступа к buvket в рамках политики S3, например:

{
    "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>/*"
            ]
        }
    ]
}

Затем, поскольку это кросс-аккаунт, вы также должны разрешить своему пользователю IAM выполнять вызовы S3, прикрепив политику к своему пользователю IAM, например, так:

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

просто настройте ваш cli, и вы сможете получить доступ к своему кросс-аккаунту.

Вы можете использовать клиент Minio, также известный как mc, с открытым исходным кодом и совместимый с AWS S3.

Установка клиента Minio в Linux

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

Добавление учетных данных AWS S3

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

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

Использование mc mirror для переноса объекта / корзины из одной учетной записи в другую.

$ ./mc mirror mys3one/photos mys3two/photos2

В этом примере учетная запись s3 с псевдонимом "mys3one" с именем корзины "photos" зеркально отображается на учетную запись s3 с псевдонимом "mys3two" с именем bucket photo2.

Вы можете автоматизировать то же самое, добавив это в cron, поэтому периодически при необходимости можно синхронизировать контент.

Надеюсь, поможет. Отказ от ответственности: я работаю на Minio

Учетные записи используют разные учетные данные. Нет возможности синхронизировать данные из одной учетной записи в другую и предоставлять отдельные учетные данные. Единственный способ сделать это - предоставить общий доступ ко второму сегменту с временной учетной записью.

Если это не вариант, то лучше всего:

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

Другие вопросы по тегам