Загрузка в личное хранилище S3 из приложения SpringBoot

#java #spring-boot #amazon-s3 #amazon-s3-bucket

Вопрос:

Каков хороший способ разрешить доступ к корзине только определенному веб-приложению? Мне нужно, чтобы приложение могло получать доступ к ним по URL-адресу, но я не хочу, чтобы кто-либо, не использующий его, мог использовать URL-адрес объекта корзины для просмотра его в браузере.

Я попробовал другую политику корзины, которая разрешала бы только определенные ip-адреса, но я не смог правильно отформатировать ее.

В настоящее время в разделе «Блокировать публичный доступ (настройки корзины)» ничего не заблокировано.

Политика Ведра:

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

Политика CORS

 [  {  "AllowedHeaders": [  "*"  ],  "AllowedMethods": [  "PUT",  "POST",  "DELETE"  ],  "AllowedOrigins": [  "http://www.example1.com"  ],  "ExposeHeaders": []  },  {  "AllowedHeaders": [],  "AllowedMethods": [  "GET"  ],  "AllowedOrigins": [  "*"  ],  "ExposeHeaders": []  } ]  

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

1. Итак, чего именно вы хотите достичь ?

2. Мое приложение SpringApp использует методы Put, Get и Delete для загрузки, загрузки и получения файлов из корзины s3, поэтому мне нужен этот доступ. А затем в интерфейсе я использую wavesurfer.js чтобы прочитать URL-адрес файла из скрытого текстового поля на странице jsp. Это скрытое значение URL-адреса видно из окна проверки браузера, поэтому мне нужно, чтобы приложение могло его прочитать, но также отказывало в доступе любому, кто пытается получить доступ к URL-адресу непосредственно в браузере.