Не удается скопировать файлы на s3 и с сервера vpc: «Не удается найти учетные данные»

#amazon-web-services #amazon-s3 #amazon-ec2

#amazon-web-services #amazon-s3 #amazon-ec2

Вопрос:

Я хотел бы копировать файлы в / из корзины s3 с серверов на моем vpc без необходимости добавлять учетные данные на каждый сервер в моем облаке.

Я следовал инструкциям на https://aws.amazon.com/premiumsupport/knowledge-center/s3-private-connection-no-authentication / чтобы настроить политику для вновь созданной конечной точки VPC. Насколько я могу судить, я все сделал правильно и добавил хорошую политику корзины в свою корзину. Я дважды проверил настройки таблицы маршрутизации. Все выглядит хорошо.

Но, возможно, я не понимаю, что это должно делать. Когда я набираю:

aws s3 cp s3://My_Bucket_Name/some.pdf .

Я просто получаю:

fatal error: Unable to locate credentials

с моего сервера в vpc.

Вот политика анонимной корзины, которая у меня есть:

 {
    "Version": "2012-10-17",
    "Id": "Policy232323232323",
    "Statement": [
        {
            "Sid": "Stmt1607462615603",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1234567789:root"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::MyBucket/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpce": "vpce-123456c789"
                }
            }
        }
    ]
}
 

Ответ №1:

Попробуйте добавить: --no-sign-request

Из параметров командной строки — Интерфейс командной строки AWS:

Логический переключатель, который отключает подписание HTTP-запросов к конечной точке службы AWS. Это предотвращает загрузку учетных данных.

Комментарии:

1. Спасибо! Похоже, это сработало. Хотя сейчас я получаю fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden Политика корзины выглядит для меня правильной. Я трижды проверил это.

2. Хорошо, все ближе. Я изменил значение для участника на «*», как в примере на amazon, вместо использования генератора политик. Теперь я могу загружать, но при загрузке мне отказывают в доступе: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied странно, потому что это определенно в моей политике.

3. Какие команды вы отправляете с помощью putObject? Вы устанавливаете ACL? Если это так, это может привести к конфликту с настройками S3 Block Public Access.

4. Хороший вариант. Вы знаете, полезно ли это только для анонимного доступа к S3 с помощью CLI?

5. @JohnRotenstein, я понял это. Мне пришлось снять флажок «Блокировать общедоступный доступ к корзинам и объектам, предоставленным через новые списки управления доступом (ACL)».