使用 Amazon 开发工具包和浏览器进行 Amazon S3 开发 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon 开发工具包和浏览器进行 Amazon S3 开发

使用 Amazon S3 开发应用程序时,您可以使用 Amazon 开发工具包。Amazon SDK 包装了底层 REST API,可以简化您的编程任务。还提供 Amazon 移动开发工具包和 Amazon Amplify JavaScript 库,用于使用 Amazon 构建互连移动和 Web 应用程序。

本节提供了使用 Amazon 开发工具包来开发 Amazon S3 应用程序的概述。本节还描述了如何测试本指南中提供的 Amazon 开发工具包代码示例。

除了 Amazon 开发工具包外,Amazon Explorer 也适用于 Visual Studio 和 Eclipse for Java IDE。在此情况下,可以将开发工具包和 Explorer 捆绑在一起来作为 Amazon 工具包。

您也可以使用 Amazon Command Line Interface (Amazon CLI) 来管理 Amazon S3 存储桶和对象。

Amazon Toolkit for Eclipse

Amazon Toolkit for Eclipse 包含 Amazon SDK for Java 和 Amazon Explorer for Eclipse。Amazon Explorer for Eclipse 是适用于 Eclipse for Java IDE 的开源插件,能够让开发人员更轻松地使用 Amazon 开发、调试和部署 Java 应用程序。易于使用的 GUI 使您可以访问和管理您的 Amazon 基础设施,包括 Amazon S3。在 Eclipse for Java IDE 环境中,您可以在开发应用程序的同时,执行常见的操作(例如管理您的存储桶和对象,以及设置 IAM 策略)。有关设置说明,请参阅设置工具包。有关使用 Explorer 的示例,请参阅如何访问 Amazon Explorer

Amazon Toolkit for Visual Studio

Amazon Explorer for Visual Studio 是针对 Microsoft Visual Studio 的扩展,使开发人员能够更容易地使用亚马逊云科技来开发、调试和部署 .NET 应用程序。易于使用的 GUI 使您可以访问和管理您的 Amazon 基础设施,包括 Amazon S3。在 Visual Studio 环境中,您可以在开发应用程序的同时,执行常见的操作(例如管理您的存储桶和对象,或设置 IAM 策略)。有关设置说明,请参阅设置 Amazon Toolkit for Visual Studio。有关通过 Explorer 使用 Amazon S3 的示例,请参阅从 Amazon Explorer 使用 Amazon S3

Amazon开发工具包

您只能下载开发工具包。有关下载开发工具包库的信息,请参阅示例代码库

Amazon CLI

Amazon CLI 是用于管理您的 Amazon 服务(包括 Amazon S3)的统一工具。有关下载 Amazon CLI 的信息,请参阅 Amazon Command Line Interface

将此服务与 Amazon SDK 结合使用

Amazon 软件开发工具包(SDK)适用于许多常用编程语言。每个软件开发工具包都提供 API、代码示例和文档,使开发人员能够更轻松地以其首选语言构建应用程序。

有关特定于此服务的示例,请参阅适用于使用 Amazon 软件开发工具包的 Amazon S3 的代码示例

在请求身份验证中指定签名版本

Amazon S3 在大多数 Amazon Web Services 区域 中只支持 Amazon Signature Version 4。不过,在某些较旧的 Amazon Web Services 区域 中,Amazon S3 同时支持 Signature Version 4 和 Signature Version 2。但是,签名版本 2 将要被关闭(弃用)。有关结束对签名版本 2 支持的更多信息,请参阅Amazon已为 Amazon S3 关闭(弃用) Signature Version 2

有关所有 Amazon S3 区域的列表以及这些区域支持的 Signature Version,请参阅《Amazon 一般参考》中的区域和终端节点

对于所有 Amazon Web Services 区域,默认情况下,Amazon 开发工具包使用 Signature Version 4 对请求进行身份验证。如果使用 2016 年 5 月之前发布的 Amazon 开发工具包,您可能需要请求 Signature Version 4,如下表所示。

开发工具包 请求使用签名版本 4 进行请求身份验证
Amazon CLI

对于默认配置文件,运行以下命令:

$ aws configure set default.s3.signature_version s3v4

