【问题标题】:How to verify AWS S3 put response in Rails如何验证 AWS S3 在 Rails 中放置响应
【发布时间】:2019-07-23 02:10:15
【问题描述】:

我在我的 Rails 项目中使用aws-skd-s3 gem。

创建 S3 资源

s3 = Aws::S3::Resource.new(access_key_id: #####,
        secret_access_key: #####,
        region: 'us-east-1')

创建一个 S3 对象

path = 'sample'
key = test.csv
obj = s3.bucket(#{bucket_name}).object("#{path}" + key)

在 S3 中存储 CSV

obj.put(body: csv_response, content_type: 'text/csv')

如何验证 put 方法将 csv 存储在 S3 中没有任何问题?

S3 中的 put 方法是否有状态码可供验证?

【问题讨论】:

    标签: ruby-on-rails amazon-s3 aws-sdk


    【解决方案1】:

    两种方法:

    1. 存储结果。它应该是一个PutObjectOutput 类型的对象。您可以查看 put 请求方法的official 方法文档。
    2. 第二种方法是在您的看跌请求完成后立即拨打exists? 电话。像这样:
       s3 = Aws::S3::Resource.new(region: 'ap-southeast-1') # change to the region you use
       obj = s3.bucket('bucket-name').object("path/to/object/in/bucket")
       if obj.exists?
         # Object was uploaded successfully!
       else
         # No it wasn't!
       end
    

    希望有帮助!

    【讨论】:

      【解决方案2】:

      我看到或读过其他人这样做的一种方法是在上传之前计算原始文件的 md5 哈希,然后将其与来自 obj.put 响应的 etag 值匹配

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        • 2018-03-11
        • 2015-07-09
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多