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

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

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

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

# The following example demonstrates how to specify that a file uploaded to Amazon S3 be encrypted at rest. require 'aws-sdk-s3' regionName = 'us-west-2' bucketName = 'my-bucket' key = 'key' filePath = 'local/path/to/file' encryptionType = 'AES256' s3 = Aws::S3::Resource.new(region:regionName) obj = s3.bucket(bucketName).object(key) obj.upload_file(filePath, :server_side_encryption => encryptionType)

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

确定使用的加密算法

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

# Determine server-side encryption of an object. require 'aws-sdk-s3' regionName = 'us-west-2' bucketName='bucket-name' key = 'key' s3 = Aws::S3::Resource.new(region:regionName) enc = s3.bucket(bucketName).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' regionName = 'us-west-2' encryptionType = 'AES256' s3 = Aws::S3::Resource.new(region:regionName) bucket1 = s3.bucket('source-bucket-name') bucket2 = s3.bucket('target-bucket-name') obj1 = bucket1.object('Bucket1Key') obj2 = bucket2.object('Bucket2Key') obj1.copy_to(obj2, :server_side_encryption => encryptionType)

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