我试图在我的laravel应用程序中将图像上传到aws3,但在错误异常中,listObjects上出现了401未经授权。
我设置了一个bucket策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucketName",
"arn:aws:s3:::bucketName/*"
],
"Effect": "Allow",
"Principal": "*"
}
]
}
我在这里做错了什么?我只需要能够通过我们的应用程序上传图像
留言:
#message: "Error executing "ListObjects" on "https://jfi.s3.amazonaws.com/?prefix=component_images%2F50000213.png%2F&max-keys=1&encoding-type=url"; AWS HTTP error: Client error: `GET https://testSite.s3.amazonaws.com/?prefix=component_images%2F50000213.png%2F&max-keys=1&encoding-type=url` resulted in a `401 Unauthorized` response (client): 401 Unauthorized - " #code: 0 #file: "C:\Users\testUser\testSite\vendor\aws\aws-sdk-php\src\WrappedHttpHandler.php"
堆栈跟踪:
95. Aws\WrappedHttpHandler->parseError() ==> new Aws\S3\Exception\S3Exception(): {â¶}
94. Aws\WrappedHttpHandler->Aws\{closure}() ==> Aws\WrappedHttpHandler->parseError(): {â¶}
93. GuzzleHttp\Promise\Promise::callHandler() ==> Aws\WrappedHttpHandler->Aws\{closure}(): {â¶}
92. GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() ==> GuzzleHttp\Promise\Promise::callHandler(): {â¶}
91. GuzzleHttp\Promise\RejectedPromise::GuzzleHttp\Promise\{closure}() ==> GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}(): {â¶}
90. GuzzleHttp\Promise\TaskQueue->run() ==> GuzzleHttp\Promise\RejectedPromise::GuzzleHttp\Promise\{closure}(): {â¶}
89. GuzzleHttp\Handler\CurlMultiHandler->tick() ==> GuzzleHttp\Promise\TaskQueue->run(): {â¶}
88. GuzzleHttp\Handler\CurlMultiHandler->execute() ==> GuzzleHttp\Handler\CurlMultiHandler->tick(): {â¶}
87. GuzzleHttp\Promise\Promise->invokeWaitFn() ==> GuzzleHttp\Handler\CurlMultiHandler->execute(): {â¶}
86. GuzzleHttp\Promise\Promise->waitIfPending() ==> GuzzleHttp\Promise\Promise->invokeWaitFn(): {â¶}
85. GuzzleHttp\Promise\Promise->invokeWaitList() ==> GuzzleHttp\Promise\Promise->waitIfPending(): {â¶}
84. GuzzleHttp\Promise\Promise->waitIfPending() ==> GuzzleHttp\Promise\Promise->invokeWaitList(): {â¶}
83. GuzzleHttp\Promise\Promise->invokeWaitList() ==> GuzzleHttp\Promise\Promise->waitIfPending(): {â¶}
82. GuzzleHttp\Promise\Promise->waitIfPending() ==> GuzzleHttp\Promise\Promise->invokeWaitList(): {â¶}
81. GuzzleHttp\Promise\Promise->wait() ==> GuzzleHttp\Promise\Promise->waitIfPending(): {â¶}
80. Aws\AwsClient->execute() ==> GuzzleHttp\Promise\Promise->wait(): {â¶}
79. League\Flysystem\AwsS3v3\AwsS3Adapter->doesDirectoryExist() ==> Aws\AwsClient->execute(): {â¶}
78. League\Flysystem\AwsS3v3\AwsS3Adapter->has() ==> League\Flysystem\AwsS3v3\AwsS3Adapter->doesDirectoryExist(): {â¶}
77. League\Flysystem\Filesystem->has() ==> League\Flysystem\AwsS3v3\AwsS3Adapter->has(): {â¶}
76. League\Flysystem\Filesystem->put() ==> League\Flysystem\Filesystem->has(): {â¶}
75. Illuminate\Filesystem\FilesystemAdapter->put() ==> League\Flysystem\Filesystem->put(): {â¶}
74. App\Http\Controllers\Product\RepairPartsController->uploadComponentImage() ==> Illuminate\Filesystem\FilesystemAdapter->put(): {â¶}
73. call_user_func_array() ==> App\Http\Controllers\Product\RepairPartsController->uploadComponentImage(): {â¶}
72. Illuminate\Routing\Controller->callAction() ==> call_user_func_array(): {â¶}
71. Illuminate\Routing\ControllerDispatcher->call() ==> Illuminate\Routing\Controller->callAction(): {â¶}
70. Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}() ==> Illuminate\Routing\ControllerDispatcher->call(): {â¶}
69. call_user_func() ==> Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}(): {â¶}
68. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
67. call_user_func() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
66. Illuminate\Pipeline\Pipeline->then() ==> call_user_func(): {â¶}
65. Illuminate\Routing\ControllerDispatcher->callWithinStack() ==> Illuminate\Pipeline\Pipeline->then(): {â¶}
64. Illuminate\Routing\ControllerDispatcher->dispatch() ==> Illuminate\Routing\ControllerDispatcher->callWithinStack(): {â¶}
63. Illuminate\Routing\Route->runController() ==> Illuminate\Routing\ControllerDispatcher->dispatch(): {â¶}
62. Illuminate\Routing\Route->run() ==> Illuminate\Routing\Route->runController(): {â¶}
61. Illuminate\Routing\Router->Illuminate\Routing\{closure}() ==> Illuminate\Routing\Route->run(): {â¶}
60. call_user_func() ==> Illuminate\Routing\Router->Illuminate\Routing\{closure}(): {â¶}
59. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
58. App\Http\Middleware\GateChecker->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
57. call_user_func_array() ==> App\Http\Middleware\GateChecker->handle(): {â¶}
56. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
55. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
54. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
53. App\Http\Middleware\Authenticate->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
52. call_user_func_array() ==> App\Http\Middleware\Authenticate->handle(): {â¶}
51. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
50. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
49. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
48. App\Http\Middleware\LogEventUser->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
47. call_user_func_array() ==> App\Http\Middleware\LogEventUser->handle(): {â¶}
46. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
45. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
44. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
43. Illuminate\View\Middleware\ShareErrorsFromSession->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
42. call_user_func_array() ==> Illuminate\View\Middleware\ShareErrorsFromSession->handle(): {â¶}
41. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
40. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
39. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
38. Illuminate\Session\Middleware\StartSession->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
37. call_user_func_array() ==> Illuminate\Session\Middleware\StartSession->handle(): {â¶}
36. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
35. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
34. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
33. Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
32. call_user_func_array() ==> Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(): {â¶}
31. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
30. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
29. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
28. Illuminate\Cookie\Middleware\EncryptCookies->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
27. call_user_func_array() ==> Illuminate\Cookie\Middleware\EncryptCookies->handle(): {â¶}
26. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
25. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
24. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
23. call_user_func() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
22. Illuminate\Pipeline\Pipeline->then() ==> call_user_func(): {â¶}
21. Illuminate\Routing\Router->runRouteWithinStack() ==> Illuminate\Pipeline\Pipeline->then(): {â¶}
20. Illuminate\Routing\Router->dispatchToRoute() ==> Illuminate\Routing\Router->runRouteWithinStack(): {â¶}
19. Illuminate\Routing\Router->dispatch() ==> Illuminate\Routing\Router->dispatchToRoute(): {â¶}
18. Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}() ==> Illuminate\Routing\Router->dispatch(): {â¶}
17. call_user_func() ==> Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(): {â¶}
16. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
15. Barryvdh\Debugbar\Middleware\Debugbar->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
14. call_user_func_array() ==> Barryvdh\Debugbar\Middleware\Debugbar->handle(): {â¶}
13. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
12. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
11. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
10. Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
9. call_user_func_array() ==> Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(): {â¶}
8. Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() ==> call_user_func_array(): {â¶}
7. call_user_func() ==> Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(): {â¶}
6. Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}() ==> call_user_func(): {â¶}
5. call_user_func() ==> Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(): {â¶}
4. Illuminate\Pipeline\Pipeline->then() ==> call_user_func(): {â¶}
3. Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter() ==> Illuminate\Pipeline\Pipeline->then(): {â¶}
2. Illuminate\Foundation\Http\Kernel->handle() ==> Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(): {â¶}
1. {main} ==> Illuminate\Foundation\Http\Kernel->handle(): {â¶}
}```