亚马逊云存储SDK手册_第1页
亚马逊云存储SDK手册_第2页
亚马逊云存储SDK手册_第3页
亚马逊云存储SDK手册_第4页
亚马逊云存储SDK手册_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Amazon S3 存储类别 Amazon S3 提供一系列用于不同用例的存储类别。这包括用于频繁访问数据的通用存储的 Amazon S3 Standard、用于长期但非频繁访问数据的 Amazon S3 Standard Infrequent Access,以及用于长期档案的 Amazon Glacier。Amazon S3 还提供可配置生命周期政策,以便在您数据的生命周期内对其进行管理。一旦设置了政策,您的数据便会自动迁移到最合适的存储类别,而您的应用程序无需任何更改。开始免费使用 AWS创建免费账户 AWS 免费套餐包括为期一年,每月 750 小时 Linux 和 Windows t2.

2、micro 实例的使用时间。要一直享受免费套餐,您只能使用 EC2 微型实例。查看 AWS 免费套餐详细信息 »通用 Amazon S3 Standard 针对频繁访问数据,Amazon S3 Standard 提供较高的持久性、可用性和性能对象存储。由于它带来较低的延迟和较高的吞吐量,Standard 非常适合各种用例,包括云应用程序、动态网站、内容分配、移动和游戏应用程序,以及大数据分析。生命周期管理提供可配置的政策,可将对象自动迁移到最合适 的存储类别。重要功能:· 较低的延迟和较高的吞吐量性能· 经过设计,可为对象实现 99.999999999% 的持久性

3、· 经过设计,可在指定年度内实现 99.99% 的可用性· 以 Amazon S3 服务等级协议作为后盾,以实现可用性。· 支持对转移中的数据和静态数据进行 SSL 加密· 对象自动迁移的生命周期管理Infrequent Access Amazon S3 Standard Infrequent Access Amazon S3 Standard Infrequent Access (Standard IA) 是 Amazon S3 存储类别,用于不频繁访问但在需要时也要求快速访问的数据。Standard IA 提供较高的持久性、吞吐量和较低的 Amazo

4、n S3 Standard 延迟,并且每 GB 的存储价格和检索费用都较低。成本较低且性能出色使得 Standard IA 成为长期存储和备份的理想选择,也非常适用于灾难恢复的数据存储。Standard IA 存储类别被设置在对象级别,并可在相同的存储桶中作为 Standard 数据存在,从而让您可以使用生命周期政策在存储类别间自动转移对象,无需更改任何应用程序。重要功能:· 和 Standard 相同的较低延迟及高吞吐量性能· 经过设计,可为对象实现 99.999999999% 的持久性· 经过设计,可在指定年度内实现 99.9% 的可用性· 以 Am

5、azon S3 服务等级协议作为后盾,以实现可用性。· 支持对转移中的数据和静态数据进行 SSL 加密· 对象自动迁移的生命周期管理存档 Amazon Glacier Amazon Glacier 是一种安全、持久且成本极低的存储服务,适用于数据存档。您可以放心存储任何量的数据 成本与本地解决方案相当,甚至更低。为了保持低成本,Amazon Glacier 已针对极少访问的数据进行优化,适合检索时间需要数小时的情况。针对存储类别间的自动迁移,Amazon Glacier 支持生命周期政策。请参阅 Amazon Glacier 页面获取更多详情。 重要功能:· 经过

6、设计,可为对象实现 99.999999999% 的持久性· 支持对转移中的数据和静态数据进行 SSL 加密· 文件库锁定功能通过可锁定的政策来执行合规性· 设计的成本极低,非常适合长期存档· 对象自动迁移的生命周期管理 标准Standard IAAmazon Glacier设计可实现持久性99.999999999%99.999999999%99.999999999%设计可实现可用性99.99%99.9%不适用可用性 SLA99.9%99%不适用最小对象大小不适用128KB*不适用最低存储持续时间不适用30 天90 天检索费用不适用每检索 1GB

7、每检索 1GB*首字节延迟毫秒毫秒4 小时存储类别对象级别对象级别对象级别生命周期传输是是是* Standard IA 的最小对象大小为 128KB。 较小的对象将按 128KB 的存储量计费。* 您每月可以免费取回月平均 Glacier 存储的 5%(每日量按比例计算)。如果您一个月内要取回的数据量超过该限额,则需要按最低价每 GB 0.01 USD 起支付取回费用。了解更多。低冗余存储 (RRS) 是 Amazon S3 的一个存储选项,使客户能够通过以低于 Amazon S3 标准存储的冗余级别来存储非关键性的可再生数据,从而降低成本。有关低冗余存储 (RRS) 类的信息,请参

