来自 S3 存储桶的图像未显示在服务器上

问题描述 投票:0回答:2

我在 S3 存储桶上遇到了一个奇怪的问题,我使用 S3 存储桶来存储应用程序的图像,并使用 lambda 来处理 API 函数,因此上传可以在本地正常工作并且还使用 lambda,问题是当我想要在应用程序上显示图像,在本地主机上效果很好,但在服务器上图像根本不显示:

这是本地的:https://www.screencast.com/t/GA9R2ik3vX

但在服务器上看起来像这样:https://www.screencast.com/t/oSY2AuE5NF

node.js amazon-web-services amazon-s3 aws-lambda
2个回答
0
投票

我认为这可能是您的 S3 存储桶访问策略设置存在问题。可能是在设置存储桶时,AWS 获取了您的本地 IP 并将其添加到允许的 IP 列表中(我很确定 AWS 有时会自动执行此操作),这就是为什么它可以在您的本地主机上运行,但不能在您的服务器上运行。

确保您的阻止公共访问如下所示: enter image description here

并且您的存储桶策略是公开的:

enter image description here

它应该看起来像这样:

{
    "Version": "2012-10-17",
    "Id": "Policy123",
    "Statement": [
        {
            "Sid": "Stmt123",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}

请注意,这将使您存储桶中的图像公开,任何拥有链接的人都可以访问它。


0
投票

更新修复

问题仍然存在,但我找到了一种不同的方式来上传图像,我是从前端而不是使用签名 url 的 lambda 来完成的,希望它对将来的人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.