对于自定义配置文件,运行以下命令:

$ aws configure set profile.your_profile_name.s3.signature_version s3v4
Java 软件开发工具包

在代码中添加以下内容:

System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");

或者在命令行中指定以下内容:

-Dcom.amazonaws.services.s3.enableV4
JavaScript 开发工具包

在构建客户端时,将 signatureVersion 参数设置为 v4

var s3 = new AWS.S3({signatureVersion: 'v4'});
PHP 开发工具包

在为 PHP 开发工具包 v2 构建 Amazon S3 服务客户端时,将 signature 参数设置为 v4

<?php $client = S3Client::factory([ 'region' => 'YOUR-REGION', 'version' => 'latest', 'signature' => 'v4' ]);

使用 PHP 开发工具包 v3 时,在构建 Amazon S3 服务客户端期间将 signature_version 参数设置为 v4

<?php $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'YOUR-REGION', 'signature_version' => 'v4' ]);
Ruby 开发工具包

Ruby 开发工具包 – 版本 1:在构建客户端时,将 :s3_signature_version 参数设置为 :v4

s3 = AWS::S3::Client.new(:s3_signature_version => :v4)

Ruby 开发工具包 – 版本 3:在构建客户端时,将 signature_version 参数设置为 v4

s3 = Aws::S3::Client.new(signature_version: 'v4')
.NET 开发工具包

在创建 Amazon S3 客户端之前将以下内容添加到代码中:

AWSConfigsS3.UseSignatureVersion4 = true;

或将以下内容添加到配置文件中:

<appSettings> <add key="AWS.S3.UseSignatureVersion4" value="true" /> </appSettings>

 

Amazon已为 Amazon S3 关闭(弃用) Signature Version 2

但是,Amazon S3 即将关闭(弃用)签名版本 2。之后,Amazon S3 仅接受使用签名版本 4 签名的 API 请求。

本部分提供有关结束签名版本 2 支持的常见问题解答。

什么是签名版本 2/4,以及这对于签名请求意味着什么?

签名版本 2 或签名版本 4 签名过程用于对 Amazon S3 API 请求进行身份验证。签名请求使得 Amazon S3 可以确定谁在发送请求并保护您的请求免遭恶意人士侵害。

有关签署 Amazon 请求的更多信息,请参阅《Amazon Web Services 一般参考》中的签署 Amazon API 请求

进行了哪些更新?

我们当前支持使用签名版本 2 和签名版本 4 过程签名的 Amazon S3 API 请求。在此之后,Amazon S3 将仅接受使用签名版本 4 签名的请求。

有关签署 Amazon 请求的更多信息,请参阅《Amazon Web Services 一般参考》中的签名版本 4 中的变化

为什么进行这些更新?

签名版本 4 使用签名密钥而非您的秘密访问密钥,提供了更好的安全性。当前所有 Amazon Web Services 区域中都支持 Signature Version 4,而只有在 2014 年 1 月之前推出的区域中支持 Signature Version 2。此更新使得我们可以在所有区域中提供更为一致的体验。

如何确保我使用的是签名版本 4,需要进行哪些更新?

对请求进行签名所用的签名版本通常由客户端上的工具或开发工具包设置。默认情况下,Amazon 开发工具包的最新版本使用 Signature Version 4。对于第三方软件,请联系您软件的相应支持团队以确认所需的版本。如果您向 Amazon S3 发送直接 REST 调用,则必须修改应用程序以使用签名版本 4 签名过程。

有关在转向 Signature Version 4 时所用 Amazon 开发工具包版本的信息,请参阅 从签名版本 2 转向签名版本 4

有关将 Signature Version 4 与 Amazon S3 REST API 结合使用的信息,请参阅《Amazon Simple Storage Service API 参考》中的对请求进行身份验证 (Amazon Signature Version 4)

如果我不更新会怎样?

在此之后使用签名版本 2 签名的请求将无法通过 Amazon S3 的身份验证。请求者将看到错误,说明请求必须使用签名版本 4 签名。

如果我使用要求我签名 7 天以上的预签名 URL,是否应进行更改?

