Невозможно использовать синхронизацию для перемещения объектов в папке в другую папку в том же сегменте с помощью 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

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