Usar arquivos compartilhados config e credentials para configurar globalmente SDKs e ferramentas da AWS - SDKs e ferramentas da AWS

Usar arquivos compartilhados config e credentials para configurar globalmente SDKs e ferramentas da AWS

Os arquivos compartilhados AWS e config da credentials são a forma mais comum de especificar a autenticação e a configuração de um SDK ou uma ferramenta da AWS.

Os arquivos compartilhados config e credentials contêm um conjunto de perfis. Um perfil é um conjunto de configurações, em pares de chave e valor, usado pelos SDKs da AWS, pela AWS Command Line Interface (AWS CLI) e por outras ferramentas da . Os valores de configuração são anexados a um perfil para configurar algum aspecto do SDK/ferramenta quando esse perfil é usado. Esses arquivos são “compartilhados”, pois os valores afetam quaisquer aplicativos, processos ou SDKs no ambiente local de um usuário.

Tanto os arquivos config quanto credentials compartilhados são arquivos de texto simples que contêm somente caracteres ASCII (codificados em UTF-8). Eles assumem a forma do que geralmente é chamado de arquivos INI.

Perfis

As configurações nos arquivos config e credentials compartilhados estão associadas a um perfil específico. Vários perfis podem ser definidos no arquivo para criar diferentes configurações que serão aplicadas em diferentes ambientes de desenvolvimento.

O perfil [default] contém os valores que são usados por uma operação de SDK ou ferramenta se um perfil nomeado específico não for especificado. Você também pode criar perfis separados aos quais você pode referenciar explicitamente pelo nome. Cada perfil pode usar configurações e valores diferentes conforme necessário para a aplicação e o cenário.

nota

[default] é simplesmente um perfil sem nome. Esse perfil é nomeado default porque é o perfil padrão usado pelo SDK se o usuário não especificar um perfil. Ele não fornece valores padrão herdados para outros perfis. Se você definir algo no perfil [default] e não definir em um perfil nomeado, o valor não estará definido quando você usar o perfil nomeado.

Definir um perfil nomeado

O perfil [default] e vários perfis nomeados podem existir no mesmo arquivo. Use a configuração a seguir para selecionar quais configurações do perfil serão usadas pelo SDK ou ferramenta ao executar o código. Os perfis também podem ser selecionados dentro do código ou por comando ao trabalhar com a AWS CLI.

Configure essa funcionalidade definindo uma das seguintes opções:

AWS_PROFILE - variável de ambiente

Quando essa variável de ambiente é definida como um perfil nomeado ou "padrão", todos os códigos do SDK e comandos da AWS CLI usam as configurações desse perfil.

Exemplo de configuração de variáveis de ambiente para Linux/macOS por meio da linha de comando:

export AWS_PROFILE="my_default_profile_name";

Exemplo do Windows de configuração de variáveis de ambiente por meio da linha de comando:

setx AWS_PROFILE "my_default_profile_name"
aws.profile: propriedade do sistema de JVM

Para o SDK para Kotlin na JVM e o SDK para Java 2.x, você pode definir a propriedade do sistema aws.profile. Quando o SDK cria um cliente de serviço, ele usa as configurações no perfil nomeado, a menos que a configuração seja substituída no código. O SDK para Java 1.x não é compatível com essa propriedade do sistema.

nota

Se a aplicação estiver em um servidor executando várias aplicações, recomendamos que você sempre use perfis nomeados em vez do perfil padrão. O perfil padrão é automaticamente selecionado por qualquer aplicação da AWS no ambiente e compartilhado entre elas. Portanto, se alguém atualizar o perfil padrão de sua própria aplicação, isso poderá involuntariamente afetar as outras. Para se proteger contra isso, defina um perfil nomeado no arquivo compartilhado config e use esse perfil nomeado em sua aplicação definindo o perfil nomeado em seu código. Você pode usar a variável de ambiente ou a propriedade do sistema de JVM para definir o perfil nomeado se souber que seu escopo afeta apenas sua aplicação.

Formato do arquivo de configuração

O arquivo config é organizado em seções. Uma seção é um conjunto nomeado de configurações e continua até que outra linha de definição de seção seja encontrada.

