web-dev-qa-db-ja.com

URLによるAmazon S3 Accessイメージ

Amazon S3ストレージに画像をアップロードしました。しかし、どのようにURLでこの画像にアクセスできますか?フォルダーとファイルを公開しましたが、URLでアクセスしようとするとAccessDeniedエラーが発生します https://s3.amazonaws.com/bucket/path/image.png

22
SiberianGuy

これは古い質問ですが、この質問に出くわした人にとっては、ファイルを公開すると、私のイメージに https://mybucket.s3.amazonaws.com/myfolder/afile.jpgとしてアクセスできました

26
akotian

以下を使用して画像にアクセスできます。

https://s3.amazonaws.com/bucketname/foldername/imagename.jpg

または、フォルダーがない場合は、次を実行できます。

https://s3.amazonaws.com/bucketname/imagename.jpg

賛成であれば賛成します。 2017年5月30日付の現在のAWSに準拠しています。

6
Zohaib Ejaz

バケット内の任意のフォルダを右クリックし、「パブリックにする」を選択してそのフォルダ内のすべてをパブリックにできるようになりました。バケットレベル自体では機能しない場合があります。

5
Raja Rao

s3にアップロードおよび保存されたのと同じケースを使用して画像にアクセスしてください。たとえば、image_name .[〜#〜] jpg [〜#〜]をアップロードした場合、image_nameではなく同じ名前を使用する必要があります。jpg

3

画像にアクセスできないという同様の問題の解決策を探しているときに、私はこの質問に出会いました。

ファイル名に%が含まれる画像には、アクセス時に%シンボルURLが%25にエンコードされている必要があります。

つまり、photo%20of%20a%20banana%20-%2019%20june%202016.jpgphoto%2520of%2520a%2520banana%2520-%252019%2520june%25202016.jpg経由でアクセスする必要があります。

ただし、スラッシュなどがエンコードされ、パスが機能しないため、フルパスをエンコードするURLは機能しませんでした。特定のケースでは、すべてのアクセスパスで%%25に置き換えるだけで違いが生じました。

3
Warren Sergent

私は同じ問題を抱えていました。画像のURLの間隔に問題があります。私はそれを機能させるためにこれをしました:

String imgUrl=prizes.get(position).getImagePreview().replaceAll("\\s","%20");

このURLをpicassoに渡します:

Picasso.with(mContext)
            .load(imgUrl)
            .into(mImageView);
1

コンソールで、アクセスする画像を右クリックし、[公開]をクリックします。それが終わったら、画像をもう一度右クリックし、「プロパティ」をクリックして、拡張ビューからリンクをコピーします。

1
Derekdunes

最も簡単な方法の1つは、バケットポリシーを作成することです。

{「バージョン」:「2012-10-17」、「ステートメント」:[{「Sid」:「MakeItPublic」、「Effect」:「Allow」、「Principal」:「」、「Action」: 「s3:GetObject」、「Resource」:「arn:aws:s3 ::: yourbucketname.com/ "}]}

0

URL経由でプライベート画像にアクセスするには、クエリ文字列認証を提供する必要があります。クエリ文字列認証バージョン4には、X-Amz-Algorithm、X-Amz-Credential、X-Amz-Signature、X-Amz-Date、X-Amz-SignedHeaders、およびX-Amz-Expiresパラメーターが必要です。

0
Bill Zelenko