8、阅 S3 低冗余详细信息页面。使用服务器端加密保护数据服 务器端加密关乎静态数据加密,即 Amazon S3 在将您的数据写入数据中心内的磁盘时会在对象级别上加密这些数据,并在您访问这些数据时为您解密这些数据。只要您验证了您的请求并且拥有访问权限,您访问 加密和未加密数据元的方式就没有区别。例如,如果您使用预签名的 URL 来共享您的对象,那么对于加密和解密对象,该 URL 的工作方式是相同的。您有三个选项,具体取决于您选择如何管理加密密钥:· 使用具有 Amazon S3 托管密钥的服务器端加密 (SSE-S3) 利用多因素强加密来使用唯一密钥加密每个对象。作为额外的保护,它将使用

9、定期轮换的主密钥加密密钥本身。Amazon S3 服务器端加密使用可用的最强数据块密码之一(即 256 位高级加密标准 (AES-256))来加密您的数据。有关更多信息,请参阅 使用具有 Amazon S3 托管加密密钥的服务器端加密 (SSE-S3) 保护数据。· 使用具有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) 与 SSE-S3 类似,但使用此服务有一些额外好处以及一些额外费用。使用信封密钥(即,保护数据的加密密钥的密钥)需要单独的权限,信封密钥可进一步防止未经授权地访问 S3 中的对象。SSE-KMS 还提供您的密钥的使用时间和使用者的审核跟踪。此外,您可以

10、选择自己创建和管理加密密钥,或使用对您、您所使用的服务和您的工作区域来说具有唯一性的默认 密钥。有关更多信息,请参阅 使用具有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) 保护数据。· 将服务器端加密与客户提供的密钥一起使用 (SSE-C) - 您管理加密密钥,而 Amazon S3 管理加密(在 Amazon S3 对磁盘进行写入时)和解密(在您访问您的对象时)。有关更多信息,请参阅 通过使用客户提供的加密密钥的服务器端加密 (SSE-C) 保护数据。Note在您列出存储桶中的对象时,列表 API 会返回所有对象的列表(无论对象是否加密)。跨区域复制跨区域复制是一项

11、存储桶级别功能,该功能支持跨不同 AWS 区域中的存储桶自动、异步地复制对象。要激活此功能,请向源存储桶添加 replication 配置。在该配置中,您需提供诸如要将对象复制到的目标存储桶等信息。您可以请求 Amazon S3 复制所有对象或具有特定键名称前缀的对象子集。例如,您可以将跨区域复制配置为仅复制具有键名称前缀 Tax/ 的对象。这会使 Amazon S3 复制具有 Tax/doc1 或 Tax/doc2 等键的对象,但不复制具有 Legal/doc3 键的对象。 目 标存储桶中的对象副本是源存储桶中对象的精确副本。它们具有相同键名称和相同元数据 - 例如,创建时间、拥有者、用户定

12、义的元数据、版本 ID、ACL 和存储类别(假设您未在复制配置中为对象副本明确指定不同的存储类别)。Amazon S3 使用 SSL 加密跨 AWS 区域传输中的所有数据。您也可以选择性地指定 Amazon S3 创建对象副本时要使用的存储类别(如果您不指定此存储类别,Amazon S3 将采用源对象的存储类别)。使用案例方案您可能基于各种原因对存储桶配置跨区域复制,这些原因包括:· 合规性要求 虽然 Amazon S3 默认跨多个地理位置较远的可用区存储数据,但是合规性要求所规定的数据存储距离可能更远。通过跨区域复制,可以在远距离 AWS 区域之间复制数据以满足这些合规性要求。 &

13、#183; 最大限度减少延迟 客户处于两个地理位置。为了最大限度缩短访问对象时的延迟,可以在地理位置与用户较近的 AWS 区域中维护对象副本。· 操作原因 您在两个不同区域中具有分析同一组对象的计算集群。您可能选择在这些区域中维护对象副本。或者,如果有成本考虑,您也可以引导 Amazon S3 对对象副本使用 STANDARD_IA 存储类别。有关成本考虑的更多信息,请参阅 Amazon S3 定价。要求跨区域复制的要求:· 源存储桶和目标存储桶必须启用版本控制。有关版本控制的更多信息,请参阅使用版本控制。· 源存储桶和目标存储桶必须处于不同的 AWS 区域。有关

