2

この AWS のセキュリティ関連の機能に頭がおかしくなりました。knoxを使用してノード アプリからバイナリ ファイルをアップロードしようとしています。キー/シークレットの組み合わせで悪名高いSignatureDoesNotMatchエラーが発生し続けます。これまでたどり着きました。たとえば、Transmit を使用すると、 に接続してバケットにアクセスできますが、仮想サブドメイン経由ではアクセスできません。(s3.amazonaws.com/mybucket 構文でバケットにアクセスしようとすると、サブドメイン スタイルのみが許可されているというエラーが表示されます。)s3.amazonaws.commybucket.s3.amazonaws.com

PUTそれぞれのユーザーから明示的に許可するようにバケット ポリシーを設定しようとしましたが、効果はありませんでした。特定の AWS ユーザーからのファイルのアップロードを有効にする方法を教えてください。

4

1 に答える 1

0

試行錯誤を繰り返した結果、いくつかの問題に絞り込みました。どちらが最終的に修正されたかは完全にはわかりませんが、試してみたいことがいくつかあります。

  • 正しいデータセンターを設定していることを確認してください。私の場合、これは次のようになりました。

    knox.createClient({
           key: this.config.key
      , secret: this.config.secret
      , bucket: this.config.bucket
      , region: 'us-west-2' // cause my bucket is supposed to be in oregon
    });
    
  • PUT ヘッダーを確認します。私の場合、Content-Typeが誤って設定されundef、問題が発生しました:

    var headers = {
        'x-amz-acl': 'public-read' // if you want anyone to be able to download the file
    };
    if (filesize) headers['Content-Length'] = filesize;
    if (mime) headers['Content-Type'] = mime;
    
于 2013-08-30T10:08:57.730 に答える