Amazon S3通过网址访问图片

Sib*_*Guy 24 amazon-s3

我已将图像上传到Amazon S3存储.但是如何通过url访问此图像?我已将文件夹和文件设为公共但如果尝试通过URL访问它仍然会收到AccessDenied错误https://s3.amazonaws.com/bucket/path/image.png

ako*_*ian 26

这是一个较老的问题,但对于遇到此问题的任何人,一旦我公开了该文件,我就可以访问我的图像https://mybucket.s3.amazonaws.com/myfolder/afile.jpg

  • 但当我点击它时,它会给我访问被拒绝错误? (8认同)
  • @KickButtowski您必须用实际存在的存储桶名称替换URL中的mybucket。 (2认同)

Ren*_*cha 11

就我而言,我已私下上传图片,因此无法访问。我做了以下代码

const AWS = require('aws-sdk')
const myBucket = 'BUCKET_NAME'
  const myKey = 'FILE_NAME.JPG'
  const signedUrlExpireSeconds = 60 * 1
  const s3 = new AWS.S3({
    accessKeyId: "ACCESS_KEY_ID",
    signatureVersion: 'v4',
    region: 'S3_REGION',
    secretAccessKey: "ACCESS_SECRET"
  });

  const url = s3.getSignedUrl('getObject', {
      Bucket: myBucket,
      Key: myKey,
      Expires: signedUrlExpireSeconds
  })

  console.log(url)
Run Code Online (Sandbox Code Playgroud)


小智 10

最简单的方法之一是制定存储桶策略。

 {
       "Version": "2012-10-17",
       "Statement": [{
           "Sid": "MakeItPublic",
           "Effect": "Allow",
           "Principal": "*", 
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::yourbucketname.com/*"
    }]
   }
Run Code Online (Sandbox Code Playgroud)

  • 我害怕尝试这个 (2认同)

小智 7

您可以使用以下方式访问您的图像:

https://s3.amazonaws.com/bucketname/foldername/imagename.jpg
Run Code Online (Sandbox Code Playgroud)

或者如果没有文件夹,你可以这样做:

https://s3.amazonaws.com/bucketname/imagename.jpg
Run Code Online (Sandbox Code Playgroud)

upvote如果有帮助.它符合2017年5月30日的现有AWS.

  • 我认为这不再有效:“您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来请求发送到此端点` (5认同)

Raj*_*Rao 5

看起来您现在只需右键单击存储桶中的任何文件夹,然后选择"公开"即可将该文件夹中的所有内容公开.它可能无法在桶级别本身工作.


小智 5

为了便于将来参考,如果您想访问 Amazon S3 中的文件,则 URL 需要类似于:

bucketname.s3.region.amazonaws.com/foldername/image.png

Example: my-awesome-bucket.s3.eu-central-1.amazonaws.com/media/img/dog.png

不要忘记将对象设置为公共。

在 S3 内,如果单击对象,您将看到一个名为:对象 URL 的字段。这是该对象的网址。