如何验证 AWS S3 将响应放入 Rails

How to verify AWS S3 put response in Rails

我在我的 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方法有状态码可以验证吗?

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

两种解决方法:

  1. 存储结果。应该是put请求方法的PutObjectOutput type object. You can check out the 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

希望对您有所帮助!