如果您使用了要求您签名 7 天以上的预签名 URL,目前无需任何操作。您可以继续使用 Amazon Signature Version 2 对预签名 URL 进行签名并通过身份验证。我们将后续跟进并提供更多详情,说明如何为预签名 URL 场景迁移签名版本 4。

更多信息

从签名版本 2 转向签名版本 4

如果您为 Amazon S3 API 请求身份验证使用签名版本 2,则应改为使用签名版本 4。对签名版本 2 的支持将结束,如Amazon已为 Amazon S3 关闭(弃用) Signature Version 2中所述。

有关将 Signature Version 4 与 Amazon S3 REST API 结合使用的信息,请参阅《Amazon Simple Storage Service API 参考》中的对请求进行身份验证 (Amazon Signature Version 4)

下表列出了使用签名版本 4 (SigV4) 所需的开发工具包最低版本列表。如果您使用通过 Amazon Java、JavaScript (Node.js) 或 Python (Boto/CLI)开发工具包预签名 URL,则必须设置正确的 Amazon Web Services 区域 并在客户端配置中设置 Signature Version 4。有关在客户端配置中设置 SigV4 的信息,请参阅在请求身份验证中指定签名版本

如果您使用此开发工具包/产品 请升级至此开发工具包版本 客户端是否需要进行代码更改以使用 Sigv4? 指向开发工具包文档的链接

Amazon SDK for Java v1

升级至 Java 1.11.201+ 或 v2。 在请求身份验证中指定签名版本

Amazon SDK for Java v2

无需开发工具包升级。 Amazon SDK for Java

Amazon SDK for .NET v1

升级至 3.1.10 或更高版本。 Amazon SDK for .NET

Amazon SDK for .NET v2

升级至 3.1.10 或更高版本。 Amazon SDK for .NET v2

Amazon SDK for .NET v3

升级至 3.3.0.0 或更高版本。 Amazon SDK for .NET v3

Amazon SDK for JavaScript v1

升级至 2.68.0 或更高版本。 Amazon SDK for JavaScript

Amazon SDK for JavaScript v2

升级至 2.68.0 或更高版本。 Amazon SDK for JavaScript

Amazon SDK for JavaScript v3

当前无需任何操作。2019 年 3 季度升级至主要版本 V3。 Amazon SDK for JavaScript

Amazon SDK for PHP v1

建议升级至最新版本的 PHP,或者至少升级至已在 S3 客户端的配置中将签名参数设置为 v4 的 v2.7.4。 Amazon SDK for PHP

Amazon SDK for PHP v2

建议升级至最新版本的 PHP,或者至少升级至已在 S3 客户端的配置中将签名参数设置为 v4 的 v2.7.4。 Amazon SDK for PHP

Amazon SDK for PHP v3

无需开发工具包升级。 Amazon SDK for PHP

Boto2

升级至 Boto2 v2.49.0。 Boto 2 升级

Boto3

升级至 1.5.71 (Botocore)、1.4.6 (Boto3)。 Boto 3 – 适用于 Python 的Amazon开发工具包

Amazon CLI

升级至 1.11.108。 Amazon Command Line Interface

Amazon CLI v2(预览)

无需开发工具包升级。 Amazon Command Line Interface 版本 2

Amazon SDK for Ruby v1

升级至 Ruby V3。 Amazon 的 Ruby V3

Amazon SDK for Ruby v2

升级至 Ruby V3。 Amazon 的 Ruby V3

Amazon SDK for Ruby v3

无需开发工具包升级。 Amazon 的 Ruby V3

Go

无需开发工具包升级。 Amazon SDK for Go

C++

无需开发工具包升级。 Amazon SDK for C++
Amazon Tools for Windows PowerShell 或者 Amazon Tools for PowerShell Core

如果您使用的模块版本早于 3.3.0.0,则必须升级到 3.3.0.0。

要获取版本信息,请使用 Get-Module cmdlet:

Get-Module –Name AWSPowershell Get-Module –Name AWSPowershell.NetCore

要更新 3.3.0.0 版本,请使用 Update-Module cmdlet:

Update-Module –Name AWSPowershell Update-Module –Name AWSPowershell.NetCore

您可以使用有效期超过 7 天的预签名 URL 以将签名版本 2 流量发送到其上。