Невозможно использовать синхронизацию для перемещения объектов в папке в другую папку в том же сегменте с помощью s3cmd
Я пытался переместить все объекты в папке bucketA/product/pic/
до одного уровня в том же ведре bucketA/pic/
Я могу синхронизировать файлы между локальным хостом и сервером s3 с
s3cmd sync /script/ s3://bucketA/
а также поставить объект:
s3cmd put zip.sh s3://bucketA/
Но я получаю Access Denied
ошибка при синхронизации файлов внутри одного сегмента:
[root]s3cmd sync s3://bucketA/product/pic s3://bucketA/pic/
WARNING: Empty object name on S3 found, ignoring.
Summary: 441 source files to copy, 0 files at destination to delete
ERROR: S3 error: Access Denied
Можно ли изменить расположение объектов в папке в пределах одной корзины?
Вот моя политика IAM:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt123456",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "Stmt123457",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::bucketA",
"arn:aws:s3:::bucketA/*"
]
}
]
}
Вот моя политика, которая предотвращает хотлинкинг:
{
"Version": "2012-10-17",
"Id": "HTTP referrer policy",
"Statement": [
{
"Sid": "Allow in my domains",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketA/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"https://mylocalhostip/*",
"http://mylocalhostip/*"
]
}
}
},
{
"Sid": "Deny access if referer is not my sites",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketA/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://mylocalhostip/*",
"https://mylocalhostip/*"
]
}
}
}
]
}
1 ответ
Решение
В настоящее время рекомендуется использовать интерфейс командной строки AWS (CLI).
CLI AWS включает в себя sync
команда. См.: https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html