aws s3api put-bucket-website - операция PutBucketWebsite: доступ запрещен - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь использовать эту команду для установки хостинга веб-сайта stati c:

aws s3api put-bucket-website --bucket XXXX - файл веб-конфигурации: //assets/website.json

веб-сайт. json

{
    "IndexDocument": {
        "Suffix": "index.html"
    },
    "ErrorDocument": {
        "Key": "index.html"
    }
}

политика корзины

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::XXXX/*"
        }
    ]
}

Я получаю сообщение об ошибке:

Произошла ошибка (AccessDenied) при вызове операции PutBucketWebsite: доступ запрещен

Что я должен изменить в политика ведра?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Для этой операции PUT требуется разрешение S3: PutBucketWebsite :

Политика добавления корзины:

    aws s3api put-bucket-policy \
        --bucket XXXX \
        --policy file://s3-bucket-policy.json

s3-bucket -policy. json:

{
    "Version": "2008-10-17",
    "Statement": [
         {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::XXXX/*"
         },
         {
            "Effect": "Allow",
            "Principal": {
               "AWS": "*"
            },
            "Action": [
               "S3:PutBucketWebsite"
            ],
            "Resource": "arn:aws:s3:::XXXX"
         }
    ]
}

Настройка хостинга веб-сайтов c

aws s3api put-bucket-website \
    --bucket XXXX \
    --website-configuration file://website.json

веб-сайта. json

{
    "IndexDocument": {
        "Suffix": "index.html"
    },
    "ErrorDocument": {
        "Key": "index.html"
    }
}
0 голосов
/ 10 марта 2020

Ваша политика корзины позволяет вам только выполнять операцию GET, но вы хотите выполнить операцию PUT.

Похоже, ваш IAM имеет права администратора и полный доступ S3, как вы упомянули, но вы этого не делаете иметь доступ на уровне корзины для этого специфицированного c сегмента.

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject
            ],
            "Resource": "arn:aws:s3:::XXXX/*"
        },
        {
             "Sid": "AllowPutBucket",
             "Effect": "Allow",
             "Action": [
                 "s3:*"
             ],
              "Resource": [
                 "arn:aws:s3:::bucketname",
                  "arn:aws:s3:::bucketname/*"
              ]
        }
    ]
}
...