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.

使用 AWS 软件开发工具包在 Amazon S3 中指定 AWS Key Management Service

当使用 AWS 开发工具包时,您可以请求 Amazon S3 使用 AWS Key Management Service (AWS KMS) 托管加密密钥。此部分提供的示例演示了如何使用适用于 Java 和 .NET 的 AWS 开发工具包。有关其他开发工具包的信息,请转到示例代码和库

适用于 Java 的 AWS 开发工具包

本节介绍使用适用于 Java 的 AWS 开发工具包进行的各种 Amazon S3 操作以及如何使用 AWS KMS 托管加密密钥。

Put 操作

当使用适用于 Java 的 AWS 开发工具包上传对象时,您可以通过添加 SSEAwsKeyManagementParams 属性请求 Amazon S3 使用 AWS KMS 托管加密密钥,如以下请求所示:

Copy
PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());

这种情况下,Amazon S3 使用默认主密钥 (参阅 使用具有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) 保护数据)。您可以选择创建自己的密钥并在请求中指定该密钥。

Copy
PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));

有关创建密钥的更多信息,请转到 AWS Key Management Service Developer Guide 中的编程 AWS KMS API

有关上传对象的工作代码示例,请参阅以下主题。您将需要更新这些代码示例并提供加密信息,如上述代码片段所示。

复制操作

在复制对象时,您将添加相同的请求属性 (ServerSideEncryptionMethodServerSideEncryptionKeyManagementServiceKeyId) 来请求 Amazon S3 使用 AWS KMS 托管加密密钥。有关复制对象的更多信息,请参阅 复制对象

预签名 URL

在为使用 AWS KMS 托管加密密钥加密的对象创建预签名 URL 时,您必须显式指定签名版本 4:

Copy
ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setSignerOverride("AWSS3V4SignerType"); AmazonS3Client s3client = new AmazonS3Client( new ProfileCredentialsProvider(), clientConfiguration); ...

有关代码示例,请参阅 使用AWS SDK for Java生成预签名对象 URL

适用于 .NET 的 AWS 开发工具包

本节介绍使用适用于 .NET 的 AWS 开发工具包进行的各种 Amazon S3 操作以及如何使用 AWS KMS 托管加密密钥。

Put 操作

当使用适用于 .NET 的 AWS 开发工具包上传对象时,您可以通过添加 ServerSideEncryptionMethod 属性请求 Amazon S3 使用 AWS KMS 托管加密密钥,如以下请求所示:

Copy
PutObjectRequest putRequest = new PutObjectRequest { BucketName = bucketName, Key = keyName, // other properties. ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS };

这种情况下,Amazon S3 使用默认主密钥 (参阅 使用具有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) 保护数据)。您可以选择创建自己的密钥并在请求中指定该密钥。

Copy
PutObjectRequest putRequest1 = new PutObjectRequest { BucketName = bucketName, Key = keyName, // other properties. ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS, ServerSideEncryptionKeyManagementServiceKeyId = keyId };

有关创建密钥的更多信息,请参阅 AWS Key Management Service Developer Guide 中的 AWS KMS API 编程

有关上传对象的工作代码示例,请参阅以下主题。您将需要更新这些代码示例并提供加密信息,如上述代码片段所示。

复制操作

在复制对象时,您将添加相同的请求属性 (ServerSideEncryptionMethodServerSideEncryptionKeyManagementServiceKeyId) 来请求 Amazon S3 使用 AWS KMS 托管加密密钥。有关复制对象的更多信息,请参阅 复制对象

预签名 URL

在为使用 AWS KMS 托管加密密钥加密的对象创建预签名 URL 时,您必须显式指定签名版本 4:

Copy
AWSConfigs.S3Config.UseSignatureVersion4 = true;

有关代码示例,请参阅 使用适用于 .NET 的 AWS 开发工具包生成预签名对象 URL