O arquivo config é um arquivo de texto simples que usam o seguinte formato:

  • Todas as entradas em uma seção assumem a forma geral de setting-name=value.

  • As linhas podem ser comentadas iniciando-as com um caractere de hashtag (#).

Tipos de seção

Uma definição de seção é uma linha que aplica um nome a uma coleção de configurações. As linhas de definição de seção começam e terminam com colchetes ([ ]). Dentro dos colchetes, há um identificador de tipo de seção e um nome personalizado para a seção. Você pode usar letras, números, hífens ( - ) e sublinhados ( _ ), mas sem espaços.

Tipo de seção: default

Exemplo de linha de definição de seção: [default]

[default] é o único perfil que não exige o identificador de seção profile.

O exemplo a seguir mostra um arquivo config básico com um perfil [default]. Ele define a configuração region. Todas as configurações depois dessa linha, até outra definição de seção ser encontrada, fazem parte desse perfil.

[default] #Full line comment, this text is ignored. region = us-east-2

Tipo de seção: profile

Exemplo de linha de definição de seção: [profile dev]

A linha de definição de sessão profile é um agrupamento nomeado de configurações que você pode aplicar a diferentes cenários de desenvolvimento. Para entender melhor os perfis nomeados, consulte a seção anterior sobre Perfis.

O exemplo a seguir mostra um arquivo config com uma linha de definição de seção profile e um perfil nomeado denominado foo. Todas as configurações depois dessa linha, até outra definição de seção ser encontrada, fazem parte desse perfil nomeado.

[profile foo] ...settings...

Algumas configurações têm seu próprio grupo aninhado de subconfigurações, como a configuração e as subconfigurações de s3 no exemplo a seguir. Associe as subconfigurações ao grupo recuando-as com um ou mais espaços.

[profile test] region = us-west-2 s3 = max_concurrent_requests=10 max_queue_size=1000

Tipo de seção: sso-session

Exemplo de linha de definição de seção: [sso-session my-sso]

A linha de definição da seção sso-session nomeia um grupo de configurações que você usa para configurar um perfil para resolver as credenciais da AWS usando o AWS IAM Identity Center. Para obter mais informações sobre como configurar a autenticação de login único, consulte Usar o IAM Identity Center para autenticar o SDK e as ferramentas da AWS. Um perfil é vinculado a uma seção sso-session por um par de valores-chave em que sso-session é a chave e o nome da sua seção sso-session é o valor, como sso-session = <name-of-sso-session-section>.

O exemplo a seguir configura um perfil que obterá credenciais da AWS de curto prazo para o perfil do IAM “SampleRole” na conta “111122223333" usando um token do “my-sso”. A seção sso-session “my-sso” é referenciada na seção profile pelo nome usando a chave sso-session.

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

Tipo de seção: services

Exemplo de linha de definição de seção: [services dev]

nota

A seção services oferece suporte a personalizações de endpoints específicos do serviço e só está disponível em SDKs e ferramentas que incluem esse atributo. Para ver se esse atributo está disponível para seu SDK, consulte Compatibilidade com SDKs e ferramentas da AWS para ver os endpoints específicos do serviço.

A linha de definição da seção services nomeia um grupo de configurações que configura endpoints personalizados para solicitações do AWS service (Serviço da AWS). Um perfil é vinculado a uma seção services por um par de valores-chave em que services é a chave e o nome da sua seção services é o valor, como services = <name-of-services-section>.

A seção services é separada em subseções por linhas <SERVICE> = , em que <SERVICE> é a chave de identificação do AWS service (Serviço da AWS). O identificador AWS service (Serviço da AWS) é baseado no serviceId do modelo de API, substituindo todos os espaços por sublinhados e colocando todas as letras em minúsculas. Para obter uma lista de todas as chaves de identificação de serviço a serem usadas na seção services, consulte Identificadores para endpoints específicos de serviço. A chave de identificação de serviço é seguida por configurações aninhadas, cada uma em sua própria linha e recuada por dois espaços.

O exemplo a seguir usa uma definição services para configurar o endpoint a ser usado para solicitações feitas somente para o serviço do Amazon DynamoDB. A seção services "local-dynamodb" é referenciada na seção profile pelo nome usando a chave services. A chave identificadora do AWS service (Serviço da AWS) é dynamodb. A subseção de serviço do Amazon DynamoDB começa na linha dynamodb = . Todas as linhas imediatamente seguintes que estejam recuadas são incluídas nessa subseção e se aplicam a esse serviço.

[profile dev] services = local-dynamodb [services local-dynamodb] dynamodb = endpoint_url = http://localhost:8000

Para obter mais informações sobre a configuração de endpoint personalizado, consulte Endpoints específicos de serviço.

Formato do arquivo de credenciais

As regras para o arquivo credentials geralmente são idênticas às do arquivo config, exceto que as seções do perfil não começam com a palavra profile. Use apenas o nome do perfil em si entre colchetes. O exemplo a seguir mostra um arquivo credentials com uma seção de perfil nomeado denominado foo.

[foo] ...credential settings...

Somente as seguintes configurações consideradas "secretas" ou confidenciais podem ser armazenadas no arquivo credentials: aws_access_key_id, aws_secret_access_key e aws_session_token. Embora essas configurações possam ser colocadas alternativamente no arquivo compartilhado config, recomendamos que você mantenha esses valores confidenciais no arquivo credentials separado. Dessa forma, você pode fornecer permissões separadas para cada arquivo, se necessário.

O exemplo a seguir mostra um arquivo credentials básico com um perfil [default]. Ele define as configurações globais aws_access_key_id, aws_secret_access_key e aws_session_token.

[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY aws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE

Independentemente de você usar um perfil nomeado ou "default" no arquivo credentials, todas as configurações aqui serão combinadas com as configurações do arquivo config que usarem o mesmo nome de perfil. Se houver credenciais nos dois arquivos para um perfil que compartilhe o mesmo nome, as chaves no arquivo de credenciais terão precedência.