#php #laravel #amazon-elastic-beanstalk #aws-codecommit #guzzle
Вопрос:
Я развернул свой проект laravel в AWS и реализовал CI/CD с использованием эластичного бобового стебля, конвейера кода и фиксации кода. Мое приложение включает в себя загрузку изображения, fopen
изображение и отправку в API с помощью HTTP::attach
.
Мое приложение не считывало изображение «маски» в моей папке хранения в рабочей среде
$filename = $this->photo->store('/', 'watermark');
$fileUrl = Storage::disk('watermark')->path($filename);
$photo = fopen($fileUrl, 'r');
$mask = Storage::disk('watermark')->path('mask.png');
$maskUrl = fopen($mask, 'r');
/**uploading image and mask to server */
$response = Http::attach(
'image', $photo, $fileUrl
)->attach(
'mask', $maskUrl, $mask
)->post('http://api-endpoint')->json();
Поэтому я изменил свой код, чтобы использовать AWS S3
$path = $this->photo->store('watermark', 's3');
$photoUrl = Storage::disk('s3')->url($path);
$adapter = Storage::disk('s3')->getAdapter();
$client = $adapter->getClient();
$client->registerStreamWrapper();
$object = $client->headObject([
'Bucket' => $adapter->getBucket(),
'Key' => /*$adapter->getPathPrefix() . */$path,
]);
$fileUrl ="s3://{$adapter->getBucket()}/{$path}";
$photo = fopen("s3://{$adapter->getBucket()}/{$path}", 'r');
$object = $client->headObject([
'Bucket' => $adapter->getBucket(),
'Key' => /*$adapter->getPathPrefix() . */'watermark/mask.png',
]);
$maskPath = "s3://{$adapter->getBucket()}/watermark/mask.png";
$maskUrl = Storage::disk('s3')->url('/watermark/mask.png');
$mask = fopen($maskPath, 'r');
/**uploading image and mask to server */
$response = Http::attach(
'image', $photo, $path
)->attach(
'mask', $mask, '/watermark/mask.png'
)->post('http://api-endpoint')->json();
Я смог прочитать и fopen
загруженное изображение, и маску, но я продолжаю получать эту ошибку от HTTP-клиента.
Любая помощь вообще ценится, ребята, я приношу извинения, если мой код слишком новичок.