As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurar o SDK
Na AWS SDK para Go V2, você pode definir configurações comuns para clientes de serviço, como o registrador, o nível do log e a configuração de repetição. A maioria das configurações é opcional. No entanto, para cada cliente de serviço, você deve especificar uma AWS região e suas credenciais. O SDK usa esses valores para enviar solicitações à região correta e assinar solicitações com as credenciais corretas. Você pode especificar esses valores de forma programática no código ou por meio do ambiente de execução.
Carregando AWS arquivos de configuração compartilhados
Há várias maneiras de inicializar um cliente de API de serviço, mas o padrão mais comum recomendado aos usuários é o indicado a seguir.
Para configurar o SDK para usar os arquivos de configuração AWS compartilhados, use o código a seguir:
import ( "context" "log" "github.com/aws/aws-sdk-go-v2/config" ) // ... cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { log.Fatalf("failed to load configuration, %v", err) }
config.LoadDefaultConfig(context.TODO())construirá um AWS.configaws.Config carregado, fornecendo um padrão consistente para a construção de clientes.
Para obter mais informações sobre arquivos de configuração AWS compartilhados, consulte Configuração no Guia de Referência de Ferramentas AWS SDKs e Ferramentas.
Especificando a região AWS
Ao especificar a região, você determina para onde enviar solicitações, como us-west-2 ou us-east-2. Consulte uma lista de regiões para cada serviço em Cotas e endpoints de serviço na Referência geral da Amazon Web Services.
O SDK não tem uma região padrão. Como especificar uma região:
-
Defina a variável de ambiente
AWS_REGIONpara a região padrão. -
Defina a região explicitamente usando a configuração. WithRegion
como argumento para config.LoadDefaultConfigcarregar a configuração.
REVISÃO: se você definir uma região usando todas essas técnicas, o SDK usará a região que você especificou explicitamente.
Configurar a região com variável de ambiente
Linux, macOS ou Unix
export AWS_REGION=us-west-2
Windows
set AWS_REGION=us-west-2
Especificar a região de forma programática
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
Especificação de credenciais
As credenciais AWS SDK para Go necessárias (uma chave de acesso e uma chave de acesso secreta) para assinar solicitações. AWSÉ possível especificar as credenciais em vários locais, dependendo do caso de uso específico. Consulte mais informações sobre como obter as credenciais em Conceitos básicos do AWS SDK para Go.
Quando você inicializa uma aws.Config instância usandoconfig.LoadDefaultConfig, o SDK usa sua cadeia de credenciais padrão para encontrar credenciais. AWS Essa cadeia de credenciais padrão procura credenciais na seguinte ordem:
-
Variáveis de ambiente.
-
Credenciais estáticas (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKEN) -
Token de identidade da web (
AWS_WEB_IDENTITY_TOKEN_FILE)
-
-
Arquivos de configuração compartilhados.
-
O SDK usa como padrão o arquivo
credentialsna pasta.awsque é colocada na pasta inicial do computador. -
O SDK usa como padrão o arquivo
configna pasta.awsque é colocada na pasta inicial do computador.
-
-
Se seu aplicativo usa uma definição de tarefa ou operação de RunTask API do Amazon ECS, a função do IAM para tarefas.
-
Se seu aplicativo estiver sendo executado em uma EC2 instância da Amazon, a função IAM é para a Amazon EC2.
O SDK detecta e usa os provedores integrados automaticamente, sem exigir configurações manuais. Por exemplo, se você usa funções do IAM para EC2 instâncias da Amazon, seus aplicativos usam automaticamente as credenciais da instância. Você não precisa configurar credenciais manualmente na aplicação.
Como prática recomendada, AWS recomenda que você especifique as credenciais na seguinte ordem:
-
Use funções do IAM para tarefas se seu aplicativo usar uma definição de tarefa ou operação de RunTask API do Amazon ECS.
-
Use funções do IAM para a Amazon EC2 (se seu aplicativo estiver sendo executado em uma EC2 instância da Amazon).
As funções do IAM fornecem aos aplicativos na instância credenciais de segurança temporárias para fazer AWS chamadas. As funções do IAM fornecem uma maneira fácil de distribuir e gerenciar credenciais em várias EC2 instâncias da Amazon.
-
Use arquivos configurações ou credenciais compartilhados.
As credenciais e os arquivos de configuração são compartilhados entre outros e. AWS SDKs AWS CLI Como prática recomendada de segurança, recomendamos o uso do arquivo de credenciais para definir valores confidenciais, como chave de acesso IDs e chaves secretas. Aqui estão os requisitos de formatação para cada um desses arquivos.
-
Use variáveis de ambiente.
Definir variáveis de ambiente é útil se você estiver fazendo um trabalho de desenvolvimento em uma máquina que não seja uma EC2 instância da Amazon.
Funções do IAM para tarefas
Se a aplicação usa uma definição de tarefa do Amazon ECS ou a operação RunTask, use Perfis do IAM para tarefas para especificar um perfil do IAM que pode ser usado pelos contêineres em uma tarefa.
Funções do IAM para EC2 instâncias da Amazon
Se você estiver executando seu aplicativo em uma EC2 instância da Amazon, use a função IAM da instância para obter credenciais de segurança temporárias para as quais fazer AWS chamadas.
Se você configurou a instância para usar perfis do IAM, o SDK usa essas credenciais para a aplicação automaticamente. Você não precisa especificar essas credenciais manualmente.
Credenciais e configurações compartilhadas
As credenciais compartilhadas e os arquivos de configuração podem ser usados para compartilhar configurações comuns entre outras AWS SDKs ferramentas. Se usar credenciais diferentes para diferentes ferramentas ou aplicativos, você poderá usar perfis para configurar várias chaves de acesso no mesmo arquivo de configuração.
Você pode fornecer vários locais de arquivos de configurações ou credenciais usando config.LoadOptions, por padrão, o SDK carrega arquivos armazenados nos locais padrão mencionados em Especificação de credenciais.
import ( "context" "github.com/aws/aws-sdk-go-v2/config" ) // ... cfg , err := config.LoadDefaultConfig(context.TODO(), config.WithSharedCredentialsFiles( []string{"test/credentials", "data/credentials"}, ), config.WithSharedConfigFiles( []string{"test/config", "data/config"}, ) )
Ao trabalhar com arquivos de configurações e credenciais compartilhados, se perfis duplicados forem especificados, eles serão combinados para resolver um perfil. Em caso de conflito de combinação,
-
Se perfis duplicados forem especificados em um mesmo credentials/config arquivo, as propriedades do perfil especificadas no último perfil terão precedência.
-
Se perfis duplicados forem especificados em vários arquivos de credenciais ou em vários arquivos de configurações, as propriedades do perfil serão resolvidas de acordo com a ordem de entrada do arquivo em
config.LoadOptions. As propriedades do perfil nos últimos arquivos têm precedência. -
Se existir um perfil no arquivo de credenciais e no arquivo de configurações, as propriedades do arquivo de credenciais terão precedência.
Se necessário, você pode habilitar LogConfigurationWarnings em config.LoadOptions e registrar em log as etapas de resolução do perfil.
Criar o arquivo de credenciais
Se você não tem um arquivo de credenciais compartilhado (.aws/credentials), use qualquer editor de texto para criar um em seu diretório inicial. Adicione o conteúdo a seguir ao seu arquivo de credenciais, substituindo-o por <YOUR_ACCESS_KEY_ID> suas credenciais. <YOUR_SECRET_ACCESS_KEY>
[default] aws_access_key_id =<YOUR_ACCESS_KEY_ID>aws_secret_access_key =<YOUR_SECRET_ACCESS_KEY>
O cabeçalho [default] define as credenciais do perfil padrão, que o SDK usará a menos que você o configure para usar outro perfil.
Você também pode usar credenciais de segurança temporárias adicionando os tokens da sessão ao perfil, conforme mostrado no seguinte exemplo:
[temp] aws_access_key_id =<YOUR_TEMP_ACCESS_KEY_ID>aws_secret_access_key =<YOUR_TEMP_SECRET_ACCESS_KEY>aws_session_token =<YOUR_SESSION_TOKEN>
O nome da seção de um perfil não padrão em um arquivo de credenciais não deve começar com a palavra profile. Você pode ler mais em AWS SDKs e no Guia de referência de ferramentas.
Criar o arquivo de configurações
Se você não tem um arquivo de credenciais compartilhado (.aws/config), use qualquer editor de texto para criar um em seu diretório inicial. Adicione o conteúdo a seguir ao seu arquivo de configuração, <REGION> substituindo-o pela região desejada.
[default] region =<REGION>
O cabeçalho [default] define as configurações do perfil padrão, que o SDK usará a menos que você o configure para usar outro perfil.
Você pode usar perfis nomeados, conforme mostrado no seguinte exemplo:
[profile named-profile] region =<REGION>
O nome da seção de um perfil não padrão em um arquivo de configurações deve sempre começar com a palavra profile, seguida pelo nome do perfil pretendido. Você pode ler mais no Guia de referência de ferramentas AWS SDKs e ferramentas.
Especificar perfis
Você pode incluir várias chaves de acesso no mesmo arquivo de configuração associando cada conjunto de chaves de acesso a um perfil. Por exemplo, no arquivo de credenciais, você pode declarar vários perfis, conforme indicado a seguir.
[default] aws_access_key_id = <YOUR_DEFAULT_ACCESS_KEY_ID> aws_secret_access_key = <YOUR_DEFAULT_SECRET_ACCESS_KEY> [test-account] aws_access_key_id = <YOUR_TEST_ACCESS_KEY_ID> aws_secret_access_key = <YOUR_TEST_SECRET_ACCESS_KEY> [prod-account] ; work profile aws_access_key_id = <YOUR_PROD_ACCESS_KEY_ID> aws_secret_access_key = <YOUR_PROD_SECRET_ACCESS_KEY>
Por padrão, o SDK verifica a variável de ambiente AWS_PROFILE para determinar qual perfil usar. Se nenhuma variável AWS_PROFILE for definida, o SDK usará o perfil default.
Às vezes, você pode querer usar um perfil diferente com a aplicação. Por exemplo, você quer usar as credenciais test-account com a aplicação myapp. Você pode usar esse perfil utilizando o seguinte comando:
$ AWS_PROFILE=test-account myapp
Você também pode instruir o SDK a selecionar um perfil chamando os.Setenv("AWS_PROFILE", "test-account") antes de chamar config.LoadDefaultConfig ou passando um perfil explícito como um argumento, conforme mostrado no seguinte exemplo:
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithSharedConfigProfile("test-account"))
nota
Se você especificar credenciais em variáveis de ambiente, o SDK sempre usará essas credenciais, independentemente do perfil especificado.
Variáveis de ambiente
Por padrão, o SDK detecta as AWS credenciais definidas em seu ambiente e as usa para assinar solicitações. AWS Dessa maneira, você não precisa gerenciar credenciais nas aplicações.
O SDK procura credenciais nas seguintes variáveis de ambiente:
-
AWS_ACCESS_KEY_ID -
AWS_SECRET_ACCESS_KEY -
AWS_SESSION_TOKEN(opcional)
Os exemplos a seguir mostram como configurar as variáveis de ambiente.
Linux, OSX ou UNIX
$ export AWS_ACCESS_KEY_ID=YOUR_AKID $ export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY $ export AWS_SESSION_TOKEN=TOKEN
Windows
> set AWS_ACCESS_KEY_ID=YOUR_AKID > set AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY > set AWS_SESSION_TOKEN=TOKEN
Especificar credenciais de forma programática
config.LoadDefaultConfigpermite que você forneça uma lei explícita. CredentialProvidercustomProvider fizer referência a uma instância de implementação aws.CredentialProvider, ela poderá ser passada durante o carregamento da configuração da seguinte forma:
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithCredentialsProvider(customProvider))
Se você fornecer credenciais explicitamente, como neste exemplo, o SDK usará somente essas credenciais.
nota
Todos os provedores de credenciais passados ou devolvidos LoadDefaultConfig são CredentialsCacheaws.Config diretamente, também deverá agrupar explicitamente o provedor com esse tipo usando. NewCredentialsCache
Credenciais estáticas
Você pode codificar as credenciais em seu aplicativo usando as credenciais. NewStaticCredentialsProvider
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("AKID", "SECRET_KEY", "TOKEN")), )
Atenção
Não incorpore credenciais em uma aplicação. Use esse método apenas para fins de teste.
Credenciais de autenticação única
O SDK fornece um provedor de credenciais para recuperar credenciais temporárias AWS usando. Centro de Identidade do AWS IAM Usando o AWS CLI, você se autentica com o portal de AWS acesso e autoriza o acesso às credenciais temporárias AWS . Em seguida, você configura seu aplicativo para carregar o perfil de login único (SSO), e o SDK usa suas credenciais de SSO para recuperar AWS credenciais temporárias que serão renovadas automaticamente se expirarem. Se suas credenciais de SSO expirarem, você deverá renová-las explicitamente fazendo login na sua conta do IAM Identity Center novamente usando o. AWS CLI
Por exemplo, você pode criar um perfildev-profile, autenticar e autorizar esse perfil usando o AWS CLI e configurar seu aplicativo conforme mostrado abaixo.
-
Primeiro, crie
profileesso-session.
[profile dev-profile] sso_session = dev-session sso_account_id = 012345678901 sso_role_name = Developer region = us-east-1 [sso-session dev-session] sso_region = us-west-2 sso_start_url = https://company-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access
-
Faça login usando o AWS CLI para autenticar e autorizar o perfil SSO.
$ aws --profile dev-profile sso login Attempting to automatically open the SSO authorization page in your default browser. If the browser does not open or you wish to use a different device to authorize this request, open the following URL: https://device.sso.us-west-2.amazonaws.com/ Then enter the code: ABCD-EFGH Successully logged into Start URL: https://company-sso-portal.awsapps.com/start
-
Depois, configure a aplicação para usar o perfil de SSO.
import "github.com/aws/aws-sdk-go-v2/config" // ... cfg, err := config.LoadDefaultConfig( context.Background(), config.WithSharedConfigProfile("dev-profile"), ) if err != nil { return err }
Para obter mais informações sobre como configurar perfis de SSO e autenticar usando o, AWS CLI consulte Configurando o AWS CLI para uso Centro de Identidade do AWS IAM no Guia do usuário. AWS CLI
Consulte mais informações sobre a construção programática do provedor de credenciais de SSO na documentação de referência da API ssocreds
Credenciais de login
Você pode usar suas credenciais de login existentes do AWS Management Console para acesso programático aos serviços. AWS Depois de um fluxo de autenticação baseado em navegador, AWS gera credenciais temporárias que funcionam em ferramentas de desenvolvimento locais, como a CLI e. AWS Ferramentas da AWS para PowerShell AWS SDKs Esse recurso simplifica o processo de configuração e gerenciamento de credenciais de AWS CLI, especialmente se você preferir a autenticação interativa em vez de gerenciar chaves de acesso de longo prazo.
-
Inicie o fluxo de login usando a AWS CLI e siga as instruções do navegador. Neste exemplo, salvamos a sessão de login em um novo perfildev-profile, mas isso é opcional.
$ aws --profile dev-profile login -
(Opcional) Inspecione seu arquivo de configuração AWS compartilhado para verificar se a sessão foi estabelecida.
[profile dev-profile] login_session = arn:aws:sts::account id>:role -
Em seguida, configure seu aplicativo para usar o perfil de login.
import "github.com/aws/aws-sdk-go-v2/config" // ... cfg, err := config.LoadDefaultConfig( context.Background(), // only necessary if login session is saved to a non-default profile config.WithSharedConfigProfile("dev-profile"), ) if err != nil { return err }
Para obter mais informações sobre como configurar perfis de login e autenticar usando a AWS CLI, consulte Login para desenvolvimento AWS local usando credenciais de console.
Outros provedores de credenciais
O SDK fornece outros métodos para recuperar credenciais no módulo de credenciais
Provedores de credenciais disponíveis:
-
ec2rolecreds
— Recupere credenciais de funções de instâncias da Amazon por meio do Amazon IMDS. EC2 EC2 -
endpointcreds
: recupere credenciais de um endpoint HTTP arbitrário. -
processcreds
: recupere credenciais de um processo externo que será invocado pelo shell do ambiente de host. -
stscreds
— Recupere credenciais de AWS STS