HerokuでAWSS3の署名付きURLアップロードを正しく設定するにはどうすればよいですか?

敬意を表する

問題

ユーザーが画像/ビデオをアップロードして表示できるHerokuで実行されている単純なアプリケーションがあります。署名付きURLを使用しようとしています。私はこのチュートリアルとこれを試しました実際、私はGithubリポジトリのクローンを作成しました。問題は、画像をアップロードしようとすると、次のエラーが発生することです。

[エラー]プリフライト応答が成功しません

[エラー]アクセス制御チェックのため、XMLHttpRequestをロードできません(長いリンク)。

[エラー]リソースの読み込みに失敗しました:プリフライト応答が成功しません(img.jp2、0行目)

特定の質問

AWSの経験があまりないので、S3バケットのセットアップに問題があるのではないかと思います。だから私の質問は、この問題の原因とそれを修正するにはどうすればよいですか?

これが私のCOR設定です

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

署名付きURLを生成するコードは次のとおりです

aws.config.region = 'us-west-1';
BUCKET = process.env.S3_BUCKET;

app.get('/account', (req, res) => res.render('account.html'));

app.get('/sign-s3', (req, res) => {
  const s3 = new aws.S3();
  const fileName = req.query['file-name'];
  const fileType = req.query['file-type'];
  const s3Params = {
    Bucket: S3_BUCKET,
    Key: fileName,
    Expires: 60,
    ContentType: fileType,
    ACL: 'public-read'
  };

  s3.getSignedUrl('putObject', s3Params, (err, data) => {
    if(err){
      console.log(err);
      return res.end();
    }
    const returnData = {
      signedRequest: data,
      url: `https://${S3_BUCKET}.s3.amazonaws.com/${fileName}`
    };
    res.write(JSON.stringify(returnData));
    res.end();
  });
});

これがS3にアップロードしようとするコードです

function uploadFile(file, signedRequest, url){
  const xhr = new XMLHttpRequest();
  xhr.open('PUT', signedRequest);
  xhr.onreadystatechange = () => {
    if(xhr.readyState === 4){
      if(xhr.status === 200){
        alert('success')
      }
      else{
        alert('Could not upload file.');
      }
    }
  };
  xhr.send(file);
}

何が試されたか

追加する

<AllowedMethod>OPTIONS</AllowedMethod>

結果は

Found unsupported HTTP method in CORS config. Unsupported method is OPTIONS

その他の注意事項

クロームとサファリを試しました。誤ってデフォルトで使用していたことが判明しました

 <AllowedHeader>authorization</AllowedHeader>

これをに戻す

 <AllowedHeader>*</AllowedHeader>

結果:

[Long link] Failed to load resource: the server responded with a status of 403 (Forbidden)
敬意を表する

Herokuチュートリアルでは、いくつかの詳細が省略されています(または更新する必要があります)。

構成を更新する必要がありました:

aws.config.region = 'us-west-1';
aws.config.update({
  accessKeyId:  process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
})

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

アップロードした画像をPHPでAWSS3に保存するにはどうすればよいですか?

RStudioServerのデータセットとしてAWSS3バケットに直接アクセスするにはどうすればよいですか?

ダウンロードせずにAWSS3でzip内のファイルをカウントするにはどうすればよいですか?

転送中にAWSS3のアップロード/ダウンロードされたデータを保護するにはどうすればよいですか?

Javaでアップロード中にawss3オブジェクトでキャッシュコントロールを設定するにはどうすればよいですか?

GraphQLを使用してAWSS3にイメージをアップロードするにはどうすればよいですか?

アップロードキーを使用して署名付きAPKを作成するにはどうすればよいですか?

画像をAWSS3にアップロードするにはどうすればよいですか

パブリックアクセスを許可してAWSS3にファイルをアップロードするにはどうすればよいですか?

mongoDBStitchでAWSS3の署名付きURLを取得するにはどうすればよいですか?

大きなコアリクエストボディをAWSS3にアップロードする正しい方法は何ですか?

std :: fstreamでgz圧縮されたファイルの事前署名されたURLを使用して、AWS S3 HTTPアップロードのコンテンツの長さを設定するにはどうすればよいですか?

キャプチャした画像の名前をawss3にアップロードするreactnativeで変更するにはどうすればよいですか?

GCSからAWSS3にファイルをコピーするときにACLを設定するにはどうすればよいですか?

アップロードイベント用にAWSSNSでAWSS3を設定するにはどうすればよいですか?

Javaを使用してAWSS3にフォルダーをアップロードするにはどうすればよいですか?

AWSS3バケットから暗号化された.gzファイルをダウンロードするにはどうすればよいですか

パブリックAWSS3バケットのリージョンを決定するにはどうすればよいですか?

AWS増幅を使用して読み取り専用のAWSS3バケットからiOSアプリに画像を安全にダウンロードするにはどうすればよいですか?

オブジェクトをAWSS3に適切にアップロードするにはどうすればよいですか?

Rubyで事前に署名されたPOSTファイルをAWSS3にアップロードするにはどうすればよいですか?

署名付きURL形式-awss3の「Expires」フィールドに使用される形式は何ですか?

100GBのファイルをアップロードできるようにnginxを設定するにはどうすればよいですか?

Expo Image Pickerを使用してモバイルデバイスからAWSS3に簡単な画像をアップロードするにはどうすればよいですか?

事前に署名されたAWSS3 URLを使用してアップロードされたPDFに正しいコンテンツタイプがないのはなぜですか?

Python3.8を使用してAWSS3サブフォルダーにファイルをアップロードするにはどうすればよいですか?

nodejsの複数のファイルをAWSS3にアップロードし、ファイルのURLをデータベースに保存するにはどうすればよいですか?

LaravelのAmazonS3署名付きURLにファイルをアップロードするにはどうすればよいですか?

プロバイダーを正しく設定するにはどうすればよいですか?

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