Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用适用于 Ruby 的 AWS 开发工具包指定服务器端加密

在使用 适用于 Ruby 的 AWS 开发工具包 上传对象时,您可以指定使用服务器端加密 (SSE) 对存储的对象进行静态加密。在您读回对象时,它将自动解密。

下面的 适用于 Ruby 的 AWS 开发工具包 版本 3 示例演示了如何指定对上传到 Amazon S3 的文件进行静态加密。

require 'aws-sdk-s3' s3 = Aws::S3::Resource.new(region:'us-west-2') obj = s3.bucket('my-bucket').object('key') obj.upload_file('local/path/to/file', :server_side_encryption => 'AES256')

有关演示在不使用 SSE 的情况下上传对象的示例,请参阅使用 适用于 Ruby 的 AWS 开发工具包 上传对象

确定使用的加密算法

下面的代码示例演示了如何确定现有对象的加密状态。

# Determine server-side encryption of an object. require 'aws-sdk-s3' s3 = Aws::S3::Resource.new(region:'us-west-2') enc = s3.bucket('bucket-name').object('key').server_side_encryption enc_state = (enc != nil) ? enc : "not set" puts "Encryption state is #{enc_state}."

如果存储在 Amazon S3 中的对象没有使用服务器端加密,则该方法将返回空值。

更改现有对象的服务器端加密 (复制操作)

要更改现有对象的加密状态,请复制该对象并删除源对象。默认情况下,复制方法不会加密目标,除非您显式请求服务器端加密。您可以通过在选项哈希参数中指定 server_side_encryption 值来请求加密目标对象,如以下 Ruby 代码示例所示。此代码示例演示如何复制对象和加密副本。

require 'aws-sdk-s3' s3 = Aws::S3::Resource.new(region:'us-west-2') bucket1 = s3.bucket('source-bucket-name') bucket2 = s3.bucket('target-bucket-name') obj1 = bucket1.object('key') obj2 = bucket2.object('key') obj1.copy_to(obj2, :server_side_encryption => 'AES256')

有关如何复制未加密对象的示例,请参阅 使用 适用于 Ruby 的 AWS 开发工具包 复制对象