Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

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

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

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

Copy
require 'aws-sdk' 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 开发工具包 上传对象

确定使用的加密算法

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

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

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

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

要更改现有对象的加密状态,请复制该对象并删除源对象。Ruby API S3Object 类提供了用于复制对象的 #copy_from#copy_to 方法。请注意,默认情况下,复制方法不会加密目标对象,除非您显式请求了服务器端加密。您可以通过在选项哈希参数中指定 server_side_encryption 值来请求加密目标对象 (如下面的 Ruby 代码示例所示)。此代码示例演示了如何使用 #copy_to 方法。

Copy
require 'aws-sdk' 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 开发工具包 复制对象