2017-06-06 14 views
1

私はAWS Lambda関数を使用してファイルを作成し、それをS3上のバケットに保存しています。うまくいきます。 putObjectメソッドの実行後、dataオブジェクトが取得されますが、最近追加されたオブジェクトのEtagしか含まれていません。aws-sdkを使用してAWS S3上のファイルのURLを取得するにはどうすればよいですか?

s3.putObject(params, function(err, data) { 
    //data only contains Etag 
}); 

ブラウザで使用できる正確なURLを知っている必要があります。クライアントはそのファイルを見ることができます。フォルダは既に公開されており、S3コンソールからリンクをコピーするとファイルが表示されます。

私はgetSignedUrlを使用しようとしましたが、それが返すURLは他の目的に使用されています。

ありがとうございます!

+0

presigned urlはダウンロードリンクとして使用できますが、非公開アイテムではx分後に期限切れになります。あなたのアイテムが公開されている場合、最も簡単なことは予測可能なパターンを使用してURLを連結することです。 –

+0

* S3コンソールからリンクをコピーした場合*そこにパターンが表示されますか?バケット内の各オブジェクトのURLは、まったく同じパターンに従います。 –

答えて

3

PutObjectを呼び出すと、バケットとオブジェクトのキーが提供されました。あなたは、単にたとえば、オブジェクトのURLを作るためにそれらを組み合わせることができます。

だから、例えば、あなたのバケットはパブロであれば、オブジェクトキーは犬/ toto.png、使用することである:

Working with Amazon S3 Bucketsを参照してください。

+0

ありがとう!私はリンクがいくつかの命名シナリオで予期せず変化する傾向があると思った。 –

+0

命名に関する追加の投稿:https://stackoverflow.com/questions/7116450/what-are-valid-s3-key-names-that-c​​an-be-accessed-via-the-s3-rest-api – jarmod

関連する問題