5

aws のバケット内の特定のファイルを検索し、一時的に認証された URL を作成して同僚に送信するための小さなスクリプトを作成しています。(理想的には、これにより、コンソールのバケット内のファイルを右クリックしてリンク アドレスをコピーするのと同様の結果が作成されます)。

この基準を満たしていないように見えるペーパークリップを調べましたが、その完全な機能を認識できませんでした。

私は次のことを試しました:

def authenticated_url(file_name, bucket)
  AWS::S3::S3Object.url_for(file_name, bucket, :secure => true, :expires => 20*60)
end

このタイプの結果を生成したもの:

...-1.amazonaws.com/file_path/file.zip.AWSAccessKeyId={key}Expires=1200&Signature={...}

単純にリンクとして送信できる、上記のシナリオに似た安全な URL を作成する方法はありますか? そうでない場合は、安全な代替手段を歓迎します。

4

1 に答える 1

8

「トークン化されたリンク」と呼ばれるものが必要です。幸いなことに、使用している aws-sdk gem に組み込まれています。

これは、使用できる解決策である以前の質問です。

S3 にデータを保存し、Rails API / iOS クライアントを使用して安全な方法でユーザー アクセスを許可するにはどうすればよいですか?

ただし、これは のような優れた Rails 時間ヘルパーを備えた Rails ソリューション20.minutes.from_nowです。のように現在の時刻に特定の秒数を追加して有効期限を特定の日付に設定するかTime.now.to_i + (20 * 60)require 'active_support/core_ext/numeric/time'. これにより、20.minutes.from_now作業が可能になります。

aws-sdkまた、 S3 部分だけでなく、gem全体を要求する必要があります。

于 2013-04-10T19:40:26.733 に答える