如何在Ruby中将预签名的POST文件上传到AWS S3?

Murrekatt

我在Go中有关同一件事的问题有关

我想将预签名的POST文件上传到AWS S3上的存储桶,该存储桶仅使用以下存储桶策略进行公共读取:

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

预标识的URL会创建一个允许任何拥有它像描述做一个上传与HTTP POST这里

我已经成功地使预签名的PUT可以在这里进行描述即,我具有适当的凭据~/aws/credentials,可以完全访问该存储桶。

AWS Ruby 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

有什么问题,我该如何解决?

谢谢你的帮助!

更新

正如错误之一所言,该问题可能是acl和bucket策略冲突。我希望所有人都能阅读它,并且仅可以使用预先签名的URL进行上传(我假设所有者是创建URL的所有者)。这就是我认为已设置的方式。

Murrekatt

因此,我用一个答案更新了Go问题, Ruby也是如此。我遇到的问题是正确生成多部分表单数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将文件上传到S3预签名URL

来自分类Dev

使用预签名URL将mp3 / zip文件上传到AWS S3

来自分类Dev

使用预签名URL将文件上传到AWS S3的代码有什么问题?

来自分类Dev

如何使用angular或javascript中的预签名URL将文件上传到S3存储桶

来自分类Dev

如何在iOS中将图像上传到AWS S3?

来自分类Dev

上传文件Amazon S3预签名发布

来自分类Dev

AWS PHP SDK:限制预签名URL中的S3文件上传大小

来自分类Dev

Ionic android-使用预签名的URL将文件上传到S3(错误代码:3)

来自分类Dev

文件上传到AWS S3 Laravel 5.1

来自分类Dev

Django:将CSV文件上传到AWS S3

来自分类Dev

AWS Ruby SDK核心:将文件上传到S3

来自分类Dev

使用 Ruby 将文件上传到 S3 时出现 Aws::Errors::MissingRegionError

来自分类Dev

如何从内存中将映像上传到PHP中的AWS S3?

来自分类Dev

您如何在 S3 预签名 POST 中强制执行 Content-Type?

来自分类常见问题

如何在Java AWS S3 SDK预签名URL中设置策略条件

来自分类Dev

AWS Lambda:如何在S3存储桶中读取CSV文件,然后将其上传到另一个S3存储桶?

来自分类Dev

如何在没有AWS JavaScript SDK的情况下将文件上传到S3?

来自分类Dev

如何取消上传到Amazon S3的文件?

来自分类Dev

如何自动将文件上传到s3

来自分类Dev

将本地文件上传到amazon aws s3时如何获取本地文件?

来自分类Dev

403在通过浏览器将文件上传到具有预签名URL和ng-file-upload的文件到AWS S3时签名不匹配

来自分类Dev

如何通过S3签名的URL上传zip文件

来自分类Dev

如何使用Ansible递归将文件夹上传到AWS S3

来自分类Dev

如何使用Java将文件夹上传到AWS S3?

来自分类Dev

如何使用Ansible递归将文件夹上传到AWS S3

来自分类Dev

如何使用 PGP 加密文件并上传到 S3 AWS

来自分类Dev

如何在没有Cognito的情况下从iOS上传到AWS S3?

来自分类Dev

无法使用S3预签名网址上传应用

来自分类Dev

我如何在客户端将可见文件上传到Amazon S3?

Related 相关文章

  1. 1

    将文件上传到S3预签名URL

  2. 2

    使用预签名URL将mp3 / zip文件上传到AWS S3

  3. 3

    使用预签名URL将文件上传到AWS S3的代码有什么问题?

  4. 4

    如何使用angular或javascript中的预签名URL将文件上传到S3存储桶

  5. 5

    如何在iOS中将图像上传到AWS S3?

  6. 6

    上传文件Amazon S3预签名发布

  7. 7

    AWS PHP SDK:限制预签名URL中的S3文件上传大小

  8. 8

    Ionic android-使用预签名的URL将文件上传到S3(错误代码:3)

  9. 9

    文件上传到AWS S3 Laravel 5.1

  10. 10

    Django:将CSV文件上传到AWS S3

  11. 11

    AWS Ruby SDK核心:将文件上传到S3

  12. 12

    使用 Ruby 将文件上传到 S3 时出现 Aws::Errors::MissingRegionError

  13. 13

    如何从内存中将映像上传到PHP中的AWS S3?

  14. 14

    您如何在 S3 预签名 POST 中强制执行 Content-Type?

  15. 15

    如何在Java AWS S3 SDK预签名URL中设置策略条件

  16. 16

    AWS Lambda:如何在S3存储桶中读取CSV文件,然后将其上传到另一个S3存储桶?

  17. 17

    如何在没有AWS JavaScript SDK的情况下将文件上传到S3?

  18. 18

    如何取消上传到Amazon S3的文件?

  19. 19

    如何自动将文件上传到s3

  20. 20

    将本地文件上传到amazon aws s3时如何获取本地文件?

  21. 21

    403在通过浏览器将文件上传到具有预签名URL和ng-file-upload的文件到AWS S3时签名不匹配

  22. 22

    如何通过S3签名的URL上传zip文件

  23. 23

    如何使用Ansible递归将文件夹上传到AWS S3

  24. 24

    如何使用Java将文件夹上传到AWS S3?

  25. 25

    如何使用Ansible递归将文件夹上传到AWS S3

  26. 26

    如何使用 PGP 加密文件并上传到 S3 AWS

  27. 27

    如何在没有Cognito的情况下从iOS上传到AWS S3?

  28. 28

    无法使用S3预签名网址上传应用

  29. 29

    我如何在客户端将可见文件上传到Amazon S3?

热门标签

归档