Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

使用 AWS 账户或 IAM 用户凭证进行请求 – 适用于 Ruby 的 AWS 开发工具包

在您可以使用 适用于 Ruby 的 AWS 开发工具包 的版本 2 调用 Amazon S3 之前,必须设置 AWS 访问凭证以便 SDK 用来验证您对存储桶和对象的访问权限。如果您在本地系统上的 AWS 凭证配置文件中设置了共享凭证,则 适用于 Ruby 的开发工具包 的版本 2 可以在无需您在代码中声明这些凭证的情况下使用它们。有关设置共享凭证的更多信息,请参阅使用 AWS 账户或 IAM 用户凭证进行请求

以下 Ruby 代码段使用本地计算机上 AWS 凭证文件中的共享凭证,对要获取特定存储桶中的所有对象键名称的请求进行身份验证并执行以下操作:

  1. 创建 Aws::S3::Resource 类的实例。

  2. 使用 bucketAws::S3::Resource 方法,通过枚举存储桶中的对象向 Amazon S3 发出请求。客户端将根据您计算机上 AWS 凭证文件中的凭证生成所需的签名值,并将其包含在发送给 Amazon S3 的请求中。

  3. 将对象键名称阵列打印到终端。

# Use the Version 2 AWS Ruby SDK require 'aws-sdk' # Get an Amazon S3 resource s3 = Aws::S3::Resource.new(region: 'us-west-2') # Create an array of the object keynames in the bucket, up to the first 100 bucket = s3.bucket('example_bucket').objects.collect(&:key) # Print the array to the terminal puts bucket

即使没有本地 AWS 凭证文件,您仍可以创建 Aws::S3::Resource 资源并针对 Amazon S3 存储桶和对象执行代码。使用 适用于 Ruby 的开发工具包 的版本 2 发送的请求是匿名请求,默认情况下没有签名。如果针对非公开可用的资源发送匿名请求,Amazon S3 将返回错误。

可以针对 适用于 Ruby 的开发工具包 应用程序使用并扩展前一个代码段,如下面的更可靠的示例所示。此代码段采用用户生成的参数来创建存储桶、列出存储桶的内容,或将对象上传到存储桶。

注意

用于此示例的凭证来自运行此应用程序的计算机上的本地 AWS 凭证文件。这些凭证适用于可以在运行此应用程序时列出自己指定的存储桶中的对象的 IAM 用户。

# Use the Version 2 AWS Ruby SDK require 'aws-sdk' # Set the name of the bucket on which the operations are performed # This argument is required bucket_name = nil # The operation to perform on the bucket operation = 'list' # default operation = ARGV[0] if (ARGV.length > 0) if ARGV.length > 1 bucket_name = ARGV[1] else exit 1 end # Get an Amazon S3 resource s3 = Aws::S3::Resource.new(region: 'us-west-2') # Get the bucket by name bucket = s3.bucket(bucket_name) case operation when 'list' if bucket.exists? # Enumerate the bucket contents and object etags puts "Contents of '%s':" % bucket_name puts ' Name => GUID' bucket.objects.limit(50).each do |obj| puts " #{obj.key} => #{obj.etag}" end else puts ""The bucket '%s' does not exist!" % bucket_name end else puts "Unknown operation: '%s'! Only list is supported." % operation end