0

presigned urlの作成に関して非常に面白い問題が発生しています。 beasntalkのコードは良いURLであり、コードに問題はありません。しかし、長いURLが生成されているが、私は画像を参照してくださいをヒットすることはできませんよジャックと豆の木のインスタンスプロファイルに次のアクセス権を与えるとき:次のIAMロールにアクセスすると、presigned Urlを作成できません:arn:aws:s3 ::: mybucket

{ 
     "Action": [ 
      "s3:*", 
      "s3:List*", 
      "s3:PutObject", 
      "s3:Delete*" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::mybucket", 
      "arn:aws:s3:::mybucket/*" 
     ], 
     "Effect": "Allow" 
    } 

とmybucket私はそこに自分のイメージを持っているバケツですそこから私の予約URLを作成します。 面白いことに、私はこれを試してみる:

{ 
     "Action": [ 
      "s3:*", 
      "s3:List*", 
      "s3:PutObject", 
      "s3:Delete*" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::*", 
      "arn:aws:s3:::mybucket/*" 
     ], 
     "Effect": "Allow" 
    } 

それは働き始めます。しかし、私はアクセス権を与えたくないので、これはまったく意味がありません。 私はmybucketをちょうど使用しています。私がmybucketへのアクセス権を与えたときではなく、アクセス権を与えたときにはなぜ動作しますか?何か案が? 何も分からないのですか?

更新

私は私のpresigned URL(有効なリンク)を表示できるようにしたい場合は具体的には、私は私のIAMポリシーで、次の部分を持っている必要があります。

{ 
     "Action": [ 
      "s3:Get*" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::*" 
     ], 
     "Effect": "Allow" 
    } 

答えて

0

GetObject権限をIAMロールに追加する必要がある場合は、事前設定されたURLが正しく作成されません。 HTTP GET用に予約済みURLのポリシーでGetObject権限は必要ありません。

注:以下のポリシーは無効です。最初の行にすべての権限を与えてから、次の3行に追加の権限を指定して、何も追加しません。

"s3:*", 
    "s3:List*", 
    "s3:PutObject", 
    "s3:Delete*" 
+0

私は物をテストしていて、修正するのを忘れていました。私はちょうどあなたのソリューションを取得していないので、私はGetObjectを削除する必要がありますか?もし私がarnでGetObjectを削除したら:aws:s3 ::: *それは動作を停止します –

+0

予約済みのURLはあなたのポリシーを使用しません。このように考えると、あなたの予約URLはインターネット用に設計されており、IAMの役割について何も知らないでしょう。あなたが生成している登録されたURLを見直してください。これがあなたの問題です。 –

+0

私のコードが実行中のバーストックは、バケットからイメージを取得するためにアクセスする必要があり、あらかじめ設定されたURLを作成し、beanstalk(publicではない)に "arn:aws:s3 ::: * presigned urlを適切に設定します。 –

関連する問題