Я написал команду, которая получает некоторые данные из БД, и эти данные отправляются в очередь AWS для обработки. эта команда запускается через консоль и работает отлично, но когда я запускаю эту команду в контроллере из API, это вызывает ошибку. Заранее спасибо.
Командный класс:
<?php
namespace App\Console\Commands;
use App\Http\Base\Contracts\IActivityLiquidation;
use App\Jobs\AuthorizeOrganizersInvoiceJob;
use Illuminate\Console\Command;
use Exception;
use Log;
class ElectronicBillingOrganizerCron extends Command
{
protected $signature = 'electronicBilling:organizer {activityIds?*}';
protected $IActivityLiquidation;
public function __construct(IActivityLiquidation $IActivityLiquidation)
{
parent::__construct();
$this->IActivityLiquidation = $IActivityLiquidation;
}
public function handle()
{
try
{
Log::info("############### ELECTRONIC-BILLING-ORGANIZER::CRON::START ###############");
$this->getData();
AuthorizeOrganizersInvoiceJob::dispatch($this->event)->onConnection('sqs_electronic_billing_organizer');
Log::info("############### ELECTRONIC-BILLING-ORGANIZER::CRON::END ###############");
}
catch (\Exception $ex)
{
Log::error("############### ELECTRONIC-BILLING-ORGANIZER::CRON::ERROR ###############".$ex);
}
}
public function getData(){
$this->event = $this->IActivityLiquidation->getData();
}
}
РАБОЧИЙ КЛАСС
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Exception;
use Log;
use DB;
class AuthorizeOrganizersInvoiceJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $event;
public function __construct($event)
{
$this->event = $event;
}
public function handle()
{
try
{
$this->someLogicHere();
}
catch (\Exception $ex)
{
Log::error($ex);
}
}
}
КОМАНДА
электронный счет: органайзер
==> пока здесь все работает отлично, но сейчас.
API ENDPOINT
Route::post('/force', 'ElectronicBillingController@force');
КОНТРОЛЛЕР API
<?php
namespace App\Http\Controllers;
use App\Http\Controller;
use Illuminate\Support\Facades\Artisan;
use Exception;
use Log;
class ElectronicBillingController extends Controller
{
public function __construct()
{
}
public function force()
{
Artisan::queue('electronicBilling:organizer');
}
}
==> если я потребляю эта конечная точка, я получаю эту ошибку
2020-04-02 20:02:23] local.INFO: ############### ELECTRONIC-BILLING-ORGANIZER::CRON::START ###############
[2020-04-02 20:02:28] local.ERROR: ############### ELECTRONIC-BILLING-ORGANIZER::CRON::ERROR ###############exception 'Aws\Sqs\Exception\SqsException' with message 'Error executing "SendMessage" on "https://sqs.us-west-2.amazonaws.com/9384728499/SQS-ELECTRONIC-BILLING-STATUS-local"; AWS HTTP error: Client error: `POST https://sqs.us-west-2.amazonaws.com/9384728499/SQS-ELECTRONIC-BILLING-STATUS-local` resulted in a `403 Forbidden` response:
<?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>A (truncated...)
AccessDenied (client): Access to the resource https://sqs.us-west-2.amazonaws.com/9384728499/SQS-ELECTRONIC-BILLING-STATUS-local is denied. - <?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>AccessDenied</Code><Message>Access to the resource https://sqs.us-west-2.amazonaws.com/9384728499/SQS-ELECTRONIC-BILLING-STATUS-local is denied.</Message><Detail/></Error><RequestId>1a8e53d6-69ca-59c6-8b16-04d6e4ae30e7</RequestId></ErrorResponse>'
GuzzleHttp\Exception\ClientException: Client error: `POST https://sqs.us-west-2.amazonaws.com/9384728499/SQS-ELECTRONIC-BILLING-STATUS-local` resulted in a `403 Forbidden` response:
<?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>A (truncated...)
in /var/www/html/project/app/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113
Stack trace:
#0 /var/www/html/project/app/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 /var/www/html/project/app/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
#4 /var/www/html/project/app/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(98): GuzzleHttp\Promise\TaskQueue->run()
#5 /var/www/html/project/app/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(125): GuzzleHttp\Handler\CurlMultiHandler->tick()
#6 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(246): GuzzleHttp\Handler\CurlMultiHandler->execute(true)
#7 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(223): GuzzleHttp\Promise\Promise->invokeWaitFn()
#8 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\Promise\Promise->waitIfPending()
#9 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\Promise\Promise->invokeWaitList()
#10 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\Promise\Promise->waitIfPending()
#11 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\Promise\Promise->invokeWaitList()
#12 /var/www/html/project/app/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending()
#13 /var/www/html/project/app/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): GuzzleHttp\Promise\Promise->wait()
#14 /var/www/html/project/app/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(86): Aws\AwsClient->execute(Object(Aws\Command))
#15 /var/www/html/project/app/vendor/laravel/framework/src/Illuminate/Queue/SqsQueue.php(89): Aws\AwsClient->__call('sendMessage', Array)