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

使用 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 托管加密密钥,如以下请求所示:

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

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

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:

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 托管加密密钥,如以下请求所示:

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

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

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:

AWSConfigs.S3Config.UseSignatureVersion4 = true;

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