aws-sdk ruby returns 删除对象时为零

aws-sdk ruby returns nil when deleting object

我正在尝试使用 ruby aws-sdk(版本 2)删除 S3 上的对象。它工作正常,但是 returns 这个

<struct Aws::S3::Types::DeleteObjectOutput delete_marker=nil,version_id=nil, request_charged=nil>

这没有意义,因为在 documentation 中它表示响应应为以下类型:

resp.delete_marker #=> true/false

resp.version_id #=> String

resp.request_charged #=> String, one of "requester"

为什么我变成零了?我想知道对象是否被删除。当我成功删除对象和没有成功删除对象时,我都会收到该响应。

这是我用来删除对象的代码:

creds = Aws::Credentials.new(user_access_key,
                             user_secret_key,
                             session_token)

s3 = Aws::S3::Client.new( region: 'eu-west-1',
                          credentials: creds)


key = "myKey.csv"

r = s3.delete_object(bucket: "myBucket",
                     key: key)

您的对象删除成功。在某些情况下,Amazon S3 API 仅 returns 这些值。在这种情况下,您的对象不在版本化存储桶中(没有版本 ID 或删除标记布尔值),并且没有为请求付款人配置。

作为一般规则,如果 SDK 没有从响应中引发错误,则它是成功的。在这种情况下,API 参考文档可能会造成混淆,因为它没有明确指出这些值可能是 nil.

aws-sdk-ruby Aws::CloudFormation::Client#delete_stack Documentation