2016-03-28 39 views
0

を返す私は、次のポリシーで設定されているユーザーとnode aws-sdkを使用しています:AWS S3 GETは、ステータスコード403

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "Stmt1458935963000", 
     "Effect": "Allow", 
     "Action": [ 
      "s3:DeleteObject", 
      "s3:GetObject", 
      "s3:PutObject" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::mybucket1/*" 
     ] 
    } 
] 
} 

バケット自体は、それに接続されているすべての明示的なポリシーを持っていません。

<video src="https://s3-us-west-2.amazonaws.com/mybucket1/default21.mp4"> 
</video> 

バケット名が変更されているが、それはビデオと一緒にS3上に存在しない: はenter image description here

以下が403生成:Permissionsは、次のように設定されています。どんな助けでも大歓迎です。 aws-sdkがS3アカウントのroot/ownerで起動されていても同じ結果を取得

UPDATE 1

答えて

0

<video>タグは、nodejsコードが設定した認証メカニズムを使用していません。

ビデオタグがブラウザに読み込まれ、ブラウザはAWS SDKまたはノードサーバーについて何も知っていません。

ビデオタグにはuse a pre-signed URLが必要です。

URLをサーバーで生成し、そのURLをビデオタグで使用します。たとえば、Expressを使用している場合:

router.get("/whatever", function(req, res, next){ 


    var params = {Bucket: 'mybucket', Key: 'default21.mp4'}; 
    var url = s3.getSignedUrl('getObject', params); 

    res.render("some/view", { 
    videoUrl: url 
    }); 

}); 
関連する問題