Я не совсем уверен, что понимаю, что вы имеете в виду, когда понимаете, что он находится в той же папке, что и ваше приложение, но вот мой подход к чтению / записи файла S3 из веб-приложения на основе PHP:
1) Создайте новый контейнер для вашего приложения. Это ведро может быть отделено от ведра, которое управляет вашим проектом Elastic Beanstalk.
2) В вашей корзине перейдите в раздел permissions-> bucket policy и добавьте эту политику, чтобы сделать ваши изображения общедоступными. Важное замечание: Замените BUCKET_NAME на фактическое имя вашего сегмента
{
"Id": "Policy1397632521960",
"Statement": [
{
"Sid": "Stmt1397633323327",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::BUCKET_NAME/*",
"Principal": {
"AWS": [
"*"
]
}
}
]
}
Источник
3) Создайте файл composer.json с помощью Amazon SDK и замените его любой версией. Поместите composer.json в корень папки вашего проекта. (Когда вы загружаете свой код проекта, Elastic Beanstalk делает свое волшебство за вас и устанавливает все пакеты композитора).
{
"require": {
"aws/aws-sdk-php": "3.27.1",
}
}
4) Включите это в начало файла PHP, который обрабатывает загрузку файла.
require __DIR__ . '/vendor/autoload.php';
use Aws\S3\S3Client;
5) Создайте объект S3Client с помощью AWS PHP SDK. Замените YOUR_KEY, YOUR_SECRET и YOUR_BUCKET_REGION на правильные значения. Снова добавьте это в тот же файл.
$client = S3Client::factory(
[
'credentials' =>
[
'key' => 'YOUR_KEY',
'secret' => 'YOUR_SECRET'
],
'region' => 'YOUR_BUCKET_REGION',
'version' => 'latest'
]
);
6) Теперь, наконец, после всей этой забавной настройки, вот как вы можете поместить объект изображения в S3, когда пользователь загружает файл. Замените BUCKET_NAME точным именем вашего сегмента, FILE_NAME.JPG - именем файла назначения на S3, а PATH / TO / TEMP_FILE.JPG - временным путем, в котором изображение хранится на вашем сервере Elastic Beanstalk.
$client->putObject([
'Bucket' => 'BUCKET_NAME',
'Key' => 'FILE_NAME.JPG',
'Body' => fopen('PATH/TO/TEMP_FILE.JPG', 'rb'),
'ACL' => 'public-read'
]);
7) Хорошо, так что обрабатывает запись в файл. Теперь, когда вы хотите показать пользователю загруженный файл, вы можете сделать это с помощью обычного тега. Снова, заменяя все заглавные поля их правильными значениями:
<img src="https://s3-YOUR_BUCKET_REGION.amazonaws.com/BUCKET_NAME/FILE_NAME.JPG" alt="My S3 image">
8) Теперь у вас должно быть веб-приложение с возможностью записи / чтения изображений в Amazon S3.