2016-04-13 10 views
1

ファイルの保存と検索にAWSサービスを使用します。Amazon AWS - URLでファイルを共有

ファイル/バケットにアクセスして読み取るためのURLを生成しようとしています。

私がでそうやってる:私は考えて

Access Denied error message

GetPreSignedUrlRequest request = new GetPreSignedUrlRequest() 
{ 
    BucketName = fileDetails.BucketName, 
    Key = fileDetails.FileKey, 
    Expires = expires 
}; 

result = client.GetPreSignedURL(request); 

正常に生成されますが、私はこのURL経由でファイルにアクセスしようとすると、私は次のエラーを取得するURLを私はこのファイルの一般許可を与えるべきです。 誰かが公共の許可を得てURLでファイルを共有するために何をすべきか知っていますか?

AWS documentationには、一般の許可についての記載はありません。

+1

リンクの有効期限が切れているとします。あなたは 'expires'値を何に設定しましたか? –

+0

Expiresの値を次のように設定します。DateTime.Now.AddDays(30); @マークB – Jacob

+0

はあなたのクライアントが正しい地域を指していますか? – smurtagh

答えて

1

expiresの値を設定しようとしていることは、期待通りに機能しません。

リンクは有効期限が切れています。

このエラーメッセージは、額面で解釈する必要があります。

(私は承知しています限り)ドキュメントはこの事実を言及していないが、事前に署名したURLの有効期限が前に認証または認可チェックが行われ検証されます。有効期限が切れたために動作しないリンクについては、それ以上検証する必要はありません。

クエリ文字列のExpires=またはX-Amz-Expires=の値を確認します。

Expiresは、有効期限のUnixエポックに対する、またはX-Amz-Expiresはリンクの有効期限まで、X-Amz-Date過去の時間(秒)です。これらのうちの1つだけが存在します(Signature V2とV4の違い)。

また、問題を発見すると、URLに記載されている有効期限を変更して値を変えて使用することはできません。署名されたURLを改ざんすると署名が無効になります意図的に)。

-1

クライアントで使用している資格情報が、AmazonS3FullAccessポリシーがアタッチされているユーザー(またはそのグループに属しているグループ)に関連付けられていることを確認します。

+0

エラーはかなり明確です。この回答は関連性のない設定を調べることを示唆しています。 **署名されたURLは期限切れです**。この条件は、署名が検証される前に評価され、オブジェクトをダウンロードする権限があるかどうかにかかわらず、このエラーがスローされます。 –

+0

私はまったく同じエラーに遭遇し、それが解決しました。 AWSエラーは何度かわかりにくいことがあります。 – smurtagh

+0

何が解決されましたか?私は同じエラーがあります、私のアプリケーションと作成されたURLを作成すると、1つのAWSインスタンスで動作しますが、別のAWSインスタンスでは動作しません! (これは同じWARアプリケーションです) – razor

関連する問題