

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 开始使用 适用于 Go 的 AWS SDK
<a name="getting-started"></a>

 适用于 Go 的 AWS SDK 需要 Go 1.23 或更高版本。可通过运行以下命令来查看当前 Go 版本：

```
go version
```

 有关安装或升级 Go 版本的信息，请参阅 Go 文档中的[下载和安装](https://go.dev/doc/install)。

## 注册 Amazon 账户
<a name="get-an-amazon-account"></a>

 您必须拥有 Amazon 账户，才能使用适用于 Go 的 AWS SDK v2。有关详细信息，请参阅[创建 AWS 账户](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html)。

## 安装适用于 Go 的 AWS SDK v2
<a name="install-the-aws-sdk-for-go-v2"></a>

 适用于 Go 的 AWS SDK v2 使用 Go 模块，这是 Go 1.11 中引入的一项功能。通过运行以下命令来初始化您的本地项目。

```
go mod init example
```

 初始化 Go 模块项目后，您将能够使用 `go get` 命令检索 SDK 及其所需的依赖项。这些依赖项将记录在上一个命令创建的 `go.mod` 文件中。

 以下命令演示了如何检索要在应用程序中使用的标准 SDK 模块集。

```
go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
```

 这将检索核心 SDK 模块和用于加载 AWS 共享配置的配置模块。

 接下来，您可以安装应用程序所需的一个或多个 AWS 服务 API 客户端。所有 API 客户端都位于 `github.com/aws/aws-sdk-go-v2/service` 导入层次结构下。可以在[此处](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service)找到一整套当前支持的 API 客户端。要安装服务客户端，请执行以下命令来检索模块并在 `go.mod` 文件中记录依赖项。在此示例中，我们检索了 Amazon S3 API 客户端。

```
go get github.com/aws/aws-sdk-go-v2/service/s3
```

## 获取您的 AWS 访问密钥
<a name="get-your-aws-access-keys"></a>

 访问密钥包含访问密钥 ID 和秘密访问密钥，用于签署对 AWS 发出的编程请求。如果没有访问密钥，您可以使用 [AWS 管理控制台](https://console.aws.amazon.com/console/home)来创建。我们建议您使用 IAM 访问密钥而不是 AWS 根账户访问密钥。IAM 让您可以安全地控制对您AWS账户中的AWS服务和资源的访问。

**注意**  
要创建访问密钥，您必须拥有执行所需 IAM 操作的权限。有关更多信息，请参阅《IAM 用户指南》中的[访问 IAM 资源所需的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions-required.html)。

### 获取访问密钥 ID 和秘密访问密钥。
<a name="to-get-your-access-key-id-and-secret-access-key"></a>

1.  打开 [IAM 管理控制台](https://console.aws.amazon.com/iam/home)。

1.  在导航菜单上，选择**用户**。

1.  选择您的 IAM 用户名称 (而不是复选框)。

1.  打开**安全凭证**选项卡，然后选择**创建访问密钥**。

1.  要查看新的访问密钥，请选择**显示**。您的凭证与下面类似：
   +  访问密钥 ID：`AKIAIOSFODNN7EXAMPLE`
   +  秘密访问密钥：`wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`

1.  要下载密钥对，请选择 **Download .csv file**（下载 .csv 文件）。将密钥存储在安全位置。

**警告**  
 请对密钥保密以保护您的 AWS 账户，切勿与组织以外的任何人共享密钥。

### 相关主题
<a name="related-topics"></a>
+  《IAM 用户指南》中的[什么是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。
+  《Amazon Web Services 一般参考》中的 [AWS 安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html)。

## 调用一项操作
<a name="invoke-an-operation"></a>

 安装 SDK 后，您可以将 AWS 程序包导入 Go 应用程序以使用该 SDK，如以下示例所示，该示例导入 AWS、Config 和 Amazon S3 库。导入 SDK 程序包后，将加载 AWS SDK 共享配置，构造客户端，并调用 API 操作。

```
package main

import (
    "context"
    "log"
    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/s3"
)

func main() {
    // Load the Shared AWS Configuration (~/.aws/config)
    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
        log.Fatal(err)
    }

    // Create an Amazon S3 service client
    client := s3.NewFromConfig(cfg)

    // Get the first page of results for ListObjectsV2 for a bucket
    output, err := client.ListObjectsV2(context.TODO(), &s3.ListObjectsV2Input{
        Bucket: aws.String("amzn-s3-demo-bucket"),
    })
    if err != nil {
        log.Fatal(err)
    }

    log.Println("first page results")
    for _, object := range output.Contents {
        log.Printf("key=%s size=%d", aws.ToString(object.Key), *object.Size)
    }
}
```