Conceitos básicos do AWS SDK para Go - AWS SDK para Go v2 da

Conceitos básicos do AWS SDK para Go

O AWS SDK para Go requer uma versão mínima do Go 1.23. Veja a versão atual do Go executando este comando:

go version

Consulte informações sobre como instalar ou atualizar sua versão do Go em Download and install na documentação do Go.

Obter uma conta da Amazon

Para poder utilizar o AWS SDK para Go v2, é necessário ter uma conta da Amazon. Consulte detalhes em Criar uma conta da AWS.

Instalar o AWS SDK para Go v2

O AWS SDK para Go v2 usa módulos Go, que foi um recurso introduzido no Go 1.11. Inicialize o projeto local executando o comando Go a seguir.

go mod init example

Depois de inicializar seu projeto do módulo Go, você poderá recuperar o SDK e suas dependências necessárias usando o comando go get. Essas dependências serão registradas no arquivo go.mod que foi criado pelo comando anterior.

Os comandos a seguir mostram como recuperar o conjunto padrão de módulos do SDK para usar na aplicação.

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

Isso recupera o módulo principal do SDK e o módulo de configuração que é usado para carregar a configuração compartilhada da AWS.

Depois, você pode instalar um ou mais clientes de API de serviço da AWS exigidos pela aplicação. Todos os clientes da API estão localizados na hierarquia de importação de github.com/aws/aws-sdk-go-v2/service. Um conjunto completo de clientes de API atualmente compatíveis pode ser encontrado aqui. Para instalar um cliente de serviço, execute o comando a seguir para recuperar o módulo e registrar a dependência no arquivo go.mod. Neste exemplo, recuperamos o cliente da API do Amazon S3.

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

Obter suas chaves de acesso da AWS

As chaves de acesso consistem em um ID da chave de acesso e uma chave de acesso secreta, que são usados para assinar solicitações programáticas feitas por você à AWS. Se não tiver chaves de acesso, você poderá criá-las usando o Console de Gerenciamento da AWS. Recomendamos usar as chaves de acesso do IAM, em vez de usar as chaves de acesso da conta root da AWS. O IAM permite que você controle com segurança o acesso aos serviços e recursos da AWS em sua conta da AWS.

nota

Para criar chaves de acesso, você deve ter permissões para realizar as ações do IAM necessárias. Consulte mais informações em Permissões necessárias para acessar recursos do IAM no Guia do usuário do IAM.

Como obter o ID da chave de acesso e a chave de acesso secreta.

  1. Abra o console do IAM.

  2. No menu de navegação, selecione Users (Usuários).

  3. Selecione seu nome de usuário do IAM (não a caixa de seleção).

  4. Abra a guia Security credentials (Credenciais de segurança) e, em seguida, selecione Create access key (Criar chave de acesso).

  5. Para ver a nova chave de acesso, escolha Mostrar. Suas credenciais são semelhantes ao seguinte:

    • ID de chave de acesso: AKIAIOSFODNN7EXAMPLE

    • Chave de acesso secreta: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

  6. Para baixar o par de chaves, escolha Baixar arquivo .csv. Armazene as chaves em um lugar seguro.

Atenção

Mantenha a confidencialidade das chaves para proteger a conta da AWS e nunca as compartilhe com ninguém de fora da organização.

Invocar uma operação

Depois de instalar o SDK, você importa pacotes da AWS nas aplicações Go para usar o SDK, conforme mostrado no exemplo a seguir, que importa as bibliotecas da AWS, do Config e do Amazon S3. Depois de importar os pacotes do SDK, a configuração compartilhada do AWS SDK é carregada, um cliente é construído e uma operação de API é invocada.

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) } }