使用Bref Laravel Lambda函数从S3错误执行Listobjects

问题描述

我试图通过使用Bref Serverless Package调用实现为Lambda函数的API来将资产存储在S3中。我正在使用Laravel。 调用Storage::directories();会出现以下错误

消息:在“ https://calmed-storage.s3.us-west-2.amazonaws.com/?prefix=&delimiter=%2F&encoding-type=url”上执行“ ListObjects”时出错; AWS HTTP错误:客户端错误GET https://mys3-storage.s3.us-west-2.amazonaws.com/?prefix=&delimiter=%2F&encoding-type=url导致了403 Forbidden响应: 您提供的AWS Access Key ID(已截断...) InvalidAccessKeyId(客户端):您提供的AWS Access Key ID在我们的记录中不存在。 -InvalidAccessKeyId您提供的AWS Access Key ID在我们的记录中不存在。

解决方法

该错误说明了一切,与它们的API通信时,您需要发送正确的AWS密钥。

如果您按照官方Laravel docs中所述使用league/flysystem-aws-s3-v3,则需要在.env文件中设置下面列出的AWS S3环境变量

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
AWS_URL=

要获取访问密钥,您需要创建具有正确访问权限的用户是Amazon。 This tutorial将为您提供帮助。

,

我正在使用Laravel,凭据存储在.env文件中。 aws-sdk-php正在以某种方式更改访问ID和秘密密钥。我不知道为什么 当我在filesystems.php中对访问ID和密钥进行硬编码时,此问题已解决。