14、可以在其中创建存储桶的 AWS 区域的列表,请参阅 AWS General Reference 中的区域和终端节点。· 源存储桶中的对象只能复制到一个目标存储桶。· Amazon S3 必须有权代表您将对象从源存储桶复制到目标存储桶。 您可以通过创建 Amazon S3 可以代入的 IAM 角色来授予这些权限。必须向此角色授予执行 Amazon S3 操作的权限,以便 Amazon S3 在代入此角色时可以执行复制任务。有关 IAM 角色的更多信息,请参阅创建 IAM 角色。· 如果源存储桶拥有者也是对象的拥有者,则其拥有复制对象的完全权限。否则,源存储桶拥有者必

15、须具有执行 Amazon S3 操作 s3:GetObjectVersion 和 s3:GetObjectVersionACL 的权限才能读取对象和对象 ACL。有关 Amazon S3 操作的更多信息,请参阅在策略中指定权限。有关资源和所有权的更多信息,请参见 Amazon S3 资源。· 如果在跨账户方案(其中的源存储桶和目标存储桶由不同的 AWS 账户拥有)中设置跨区域复制,则源存储桶拥有者必须有权在目标存储桶中复制对象。目标存储桶拥有者需要通过存储桶策略授予这些权限。有关示例,请参阅演练 2:配置跨区域复制(其中源存储桶和目标存储桶由不同 AWS 账户拥有)。复制和不复制的内

16、容本部分说明在对存储桶添加复制配置之后,Amazon S3 会复制以及不复制的内容。复制的内容Amazon S3 会复制以下内容:· 添加复制配置之后创建的任何新对象(除了下一部分中介绍的对象)。· 使用 Amazon S3 托管加密密钥通过服务器端加密创建的对象。还将使用 Amazon S3 托管加密密钥通过服务器端加密对对象的复制副本进行加密。 · Amazon S3 仅复制存储桶拥有者有权读取对象和 ACL 的源存储桶中的对象。有关资源所有权的更多信息,请参见关于资源拥有者。· 所有对象 ACL 更新都会进行复制,不过在 Amazon S3 使两者

17、同步之前可能会存在一些延迟。这仅适用于在向存储桶添加复制配置之后创建的对象。删除操作和跨区域复制如果从源存储桶中删除对象,则跨区域复制行为如下所示:· 如果进行 DELETE 请求而不指定对象版本 ID,则 Amazon S3 会添加删除标记,而跨区域复制会将该标记复制到目标存储桶。有关版本控制和删除标记的更多信息,请参见使用版本控制。· 如果 DELETE 请求指定了要删除的特定对象版本 ID,则 Amazon S3 会在源存储桶中删除该对象版本,但不会在目标存储桶中复制删除操作(换句话说,它不会从目标存储桶中删除同一对象版本)。此行为可防止恶意删除数据。 如何使用适用于

18、 Java 的 AWS 开发工具包设置跨区域复制源 存储桶和目标存储桶由两个不同的 AWS 账户拥有时,可以使用 AWS CLI 或一个 AWS 开发工具包对源存储桶添加复制配置。不能使用控制台添加复制配置,因为在对源存储桶添加复制配置时,控制台不提供指定由另一个 AWS 账户拥有的目标存储桶的方法。有关更多信息,请参见 如何设置跨区域复制。以下适用于 Java 的 AWS 开发工具包代码示例首先向存储桶添加复制配置,然后检索该配置。您需要通过提供存储桶名称和 IAM 角色 ARN 来更新代码。有关如何创建和测试有效示例的说明,请参阅 测试 Java 代码示例。import java.io.I

19、OException;import java.util.HashMap;import java.util.Map;import com.amazonaws.AmazonClientException;import com.amazonaws.AmazonServiceException;import file.ProfileCredentialsProvider;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3Client;impor

20、t com.amazonaws.services.s3.model.BucketReplicationConfiguration;import com.amazonaws.services.s3.model.ReplicationDestinationConfig;import com.amazonaws.services.s3.model.ReplicationRule;import com.amazonaws.services.s3.model.ReplicationRuleStatus;public class CrossRegionReplicationComplete private

21、 static String sourceBucketName = "source-bucket" private static String roleARN = "arn:aws:iam:account-id:role/role-name" private static String destinationBucketArn = "arn:aws:s3:destination-bucket" public static void main(String args) throws IOException AmazonS3 s3Clie

