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

murrekatt

Goの同じことについての私の質問に関連しています。

次のバケットポリシーでのみパブリック読み取りが行われるAWSS3のバケットに事前署名されたPOSTファイルをアップロードしたいと思います。

{
    "Version": "2012-10-17",
    "Id": "Policy1441191234567",
    "Statement": [
        {
            "Sid": "Stmt1441195123456",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mytestbucket/*"
        }
    ]
}

ここで説明するように、事前に署名されたURLが作成され、それを持っている人は誰でもHTTPPOSTを使用してアップロードできます

ここで説明する事前署名済みのPUTを正常に動作させることができました~/aws/credentialsつまり、バケットに完全にアクセスできる適切な資格情報があります。

AWS SDKルビー、私がありますことを発見したPresignedPost私は以下のことを試してみましたので、バケット用:

require 'aws-sdk-resources'
require 'net/http'
require 'time'
require 'uri'

s3 = Aws::S3::Resource.new(region:'eu-central-1')

bucket = s3.bucket('mytestbucket')

post = bucket.presigned_post({
    key: 'larry',
    acl: "public-read",
    expires: Time.now() + 30,
    content_length_range: 1...1024,
    success_action_redirect: "https://example.com/callback",
})

puts post.url
puts post.fields

uri = URI(post.url)
fields = post.fields.merge(file: "ken sent me")
res = Net::HTTP.post_form(uri, fields)
puts res.body

残念ながら、これを実行するとエラーが発生します。

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidArgument</Code><Message>Conflicting query string parameters: acl, policy</Message><ArgumentName>ResourceType</ArgumentName><ArgumentValue>acl</ArgumentValue><RequestId>6132C47A14212345</RequestId><HostId>abcdKciFUKxvC4717Zm9w2ZB5lXJna+NSkxXzkb9123tjHZHb60JJa123KctSu862gY/j+a5+3w=</HostId></Error>

aclフィールドを削除しようとしましたが、別のエラーが発生します。

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>MethodNotAllowed</Code><Message>The specified method is not allowed against this resource.</Message><Method>POST</Method><ResourceType>BUCKETPOLICY</ResourceType><RequestId>9B3D7AAAE45BB47F</RequestId><HostId>yk823Z12345uucETlpQaG1234T0lxqjGAX4Uka123LQ6Pf22NVf45xxMmZAlFoQHaP+C4N60oLI=</HostId></Error>

URIは次のとおりです。 https://mytestbucket.s3.eu-central-1.amazonaws.com

問題は何ですか?どうすればそれを機能させることができますか?

助けてくれてありがとう!

更新

エラーの1つが言うように、問題はおそらく競合するACLとバケットポリシーです。すべての人に読んでもらいたいのですが、アップロードは事前に署名されたURLでのみ可能です(URLを作成したのは所有者であると想定しています)。これが私がそれを設定したと思った方法です。

murrekatt

だから私はGoの質問を答えで更新しました、そして同じことがRubyにも当てはまります。私が抱えていた問題は、マルチパートフォームデータを正しく生成することでした。

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

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

編集
0

コメントを追加

0

関連記事

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

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

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

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

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

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

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

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

アクセス拒否されたawss3ファイルを解決するにはどうすればよいですか?

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

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

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

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

AWSS3の事前署名されたURLRetrofit2AndroidにアップロードファイルをPUT

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

Retrofit2を使用してAWSS3の事前署名されたURLにファイルをアップロードします

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

Node.jsとAxiosを使用してAWSの事前署名されたURLにファイルをアップロードするにはどうすればよいですか?

ノードJsを使用してawss3にファイルを送信するにはどうすればよいですか?

処理する前に、サーバー側のrubyにアップロードされたファイルのウイルス署名を確認するにはどうすればよいですか?

事前に署名されたURLを使用してアップロードした後、ファイルに追加情報があるAWSS3上のファイル

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

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

ドメインをawss3バケットのサブフォルダーに転送するにはどうすればよいですか?

GoでAWS S3への事前署名済みPOSTアップロードを実行するにはどうすればよいですか?

アップロードされた画像をjQueryファイルアップロードで更新するにはどうすればよいですか?

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

Dockerイメージ内にAWSS3からアーティファクトを注入するにはどうすればよいですか?

アップロードされたファイルが画像か他のファイルかを確認するにはどうすればよいですか?

TOP 一覧

  1. 1

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

  2. 2

    Railsで宝石のレイアウトを使用するにはどうすればよいですか?

  3. 3

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

  4. 4

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

  5. 5

    アンドロイド9 - キーストア例外android.os.ServiceSpecificException

  6. 6

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

  7. 7

    CSSのみを使用して三角形のアニメーションを作成する方法

  8. 8

    Google Playストア:アプリページにリーダーボードと実績のアイコン/バッジが表示されない

  9. 9

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

  10. 10

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  11. 11

    Windows 7では、一部のプログラムは「ビジュアルテーマを無効にする」レジストリ設定を行いませんか?

  12. 12

    Get-ADGroupMember:このリクエストのサイズ制限を超えました

  13. 13

    Pyusb can't find a device while libusb can

  14. 14

    MySQLでJSON_LENGTHとJSON_EXTRACTを組み合わせる方法は?

  15. 15

    Postmanを使用してファイル付きの(ネストされた)jsonオブジェクトを送信する

  16. 16

    Swiftのブロックのパラメーターに関するドキュメントのマークアップ形式は何ですか?

  17. 17

    Reactでclsxを使用する方法

  18. 18

    追加後、ブートストラップマルチセレクトがテーブルで機能しない

  19. 19

    MongoDB Compass: How to select Distinct Values of a Field

  20. 20

    「埋め込みブラウザのOAuthログイン」を有効にしてコールバックURLを指定した後でも、Facebookのコールバックエラーが発生する

  21. 21

    複数行ヘッダーのJTableヘッダーテキストの折り返し(カスタムTableCellRenderer)

ホットタグ

アーカイブ