Как передать данные между ведрами s3 разных учетных записей aws с помощью s3cmd?
command will be like this: s3cmd rsync s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive
Но как тогда он определит среду второго ведра? Как правильно это делать?
Ты можешь использовать Клиент Minio aka 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» с именем сегмента «photo2».
Вы можете автоматизировать то же самое, добавив это в cron, чтобы периодически, когда необходимо, контент можно было синхронизировать.
Надеюсь, поможет. Отказ от ответственности: я работаю на Минио
вам просто нужно авторизовать своего пользователя 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>/*"
]
}
]
}
просто настройте свой клиентский интерфейс, и вы сможете получить доступ к своей кросс-учетной записи.
Учетные записи используют разные учетные данные. Невозможно синхронизировать одну учетную запись с другой и предоставить отдельные учетные данные. Единственный способ сделать это - разрешить публичный доступ ко второй корзине с временной учетной записью.
Если это не вариант, лучше всего:
s3 sync s3://acct1/bucket . --profile acct1
s3 sync . s3://acct2/bucket --profile acct2