AWS EC2 - используйте роль IAM для обслуживания сайта c, размещенного на S3 - PullRequest
0 голосов
/ 18 февраля 2020

Я размещаю простой веб-сайт stati c на корзине Amazon S3, и моя проблема c заключается в следующем: мне нужно обслуживать этот сайт через экземпляр EC2.

Все документы в моем S3 не являются общедоступный.

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

Я установил обратный прокси NGINX на своем экземпляре EC2 (который работает с предыдущей ролью IAM), который перенаправляет запросы на этот сервер в мое хранилище S3. Однако я получаю сообщение об ошибке 403. (Несанкционировано).

Вот мой nginx файл конфигурации:

server {
        listen 80 default_server;
        location / {

                proxy_http_version     1.1;
                proxy_set_header       Authorization '';
                proxy_set_header       Host my-bucket.s3-website.eu-west-3.amazonaws.com;
                proxy_hide_header      x-amz-id-2;
                proxy_hide_header      x-amz-request-id;
                proxy_hide_header      x-amz-meta-server-side-encryption;
                proxy_hide_header      x-amz-server-side-encryption;
                proxy_hide_header      Set-Cookie;
                proxy_ignore_headers   Set-Cookie;
                proxy_intercept_errors on;                                                                                                                                                                   
                add_header             Cache-Control max-age=31536000;
                proxy_pass             http://my-bucket.s3-website.eu-west-3.amazonaws.com/;
        }
}

Я предполагаю, что мой прокси-сервер не использует мою роль IAM EC2 для создания запрос.

Как мне этого добиться (сделать запрос на мой S3, используя мою роль IAM)? Нужно ли настраивать политику S3, чтобы мой обратный прокси-сервер работал?

Спасибо за ваши ответы!

1 Ответ

0 голосов
/ 18 февраля 2020

Вы можете использовать HTTP-аутентификацию на основе заголовка для доступа к объекту S3:

Authorization: AWS AWSAccessKeyId:Signature

и для получения подписи вы можете прочитать здесь:

https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...