【问题标题】:Error Executing Listobjects from S3 using Bref Laravel Lambda functions使用 Bref Laravel Lambda 函数从 S3 执行 Listobjects 时出错
【发布时间】:2021-02-22 09:31:12
【问题描述】:

我正在尝试通过调用使用 Bref 无服务器包实现为 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 访问密钥 ID(截断...) InvalidAccessKeyId(客户端):您提供的 AWS 访问密钥 ID 在我们的记录中不存在。 - InvalidAccessKeyId 您提供的 AWS 访问密钥 ID 在我们的记录中不存在。

【问题讨论】:

    标签: laravel amazon-web-services amazon-s3 aws-lambda bref


    【解决方案1】:

    错误说明了一切,您需要在与他们的 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 将帮助您。

    【讨论】:

    • .env 文件根据文档设置。根据 aws 中的文档设置 S3 权限和角色。什么都没有发生。
    • 您使用的访问密钥存在问题。仔细检查您的 IAM 用户。 aws.amazon.com/premiumsupport/knowledge-center/…
    • 此处有关堆栈溢出的答案只能为您指明正确的方向,我们不是亚马逊支持平台。如果您对集成有具体问题,请重新表述您的问题。否则,请接受我的回答并继续联系亚马逊支持。
    • 我认为它与 AWS IAM 角色有关。由于所有设置均已正确完成。它在本地和 ec2 实例中运行良好,问题仅在作为 Lambda 函数执行时出现。 Aws-sdk-php 正在发送另一个访问 ID 和密钥,而不是存储在我的 .env 文件中的那个。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 2023-01-20
      • 2017-11-25
      • 2021-07-07
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多