私はECAMインスタンスからS3にアクセスするためにIAMロールを使用しています。しかし、私のアプリケーションでは、ファイルをダウンロードするための署名付きURLを作成します。ただし、ユーザーがファイルをダウンロードしようとすると、のアクセスが拒否されたと表示されます()。署名されたURLを介してダウンロードするとアクセスが拒否される
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
//key=file path
var params = {Bucket: bucket, Key: prefix+'/'+key, Expires: 240}
var url = s3.getSignedUrl('getObject', params)
console.log(req.cookies.s, 'got', url) // expires in 60 seconds
res.redirect(url)
「AWS S3 Bucket Policy」と組み合わせてs3オブジェクトをパブリックにしてみてください。 Ref:http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html –
コードを表示できますか?署名されたURLはこれを処理する正しい方法です。あなたが望んでいることが分かっていない限り、バケツを一般公開することを強くお勧めします。 – stdunbar
アップロードされたファイルはpublicに設定する必要があります。さもなければ、あなたのアプリはアップロードされたファイルを公開するようにいくつかのaclを持たなければならない。 – Ayoub