22、nt = new AmazonS3Client(new ProfileCredentialsProvider(); try Map<String, ReplicationRule> replicationRules = new HashMap<String, ReplicationRule>(); replicationRules.put( "a-sample-rule-id", new ReplicationRule() .withPrefix("Tax/") .withStatus(ReplicationRuleStatus.

23、Enabled) .withDestinationConfig( new ReplicationDestinationConfig() .withBucketARN(destinationBucketArn) .withStorageClass(StorageClass.Standard_Infrequently_Accessed) ) ); s3Client.setBucketReplicationConfiguration( sourceBucketName, new BucketReplicationConfiguration() .withRoleARN(roleARN) .withR

24、ules(replicationRules) ); BucketReplicationConfiguration replicationConfig = s3Client.getBucketReplicationConfiguration(sourceBucketName); ReplicationRule rule = replicationConfig.getRule("a-sample-rule-id"); System.out.println("Destination Bucket ARN : " + rule.getDestinationCon

25、fig().getBucketARN(); System.out.println("Prefix : " + rule.getPrefix(); System.out.println("Status : " + rule.getStatus(); catch (AmazonServiceException ase) System.out.println("Caught an AmazonServiceException, which" + " means your request made it " + "

26、;to Amazon S3, but was rejected with an error response" + " for some reason."); System.out.println("Error Message: " + ase.getMessage(); System.out.println("HTTP Status Code: " + ase.getStatusCode(); System.out.println("AWS Error Code: " + ase.getErrorCod

27、e(); System.out.println("Error Type: " + ase.getErrorType(); System.out.println("Request ID: " + ase.getRequestId(); catch (AmazonClientException ace) System.out.println("Caught an AmazonClientException, which means"+ " the client encountered " + "a serio

28、us internal problem while trying to " + "communicate with Amazon S3, " + "such as not being able to access the network."); System.out.println("Error Message: " + ace.getMessage(); 如何查找对象的复制状态在跨区域复制中,您有一个源存储桶(对它配置复制)和一个目标存储桶(Amazon S3 将对象复制到其中)。当您请求这些存储桶中的对象(GET 对象)

29、或对象数据元(HEAD 对象)时,Amazon S3 将在响应中返回 x-amz-replication-status 标头,如下所示: · 如果请求源存储桶中的对象 - Amazon S3 将返回 x-amz-replication-status 标头(如果请求中的对象符合复制条件)。 例如,假设您在复制配置中指定了对象前缀 TaxDocs,从而请求 Amazon S3 复制具有键名称前缀 TaxDocs 的对象。那么,使用此键名称前缀上传的任何对象(例如 TaxDocs/document1.pdf)都符合复制条件。对于使用此键名称前缀请求的任何对象,Amazon S3 将返回 x

30、-amz-replication-status 标头与对象复制状态的以下值之一:PENDING、COMPLETED 或 FAILED。· 如果请求目标存储桶中的对象 - Amazon S3 将 x-amz-replication-status 标头和值 REPLICA(如果请求中的对象是 Amazon S3 创建的副本)。您可以在控制台中、使用 AWS CLI 或以编程方式使用 AWS 开发工具包查找对象复制状态。 · 在控制台中,选择对象,然后选择 Properties 以查看对象属性(包括复制状态)。· 可以使用如下所示的 head-object AWS CL

31、I 命令检索对象元数据信息:aws s3api head-object -bucket source-bucket -key object-key -version-id object-version-id   该命令会返回对象元数据信息(包括 ReplicationStatus),如以下示例响应所示: "AcceptRanges":"bytes", "ContentType":"image/jpeg", "LastModified":"Mon, 23 Mar 2015 21

32、:02:29 GMT", "ContentLength":3191, "ReplicationStatus":"COMPLETED", "VersionId":"jfnW.HIMOfYiD_9rGbSkmroXsFj3fqZ.", "ETag":""6805f2cfc46c0f04559748bb039d69ae"", "Metadata": · 可以使用 AWS 开发工具包检索对象的复制状态。下

33、面是使用适用于 Java 的 AWS 开发工具包和适用于 .NET 的 AWS 开发工具包的代码片段。 o 适用于 Java 的 AWS 开发工具包o GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName, bucketName);o metadataRequest.setKey(key);o ObjectMetadata metadata = s3Client.getObjectMetadata(metadataRequest);oSystem.out.println("Replication Status : " + metadata.getRawMetadataValue(Headers.OBJECT_REPLICATION_STATUS);o 适用于 .NET 的 AWS 开发工具包o GetObjectMetadataRequest getmetadataRequest = new GetObjectMetadataRequ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论