

O AWS SDK para .NET V3 entrou no modo de manutenção.

Recomendamos que você migre para a [AWS SDK para .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html). Para obter detalhes e informações adicionais sobre como migrar, consulte nosso [anúncio do modo de manutenção](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

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á.

# Conceitos básicos da  AWS SDK para .NET
<a name="net-dg-config"></a>

Para usar o AWS SDK para .NET, você precisa instalar sua cadeia de ferramentas e configurar várias coisas essenciais que seu aplicativo precisa para acessar os serviços da AWS. Isso inclui:
+ Uma conta ou perfil de usuário apropriado
+ Informações de autenticação para essa conta de usuário ou para assumir esse perfil
+ Especificação da região da AWS
+ Pacotes ou assembliess do AWSSDK

Alguns dos tópicos desta seção fornecem informações sobre como configurar esses itens essenciais.

Outros tópicos desta e de outras seções fornecem informações sobre formas avançadas de configurar o seu projeto.

**Topics**
+ [Instale e configure seu conjunto de ferramentas](net-dg-dev-env.md)
+ [Configure a autenticação do SDK](creds-idc.md)
+ [Faça um tour rápido](quick-start.md)
+ [Iniciar um novo projeto](net-dg-start-new-project.md)
+ [Configurar a região da AWS](net-dg-region-selection.md)
+ [Instale pacotes do AWSSDK com o NuGet](net-dg-install-assemblies.md)
+ [Instale assemblies do AWSSDK sem o NuGet](net-dg-install-without-nuget.md)
+ [Resolução de perfil e credenciais](creds-assign.md)
+ [Usuários e perfis](net-dg-users-roles.md)
+ [Configurações avançadas](net-dg-advanced-config.md)
+ [Uso de credenciais herdadas](net-dg-legacy-creds.md)

# Instale e configure seu conjunto de ferramentas
<a name="net-dg-dev-env"></a>

Para usar o AWS SDK para .NET, é necessário ter determinadas ferramentas de desenvolvimento instaladas.

## Desenvolvimento entre plataformas
<a name="net-dg-dev-env-cross"></a>

Os itens a seguir são necessários para desenvolvimento .NET para várias plataformas no Windows, no Linux ou no macOS:
+ Microsoft [.NET Core SDK](https://learn.microsoft.com/en-us/dotnet/fundamentals/), versão 2.1, 3.1 ou posterior, que inclua a interface de linha de comando (CLI) do .NET (**`dotnet`**) e o tempo de execução do .NET Core.
+ Um editor de código ou ambiente de desenvolvimento integrado (IDE) apropriado para seu sistema operacional e requisitos. Normalmente, ele fornece algum suporte para .NET Core.

  Exemplos incluem [Microsoft Visual Studio Code (VS Code)](https://code.visualstudio.com/), [JetBrains Rider](https://www.jetbrains.com/rider/) e [Microsoft Visual Studio](https://visualstudio.microsoft.com/vs/).
+ (Opcional) Um kit de ferramentas da AWS, se houver algum disponível, para o editor que você escolheu e seu sistema operacional.

  Os exemplos incluem [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html), [AWS Toolkit for JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/welcome.html) e [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html).

## Windows com Visual Studio e .NET Core
<a name="net-dg-dev-env-winvs"></a>

Os itens a seguir são necessários para desenvolvimento no Windows com Visual Studio e .NET Core:
+ [Microsoft Visual Studio](https://visualstudio.microsoft.com/vs/)
+ Microsoft .NET Core 2.1, 3.1 ou posterior

  Isso geralmente é incluído por padrão ao instalar uma versão recente do Visual Studio.
+ (Opcional) O AWS Toolkit for Visual Studio, que é um plug-in que fornece uma interface de usuário para gerenciar seus recursos da AWS e perfis locais no Visual Studio. Para instalar o toolkit, consulte [Setting up the AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/getting-set-up.html).

  Para obter mais informações, consulte o [Guia do usuário do AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/).

## Próxima etapa
<a name="net-dg-dev-env-next"></a>

[Configure a autenticação do SDK com AWS](creds-idc.md)

# Configure a autenticação do SDK com AWS
<a name="creds-idc"></a>

Você deve estabelecer como seu código é autenticado AWS ao desenvolver com Serviços da AWS. Há diferentes maneiras de configurar o acesso programático aos AWS recursos, dependendo do ambiente e do AWS acesso disponível para você. 

Para ver vários métodos de autenticação para o SDK, consulte [Autenticação e acesso](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*.

Este tópico pressupõe que um novo usuário esteja se desenvolvendo localmente, não tenha recebido um método de autenticação do empregador e o usará Centro de Identidade do AWS IAM para obter credenciais temporárias. Se seu ambiente não se enquadra nessas suposições, algumas das informações neste tópico podem não se aplicar a você ou algumas das informações podem já ter sido fornecidas.

 A configuração desse ambiente requer várias etapas, que são resumidas da seguinte forma:

1. [Faça login usando as credenciais do console](#login-con-creds)

1. [Habilitar e configurar o Centro de Identidade do IAM](#idc-config-sso)

1. [Configure o SDK para usar o Centro de Identidade do IAM.](#idc-config-sdk)

1. [Iniciar uma sessão do portal de AWS acesso](#idc-start-portal)

## Faça login usando as credenciais do console
<a name="login-con-creds"></a>

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 AWS CLI e o Ferramentas da AWS para PowerShell SDK para.NET v3. AWS 

Com esse processo, você pode se autenticar usando credenciais raiz criadas durante a configuração inicial da conta, um usuário do IAM ou uma identidade federada do seu provedor de identidade, e a AWS CLI ou gerencia Ferramentas da AWS para PowerShell automaticamente as credenciais temporárias para você. Essa abordagem aumenta a segurança ao eliminar a necessidade de armazenar credenciais de longo prazo localmente. 

Ao executar o `aws login` comando da AWS CLI, você pode selecionar entre suas sessões ativas do console ou entrar por meio do fluxo de autenticação baseado em navegador e isso gerará automaticamente credenciais temporárias. O token de credencial temporário expirará em 15 minutos, mas o AWS SDK para.NET v3 atualizará automaticamente o token quando necessário durante suas solicitações. 

**Atenção**  
Esse recurso não é compatível com destinos do.NET Framework.

**Importante**  
Se você estiver usando as credenciais do console para autenticação, seu aplicativo deverá fazer referência aos seguintes NuGet pacotes para que a resolução de AWS login funcione:  
**AWSSDK.Fazer login**
A falha em referenciar esses pacotes resultará em uma exceção de runtime.
+ [Faça login usando credenciais do console usando AWS CLI.](https://docs.aws.amazon.com/sdkref/latest/guide/access-login.html)

O `config` arquivo ficaria assim que você fizesse o login seguindo as etapas fornecidas acima na AWS CLI. 

```
[default]
login_session = arn:aws:iam::0123456789012:user/username
region = us-east-1

[my-dev-profile]
login_session = arn:aws:iam::0123456789012:user/username
region = us-east-1
```

## Habilitar e configurar o Centro de Identidade do IAM
<a name="idc-config-sso"></a>

Para usar o Centro de Identidade do IAM, primeiro ele deve ser habilitado e configurado. Para ver detalhes sobre como fazer isso com o SDK, consulte a **Etapa 1** no tópico sobre [autenticação do IAM Identity Center](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*. Especificamente, siga todas as instruções necessárias em **Não estabeleci acesso por meio do Centro de Identidade do IAM**.

## Configure o SDK para usar o Centro de Identidade do IAM.
<a name="idc-config-sdk"></a>

As informações sobre como configurar o SDK para usar o IAM Identity Center estão na **Etapa 2** do tópico sobre [autenticação do IAM Identity Center](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*. Depois de concluir essa configuração, o sistema deverá conter os seguintes elementos:
+ O AWS CLI, que você usa para iniciar uma sessão do portal de AWS acesso antes de executar seu aplicativo.
+ O AWS `config` arquivo compartilhado que contém um [`[default]`perfil](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile) com um conjunto de valores de configuração que podem ser referenciados no SDK. Para encontrar a localização desse arquivo, consulte [Localização dos arquivos compartilhados no](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html) *Guia de referência de ferramentas AWS SDKs e ferramentas*. O AWS SDK para .NET usa o provedor de token SSO do perfil para adquirir credenciais antes de enviar solicitações para. AWS O valor `sso_role_name`, que é um perfil do IAM conectado a um conjunto de permissões do Centro de Identidade do IAM, deve permitir o acesso a Serviços da AWS usado na aplicação.

  O arquivo de exemplo `config` a seguir mostra um perfil padrão configurado com o provedor de token de SSO. A configuração `sso_session` do perfil se refere à seção chamada `sso-session`. A `sso-session` seção contém configurações para iniciar uma sessão do portal de AWS acesso.

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

**Importante**  
Se você estiver usando Centro de Identidade do AWS IAM para autenticação, seu aplicativo deverá fazer referência aos seguintes NuGet pacotes para que a resolução de SSO funcione:  
`AWSSDK.SSO`
`AWSSDK.SSOOIDC`
A falha em referenciar esses pacotes resultará em uma exceção de *runtime*.

## Iniciar uma sessão do portal de AWS acesso
<a name="idc-start-portal"></a>

Antes de executar um aplicativo que acessa Serviços da AWS, você precisa de uma sessão ativa do portal de AWS acesso para que o SDK use a autenticação do IAM Identity Center para resolver as credenciais. Dependendo da duração da sessão configurada, o seu acesso acabará expirando e o SDK encontrará um erro de autenticação. Para entrar no portal de AWS acesso, execute o seguinte comando no AWS CLI.

```
aws sso login
```

Como você tem uma configuração de perfil padrão, não precisa chamar o comando com uma opção `--profile`. Se a configuração do provedor de token de SSO estiver usando um perfil nomeado, o comando será `aws sso login --profile named-profile`.

Para testar se você já tem uma sessão ativa, execute o AWS CLI comando a seguir.

```
aws sts get-caller-identity
```

A resposta a esse comando deve relatar a conta do Centro de Identidade do IAM e o conjunto de permissões configurados no arquivo compartilhado `config`.

**nota**  
Se você já tiver uma sessão ativa do portal de AWS acesso e executá-la`aws sso login`, não será necessário fornecer credenciais.  
O processo de login pode solicitar que você permita o AWS CLI acesso aos seus dados. Como o AWS CLI é construído sobre o SDK para Python, as mensagens de permissão podem conter variações do `botocore` nome.

## Mais informações
<a name="idc-additional-info"></a>
+ Para obter informações adicionais sobre como usar o IAM Identity Center e o SSO em um ambiente de desenvolvimento, consulte [Autenticação única](sso.md) na seção [Autenticação avançada](advanced-auth.md). Essas informações incluem métodos alternativos e mais avançados, bem como tutoriais que mostram como usar esses métodos.
+ Para obter mais opções de autenticação para o SDK, como o uso de perfis e variáveis de ambiente, consulte o capítulo de [configuração](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*.
+ Para saber mais sobre as práticas recomendadas, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.
+ Para criar AWS credenciais de curto prazo, consulte [Credenciais de segurança temporárias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) no Guia do *usuário do IAM*.
+ Para saber mais sobre outros provedores de credenciais, consulte Provedores de [credenciais padronizados no Guia de](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) Referência de *Ferramentas AWS SDKs e Ferramentas*.

# Faça um tour rápido pelo AWS SDK para .NET
<a name="quick-start"></a>

Essa seção fornece tutoriais básicos para desenvolvedores que não estão familiarizados com o AWS SDK para .NET.

**nota**  
Antes de usar esses tutoriais, primeiro você deve ter [instalado seu conjunto de ferramentas](net-dg-dev-env.md) e [configurado a autenticação do SDK](creds-idc.md).

Consulte informações sobre como desenvolver software para serviços da AWS específicos com exemplos de código em [Trabalhe com AWS serviços](working-with-aws-services.md). Consulte mais exemplos de código em [SDK para .NET exemplos de código](csharp_code_examples.md).

**Topics**
+ [Aplicativo simples para várias plataformas](quick-start-s3-1-cross.md)
+ [Aplicativo simples baseado no Windows](quick-start-s3-1-winvs.md)
+ [Próximas etapas](quick-start-next-steps.md)

# Aplicativo simples para várias plataformas usando o AWS SDK para .NET
<a name="quick-start-s3-1-cross"></a>

Esse tutorial usa o AWS SDK para .NET e o .NET Core para o desenvolvimento entre plataformas. O tutorial mostra como usar o SDK para listar os [buckets do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)que você possui e criar um bucket de forma opcional.

Você executará este tutorial usando ferramentas para várias plataforma, como a interface de linha de comando (CLI) do .NET. Para outras maneiras de configurar seu ambiente de desenvolvimento, consulte [Instale e configure seu conjunto de ferramentas](net-dg-dev-env.md).

**Necessário para desenvolvimento .NET para várias plataformas no Windows, no Linux ou no macOS:**
+ Microsoft [.NET Core SDK](https://learn.microsoft.com/en-us/dotnet/fundamentals/), versão 2.1, 3.1 ou posterior, que inclua a interface de linha de comando (CLI) do .NET (**`dotnet`**) e o tempo de execução do .NET Core.
+ Um editor de código ou ambiente de desenvolvimento integrado (IDE) apropriado para seu sistema operacional e requisitos. Normalmente, ele fornece algum suporte para .NET Core.

  Exemplos incluem [Microsoft Visual Studio Code (VS Code)](https://code.visualstudio.com/), [JetBrains Rider](https://www.jetbrains.com/rider/) e [Microsoft Visual Studio](https://visualstudio.microsoft.com/vs/).

**nota**  
Antes de usar esses tutoriais, primeiro você deve ter [instalado seu conjunto de ferramentas](net-dg-dev-env.md) e [configurado a autenticação do SDK](creds-idc.md).

## Etapas
<a name="s3-1-cross-steps"></a>
+ [Criar o projeto](#s3-1-cross-create-project)
+ [Criar o código](#s3-1-cross-code)
+ [Execute o aplicativo](#s3-1-cross-run)
+ [Limpeza](#s3-1-cross-clean-up)

## Criar o projeto
<a name="s3-1-cross-create-project"></a>

1. Abra o prompt de comando ou terminal. Localize ou crie uma pasta do sistema operacional na qual você pode criar um projeto .NET.

1. Nessa pasta, execute o comando a seguir para criar o projeto .NET.

   ```
   dotnet new console --name S3CreateAndList
   ```

1. Vá para a pasta `S3CreateAndList` recém-criada e execute os comandos a seguir.

   ```
   dotnet add package AWSSDK.S3
   dotnet add package AWSSDK.SecurityToken
   dotnet add package AWSSDK.SSO
   dotnet add package AWSSDK.SSOOIDC
   ```

   O comando anterior instala os pacotes NuGet do [gerenciador de pacotes NuGet](https://www.nuget.org/profiles/awsdotnet). Como sabemos exatamente quais pacotes NuGet precisamos para esse tutorial, podemos executar esta etapa agora. Também é bastante comum conhecer os pacotes necessários durante o desenvolvimento. Quando isso acontece, um comando semelhante pode ser executado nesse momento.

## Criar o código
<a name="s3-1-cross-code"></a>

1. Na pasta `S3CreateAndList`, localize e abra `Program.cs` no editor de código.

1. Substitua o conteúdo pelo código a seguir e salve o arquivo.

   ```
   using System;
   using System.Threading.Tasks;
   
   // NuGet packages: AWSSDK.S3, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC
   using Amazon.Runtime;
   using Amazon.Runtime.CredentialManagement;
   using Amazon.S3;
   using Amazon.S3.Model;
   using Amazon.SecurityToken;
   using Amazon.SecurityToken.Model;
   
   namespace S3CreateAndList
   {
       class Program
       {
           // This code is part of the quick tour in the developer guide.
           // See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/quick-start.html
           // for complete steps.
           // Requirements:
           // - An SSO profile in the SSO user's shared config file with sufficient privileges for
   		//   STS and S3 buckets.
           // - An active SSO Token.
           //    If an active SSO token isn't available, the SSO user should do the following:
           //    In a terminal, the SSO user must call "aws sso login".
   
           // Class members.
           static async Task Main(string[] args)
           {
               // Get SSO credentials from the information in the shared config file.
               // For this tutorial, the information is in the [default] profile.
               var ssoCreds = LoadSsoCredentials("default");
   
               // Display the caller's identity.
               var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds);
               Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}");
   
               // Create the S3 client is by using the SSO credentials obtained earlier.
               var s3Client = new AmazonS3Client(ssoCreds);
   
               // Parse the command line arguments for the bucket name.
               if (GetBucketName(args, out String bucketName))
               {
                   // If a bucket name was supplied, create the bucket.
                   // Call the API method directly
                   try
                   {
                       Console.WriteLine($"\nCreating bucket {bucketName}...");
                       var createResponse = await s3Client.PutBucketAsync(bucketName);
                       Console.WriteLine($"Result: {createResponse.HttpStatusCode.ToString()}");
                   }
                   catch (Exception e)
                   {
                       Console.WriteLine("Caught exception when creating a bucket:");
                       Console.WriteLine(e.Message);
                   }
               }
   
               // Display a list of the account's S3 buckets.
               Console.WriteLine("\nGetting a list of your buckets...");
               var listResponse = await s3Client.ListBucketsAsync();
               Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}");
               foreach (S3Bucket b in listResponse.Buckets)
               {
                   Console.WriteLine(b.BucketName);
               }
               Console.WriteLine();
           }
   
           // 
           // Method to parse the command line.
           private static Boolean GetBucketName(string[] args, out String bucketName)
           {
               Boolean retval = false;
               bucketName = String.Empty;
               if (args.Length == 0)
               {
                   Console.WriteLine("\nNo arguments specified. Will simply list your Amazon S3 buckets." +
                     "\nIf you wish to create a bucket, supply a valid, globally unique bucket name.");
                   bucketName = String.Empty;
                   retval = false;
               }
               else if (args.Length == 1)
               {
                   bucketName = args[0];
                   retval = true;
               }
               else
               {
                   Console.WriteLine("\nToo many arguments specified." +
                     "\n\ndotnet_tutorials - A utility to list your Amazon S3 buckets and optionally create a new one." +
                     "\n\nUsage: S3CreateAndList [bucket_name]" +
                     "\n - bucket_name: A valid, globally unique bucket name." +
                     "\n - If bucket_name isn't supplied, this utility simply lists your buckets.");
                   Environment.Exit(1);
               }
               return retval;
           }
   
           //
           // Method to get SSO credentials from the information in the shared config file.
           static AWSCredentials LoadSsoCredentials(string profile)
           {
               var chain = new CredentialProfileStoreChain();
               if (!chain.TryGetAWSCredentials(profile, out var credentials))
                   throw new Exception($"Failed to find the {profile} profile");
               return credentials;
           }
       }
   
       // Class to read the caller's identity.
       public static class Extensions
       {
           public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient)
           {
               var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest());
               return response.Arn;
           }
       }
   }
   ```

## Execute o aplicativo
<a name="s3-1-cross-run"></a>

1. Execute o comando a seguir.

   ```
   dotnet run
   ```

1. Examine a saída para ver o número de buckets do Amazon S3 que você possui e seus nomes, se houver.

1. Escolha um nome para um novo bucket do Amazon S3. Use "dotnet-quicktour-s3-1-cross-" como base e adicione algo exclusivo a ele, como um GUID ou seu nome. Siga as regras para nomes de bucket descritas em [Regras de nomeação de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html#bucketnamingrules) no [Guia do usuário do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

1. Execute o comando a seguir, substituindo *amzn-s3-demo-bucket* pelo nome do bucket escolhido.

   ```
   dotnet run amzn-s3-demo-bucket
   ```

1. Examine a saída para ver o novo bucket que foi criado.

## Limpeza
<a name="s3-1-cross-clean-up"></a>

Ao executar este tutorial, você criou alguns recursos que pode escolher para limpar neste momento.
+ Se você não quiser manter o bucket que o aplicativo criou em uma etapa anterior, o exclua usando o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).
+ Se você não quiser manter seu projeto .NET, remova a pasta `S3CreateAndList` do seu ambiente de desenvolvimento.

## Para onde ir em seguida
<a name="s3-1-cross-next"></a>

Volte para o [menu do tour rápido](quick-start.md) ou vá direto para o [final deste tour rápido](quick-start-next-steps.md).

# Aplicativo simples baseado no Windows usando o AWS SDK para .NET
<a name="quick-start-s3-1-winvs"></a>

Este tutorial usa o AWS SDK para .NET no Windows com o Visual Studio e o .NET Core. O tutorial mostra como usar o SDK para listar os [buckets do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) que você possui e criar um bucket de forma opcional.

Você executará este tutorial no Windows usando o Visual Studio e o .NET Core. Para outras maneiras de configurar seu ambiente de desenvolvimento, consulte [Instale e configure seu conjunto de ferramentas](net-dg-dev-env.md).

**Necessário para desenvolvimento no Windows com o Visual Studio e o .NET Core:**
+ [Microsoft Visual Studio](https://visualstudio.microsoft.com/vs/)
+ Microsoft .NET Core 2.1, 3.1 ou posterior

  Isso geralmente é incluído por padrão ao instalar uma versão recente do Visual Studio.

**nota**  
Antes de usar esses tutoriais, primeiro você deve ter [instalado seu conjunto de ferramentas](net-dg-dev-env.md) e [configurado a autenticação do SDK](creds-idc.md).

## Etapas
<a name="s3-1-winvs-steps"></a>
+ [Criar o projeto](#s3-1-winvs-create-project)
+ [Criar o código](#s3-1-winvs-code)
+ [Execute o aplicativo](#s3-1-winvs-run)
+ [Limpeza](#s3-1-winvs-clean-up)

## Criar o projeto
<a name="s3-1-winvs-create-project"></a>

1. Abra o Visual Studio e crie um projeto que use a versão C\$1 do modelo de **aplicação de console**; ou seja, com a descrição: “...para criar uma aplicação de linha de comandos que pode ser executada no .NET Core...” Nomeie o projeto `S3CreateAndList`.
**nota**  
Não escolha a versão do .NET Framework do modelo de aplicativo de console ou, se escolher, certifique-se de usar o .NET Framework 4.7.2 ou posterior.

1. Com o projeto recém-criado carregado, selecione **Ferramentas**, **Gerenciador de pacotes NuGet**, **Gerenciar pacotes NuGet para a solução**.

1. Procure os seguintes pacotes NuGet e instale-os no projeto: `AWSSDK.S3`, `AWSSDK.SecurityToken`, `AWSSDK.SSO` e `AWSSDK.SSOOIDC`

   Esse processo instala o pacote NuGet do [gerenciador de pacotes NuGet](https://www.nuget.org/profiles/awsdotnet). Como sabemos exatamente quais pacotes NuGet precisamos para esse tutorial, podemos executar esta etapa agora. Também é bastante comum conhecer os pacotes necessários durante o desenvolvimento. Quando isso acontecer, siga um processo semelhante para instalá-los nesse momento.

1. Se você pretende executar o aplicativo no prompt de comando, abra um prompt de comando agora e navegue até a pasta que conterá a saída de compilação. Normalmente, isso é algo como `S3CreateAndList\S3CreateAndList\bin\Debug\net6.0`, mas dependerá do seu ambiente.

## Criar o código
<a name="s3-1-winvs-code"></a>

1. No projeto `S3CreateAndList`, localize e abra `Program.cs` no IDE.

1. Substitua o conteúdo pelo código a seguir e salve o arquivo.

   ```
   using System;
   using System.Threading.Tasks;
   
   // NuGet packages: AWSSDK.S3, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC
   using Amazon.Runtime;
   using Amazon.Runtime.CredentialManagement;
   using Amazon.S3;
   using Amazon.S3.Model;
   using Amazon.SecurityToken;
   using Amazon.SecurityToken.Model;
   
   namespace S3CreateAndList
   {
       class Program
       {
           // This code is part of the quick tour in the developer guide.
           // See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/quick-start.html
           // for complete steps.
           // Requirements:
           // - An SSO profile in the SSO user's shared config file with sufficient privileges for
   		//   STS and S3 buckets.
           // - An active SSO Token.
           //    If an active SSO token isn't available, the SSO user should do the following:
           //    In a terminal, the SSO user must call "aws sso login".
   
           // Class members.
           static async Task Main(string[] args)
           {
               // Get SSO credentials from the information in the shared config file.
               // For this tutorial, the information is in the [default] profile.
               var ssoCreds = LoadSsoCredentials("default");
   
               // Display the caller's identity.
               var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds);
               Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}");
   
               // Create the S3 client is by using the SSO credentials obtained earlier.
               var s3Client = new AmazonS3Client(ssoCreds);
   
               // Parse the command line arguments for the bucket name.
               if (GetBucketName(args, out String bucketName))
               {
                   // If a bucket name was supplied, create the bucket.
                   // Call the API method directly
                   try
                   {
                       Console.WriteLine($"\nCreating bucket {bucketName}...");
                       var createResponse = await s3Client.PutBucketAsync(bucketName);
                       Console.WriteLine($"Result: {createResponse.HttpStatusCode.ToString()}");
                   }
                   catch (Exception e)
                   {
                       Console.WriteLine("Caught exception when creating a bucket:");
                       Console.WriteLine(e.Message);
                   }
               }
   
               // Display a list of the account's S3 buckets.
               Console.WriteLine("\nGetting a list of your buckets...");
               var listResponse = await s3Client.ListBucketsAsync();
               Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}");
               foreach (S3Bucket b in listResponse.Buckets)
               {
                   Console.WriteLine(b.BucketName);
               }
               Console.WriteLine();
           }
   
           // 
           // Method to parse the command line.
           private static Boolean GetBucketName(string[] args, out String bucketName)
           {
               Boolean retval = false;
               bucketName = String.Empty;
               if (args.Length == 0)
               {
                   Console.WriteLine("\nNo arguments specified. Will simply list your Amazon S3 buckets." +
                     "\nIf you wish to create a bucket, supply a valid, globally unique bucket name.");
                   bucketName = String.Empty;
                   retval = false;
               }
               else if (args.Length == 1)
               {
                   bucketName = args[0];
                   retval = true;
               }
               else
               {
                   Console.WriteLine("\nToo many arguments specified." +
                     "\n\ndotnet_tutorials - A utility to list your Amazon S3 buckets and optionally create a new one." +
                     "\n\nUsage: S3CreateAndList [bucket_name]" +
                     "\n - bucket_name: A valid, globally unique bucket name." +
                     "\n - If bucket_name isn't supplied, this utility simply lists your buckets.");
                   Environment.Exit(1);
               }
               return retval;
           }
   
           //
           // Method to get SSO credentials from the information in the shared config file.
           static AWSCredentials LoadSsoCredentials(string profile)
           {
               var chain = new CredentialProfileStoreChain();
               if (!chain.TryGetAWSCredentials(profile, out var credentials))
                   throw new Exception($"Failed to find the {profile} profile");
               return credentials;
           }
       }
   
       // Class to read the caller's identity.
       public static class Extensions
       {
           public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient)
           {
               var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest());
               return response.Arn;
           }
       }
   }
   ```

1. Compile o aplicativo.
**nota**  
Se estiver usando uma versão mais antiga do Visual Studio, você pode receber um erro de compilação semelhante ao seguinte:  
“O atributo 'async main' não está disponível no C\$1 7.0. Use a versão 7.1 ou superior da linguagem.”  
Se você receber esse erro, configure seu projeto para usar uma versão posterior da linguagem. Isso normalmente é feito nas propriedades do projeto, **Build**, **Advanced**.

## Execute o aplicativo
<a name="s3-1-winvs-run"></a>

1. Execute o aplicativo sem argumentos de linha de comando. Faça isso no prompt de comando (se você abriu um anteriormente) ou no IDE.

1. Examine a saída para ver o número de buckets do Amazon S3 que você possui e seus nomes, se houver.

1. Escolha um nome para um novo bucket do Amazon S3. Use "dotnet-quicktour-s3-1-winvs-" como base e adicione algo exclusivo a ele, como um GUID ou seu nome. Siga as regras para nomes de bucket descritas em [Regras de nomeação de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html#bucketnamingrules) no [Guia do usuário do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

1. Execute o aplicativo novamente, desta vez fornecendo o nome do bucket.

   Na linha de comandos, substitua *amzn-s3-demo-bucket* no comando a seguir pelo nome do bucket escolhido.

   ```
   S3CreateAndList amzn-s3-demo-bucket
   ```

   Ou, se você estiver executando o aplicativo no IDE, selecione **Projeto**, **Propriedades S3CreateAndList**, **Depurar** e insira o nome do bucket ali.

1. Examine a saída para ver o novo bucket que foi criado.

## Limpeza
<a name="s3-1-winvs-clean-up"></a>

Ao executar este tutorial, você criou alguns recursos que pode escolher para limpar neste momento.
+ Se você não quiser manter o bucket que o aplicativo criou em uma etapa anterior, o exclua usando o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).
+ Se você não quiser manter seu projeto .NET, remova a pasta `S3CreateAndList` do seu ambiente de desenvolvimento.

## Para onde ir em seguida
<a name="s3-1-winvs-next"></a>

Volte para o [menu do tour rápido](quick-start.md) ou vá direto para o [final deste tour rápido](quick-start-next-steps.md).

# Próximas etapas
<a name="quick-start-next-steps"></a>

Certifique-se de limpar todos os recursos criados durante a execução desses tutoriais. Eles podem ser recursos da AWS ou recursos em seu ambiente de desenvolvimento, como arquivos e pastas.

Agora que você conheceu o AWS SDK para .NET, talvez queira [começar seu projeto](net-dg-start-new-project.md).

# Iniciar um novo projeto
<a name="net-dg-start-new-project"></a>

Há várias técnicas que podem ser usadas para iniciar um novo projeto para acessar os serviços da AWS. A seguir estão alguns desses métodos:
+ Se você for novo no desenvolvimento do .NET na AWS ou, pelo menos, novo no AWS SDK para .NET, poderá ver exemplos completos em [Faça um tour rápido](quick-start.md). Ele fornece uma introdução ao SDK.
+ É possível iniciar um projeto básico usando a CLI do .NET. Para ver um exemplo disso, abra um prompt de comando ou terminal, crie uma pasta ou diretório e navegue até ele e, em seguida, insira o seguinte.

  ```
  dotnet new console --name [SOME-NAME]
  ```

  Será criado um projeto vazio, ao qual você poderá adicionar código e pacotes NuGet. Para obter mais informações, consulte o [Guia do .NET Core](https://learn.microsoft.com/en-us/dotnet/fundamentals/).

  Para ver uma lista de modelos de projeto, use o seguinte: `dotnet new --list`
+ O AWS Toolkit for Visual Studio inclui modelos de projeto em C\$1 para uma variedade de serviços da AWS. Depois de [instalar o toolkit](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html) no Visual Studio, você poderá acessar os modelos ao criar um projeto.

  Para ver isso, acesse [Como trabalhar com serviços da AWS](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/working-with-services.html) no [Guia do Usuário do AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/). Diversos exemplos nessa seção criam projetos.
+ Se você desenvolve com o Visual Studio no Windows, mas sem oAWS Toolkit for Visual Studio, use suas técnicas habituais para criar um novo projeto.

  Para ver um exemplo, abra o Visual Studio e selecione **Arquivo**, **Novo**, **Projeto**. Pesquise por “.net core” e escolha a versão C\$1 do modelo **Console App (.NET Core)** ou **WPF App (.NET Core)**. Será criado um projeto vazio, ao qual você poderá adicionar código e pacotes NuGet.

Você pode encontrar alguns exemplos de como trabalhar com serviços da AWS em [Exemplos de código com orientaçãoBibliotecas e estruturas de alto nível](tutorials-examples.md).

**Importante**  
Se estiver usando Centro de Identidade do AWS IAM para autenticação, seu aplicativo deve fazer referência aos seguintes pacotes NuGet para que a resolução de SSO possa funcionar:  
`AWSSDK.SSO`
`AWSSDK.SSOOIDC`
A falha em referenciar esses pacotes resultará em uma exceção de *runtime*.

# Configurar a região da AWS
<a name="net-dg-region-selection"></a>

As regiões da AWS permitem o acesso aos serviços da AWS que residem fisicamente em uma região geográfica específica. Isso pode ser útil para redundância e para manter os seus dados e aplicativos em execução próximo ao lugar em que você e os seus usuários os acessarão.

Para exibir a lista atual com todas as Regiões e endpoints compatíveis para cada serviço da AWS, consulte [Endpoints e cotas de serviço](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) em *Referência geral da AWS*. Para ver uma lista dos endpoints regionais existentes, consulte [endpoints de serviço da AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html). Para ver informações detalhadas sobre regiões, consulte [Specify which AWS Regions your account can use](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html).

Você pode criar um cliente de serviço da AWS que vá para uma [região específica](#per-client). Você também pode configurar seu aplicativo com uma região que será usada para [todos os clientes de serviço da AWS](#globally). Esses dois casos serão explicados a seguir.

## Crie um cliente de serviço com uma região específica
<a name="per-client"></a>

Você pode especificar a região para qualquer um dos clientes de AWS serviço em seu aplicativo. Definir a Região desta maneira tem precedência sobre qualquer configuração global para aquele cliente de serviço particular.

### Região existente
<a name="w2aab9c21c11b5"></a>

Este exemplo mostra como instanciar um cliente do [Amazon EC2](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/EC2/TEC2Client.html) em uma região existente. Ele usa campos [RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TRegionEndpoint.html) definidos.

```
using (AmazonEC2Client ec2Client = new AmazonEC2Client(RegionEndpoint.USWest2))
{
  // Make a request to EC2 in the us-west-2 Region using ec2Client
}
```

### Nova região usando a classe RegionEndpoint
<a name="w2aab9c21c11b7"></a>

Este exemplo mostra como estruturar um novo endpoint de região usando [RegionEndpoint.GetBySystemName](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/MRegionEndpointGetBySystemNameString.html).

```
var newRegion = RegionEndpoint.GetBySystemName("us-west-new");
using (var ec2Client = new AmazonEC2Client(newRegion))
{
  // Make a request to EC2 in the new Region using ec2Client
}
```

### Nova região usando a classe de configuração do cliente de serviço
<a name="w2aab9c21c11b9"></a>

Este exemplo mostra como usar a propriedade `ServiceURL` da classe de configuração do cliente de serviço para especificar a região; nesse caso, usando a classe [AmazonEC2Config](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/EC2/TEC2Config.html).

Esta técnica funciona mesmo se o endpoint da região não seguir o padrão regular de endpoints da região.

```
var ec2ClientConfig = new AmazonEC2Config
{
    // Specify the endpoint explicitly
    ServiceURL = "https://ec2.us-west-new.amazonaws.com"
};

using (var ec2Client = new AmazonEC2Client(ec2ClientConfig))
{
  // Make a request to EC2 in the new Region using ec2Client
}
```

## Especifique uma região para todos os clientes de serviço
<a name="globally"></a>

Há várias maneiras de especificar uma região para todos os clientes de serviço da AWS que seu aplicativo cria. Essa região é usada para clientes de serviço que não foram criados com uma região específica.

O AWS SDK para .NET procura um valor de região na seguinte ordem.

### Perfis
<a name="w2aab9c21c15b7"></a>

Defina um perfil que seu aplicativo ou o SDK tenha carregado. Para obter mais informações, consulte [Resolução de perfil e credenciais](creds-assign.md).

### Variáveis de ambiente
<a name="w2aab9c21c15b9"></a>

Defina na variável de ambiente `AWS_REGION`.

No Linux ou macOS:

```
export AWS_REGION='us-west-2'
```

No Windows:

```
set AWS_REGION=us-west-2
```

**nota**  
Se você definir essa variável de ambiente para todo o sistema (usando `export` ou `setx`), ela afetará todos os SDKs e toolkits, não apenas o AWS SDK para .NET.

### Classe AWSConfigs
<a name="w2aab9c21c15c11"></a>

Defina como uma propriedade [AWSConfigs.AWSRegion](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html).

```
AWSConfigs.AWSRegion = "us-west-2";
using (var ec2Client = new AmazonEC2Client())
{
  // Make request to Amazon EC2 in us-west-2 Region using ec2Client
}
```

## Resolução da região
<a name="net-dg-region-resolution"></a>

Se nenhum dos métodos descritos acima for usado para especificar uma Região da AWS, o AWS SDK para .NET tenta encontrar uma região na qual o cliente de serviço da AWS vai operar.

**Ordem da resolução da região**

1. Arquivos de configuração do aplicativo, como `app.config` e `web.config`.

1. Variáveis de ambiente (`AWS_REGION` e `AWS_DEFAULT_REGION`).

1. Um perfil com o nome especificado por um valor em `AWSConfigs.AWSProfileName`.

1. Um perfil com o nome especificado pela variável de ambiente `AWS_PROFILE`.

1. O perfil `[default]`.

1. Metadados da instância do Amazon EC2 (se estiver sendo executada em uma instância do EC2).

Se nenhuma região for encontrada, o SDK lançará uma exceção declarando que o cliente de serviço da AWS não tem uma região configurada.

## Informações especiais sobre a região da China (Pequim)
<a name="net-dg-region-cn-north-1"></a>

Para usar serviços na região China (Pequim), é necessário ter uma conta e credenciais específicas para a região China (Pequim). As contas e credenciais para outras regiões da AWS não funcionarão para a região China (Pequim). Da mesma forma, as contas e credenciais para a região China (Pequim) não funcionarão em outras regiões da AWS. Para ter informações sobre os endpoints e protocolos que estão disponíveis na região China (Pequim), consulte [Endpoints da região Pequim](https://docs.amazonaws.cn/en_us/aws/latest/userguide/endpoints-Beijing.html).

## Informações especiais sobre novos serviços da AWS
<a name="net-dg-region-new-services"></a>

Novos serviços da AWS podem ser lançados inicialmente em algumas regiões e, em seguida, liberados para outras regiões. Nestes casos, não é necessário instalar o SDK mais recente para acessar as novas regiões para esse serviço. Você pode especificar regiões recém-adicionadas globalmente ou por cliente, como mostrado anteriormente.

# Instale pacotes do AWSSDK com o NuGet
<a name="net-dg-install-assemblies"></a>

[O NuGet é um sistema de gerenciamento de pacotes para a plataforma .NET. ](https://www.nuget.org/) Com o NuGet, você pode instalar os [pacotes AWSSDK](https://www.nuget.org/profiles/awsdotnet), bem como várias outras extensões, em seu projeto. Para obter informações adicionais, consulte o repositório [aws/dotnet](https://github.com/aws/dotnet) no site do GitHub.

O NuGet sempre tem as versões mais recentes dos pacotes AWSSDK, bem como as versões anteriores. O NuGet está ciente das dependências entre os pacotes e instala todos os pacotes necessários automaticamente.

**Atenção**  
A lista de pacotes NuGet pode incluir um chamado simplesmente “AWSSDK” (sem identificador anexado). NÃO instale esse pacote NuGet; ele é legado e não deve ser usado para novos projetos.

Os pacotes instalados com o NuGet são armazenados com seu projeto em vez de em um local central. Isso permite a instalação de versões do conjunto específicas para um certo aplicativo, sem criar problemas de compatibilidade para outros aplicativos. Para obter mais informações sobre o NuGet, consulte a [documentação do NuGet](https://learn.microsoft.com/en-us/nuget/).

**nota**  
Se não puder ou não tiver permissão para baixar e instalar pacotes NuGet por projeto, você poderá obter os assemblies do AWSSDK e armazená-los localmente (ou on-premises).  
Se isso se aplica a você e você ainda não tiver obtido os assemblies do AWSSDK, consulte. [Como obter assemblies do AWSSDK](net-dg-obtain-assemblies.md) Para aprender a usar os assemblies armazenados localmente, consulte [Instale assemblies do AWSSDK sem o NuGet](net-dg-install-without-nuget.md).

## Como usar o NuGet pela linha de comando ou pelo terminal
<a name="package-install-nuget"></a>

1. Acesse os [pacotes AWSSDK no NuGet](https://www.nuget.org/profiles/awsdotnet) e determine quais pacotes são necessários em seu projeto; por exemplo, **[AWSSDK.S3](https://www.nuget.org/packages/AWSSDK.S3/)**.

1. Copie o comando da CLI do .NET da página desse pacote, como mostrado no exemplo a seguir.

   **`dotnet add package AWSSDK.S3 --version 3.3.110.19`**

1. No diretório do projeto, execute esse comando da CLI do .NET. O NuGet também instala quaisquer dependências, como o [AWSSDK.Core](https://www.nuget.org/packages/AWSSDK.Core).

**nota**  
Se desejar somente a versão mais recente de um pacote NuGet, você poderá excluir as informações da versão do comando, conforme mostrado no exemplo a seguir.  
**`dotnet add package AWSSDK.S3`**

## Como usar o NuGet no Visual Studio Solution Explorer
<a name="package-install-gui"></a>

1. No **Solution Explorer**, clique com o botão direito no projeto e, em seguida, selecione **Manage NuGet Packages** no menu de contexto.

1. No painel esquerdo do **NuGet Package Manager (Gerenciador de pacotes NuGet)**, escolha **Browse (Procurar)**. É possível usar a caixa de pesquisa para procurar o pacote que deseja instalar. O NuGet também instala quaisquer dependências, como o [AWSSDK.Core](https://www.nuget.org/packages/AWSSDK.Core).

   A figura a seguir mostra a instalação do pacote **AWSSDK.S3**.  
![\[Pacote AWSSDK.S3 mostrado no Gerenciador de pacotes NuGet.\]](http://docs.aws.amazon.com/pt_br/sdk-for-net/v3/developer-guide/images/nuget-install-vs-dlg.png)

## Usar o NuGet a partir do Console de gerenciamento de pacotes
<a name="package-install-cmd"></a>

No Visual Studio, escolha **Ferramentas**, **NuGet Package Manager**, **Package Manager Console**.

Instale os pacotes do AWSSDK que você deseja a partir do Console de gerenciamento de pacotes usando o comando **`Install-Package`**. Por exemplo, para instalar o [AWSSDK.S3](https://www.nuget.org/packages/AWSSDK.S3), use o comando a seguir.

```
PM> Install-Package AWSSDK.S3
```

O NuGet também instala quaisquer dependências, como o [AWSSDK.Core](https://www.nuget.org/packages/AWSSDK.Core).

Se você precisar instalar uma versão anterior de um pacote, use a opção `-Version` e especifique a versão do pacote que você deseja, conforme mostrado no exemplo a seguir.

```
PM> Install-Package AWSSDK.S3 -Version 3.3.106.6
```

Para obter mais informações sobre comandos do Console do gerenciador de pacotes, consulte a [referência do PowerShell](https://learn.microsoft.com/en-us/nuget/reference/powershell-reference) na [documentação do NuGet](https://learn.microsoft.com/en-us/nuget/) da Microsoft.

# Instale assemblies do AWSSDK sem o NuGet
<a name="net-dg-install-without-nuget"></a>

Este tópico descreve como você pode usar os assemblies do AWSSDK que você obteve e armazenou localmente (ou on-premises), conforme descrito em [Como obter assemblies do AWSSDK](net-dg-obtain-assemblies.md). Esse **não** é o método recomendado para lidar com referências do SDK, mas é obrigatório em alguns ambientes.

**nota**  
O método recomendado para lidar com referências do SDK é baixar e instalar apenas os pacotes NuGet necessários para cada projeto. Esse método é descrito em [Instale pacotes do AWSSDK com o NuGet](net-dg-install-assemblies.md).

**Para instalar os assemblies do AWSSDK**

1. Crie uma pasta na área do projeto para os assemblies do AWSSDK necessários. Por exemplo, você pode chamar essa pasta de `AwsAssemblies`.

1. Se você ainda não tiver feito isso, [obtenha os assemblies do AWSSDK](net-dg-obtain-assemblies.md), que coloca os assemblies em alguma pasta local de download ou instalação. Copie os arquivos DLL dos assemblies necessários dessa pasta de download para o seu projeto (na pasta `AwsAssemblies`, em nosso exemplo).

   Assegure-se de também copiar as dependências. Você pode encontrar informações sobre dependências no site do [GitHub](https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/generator/ServiceModels/_sdk-versions.json).

1. Faça referência aos assemblies necessários da seguinte forma.

------
#### [ Cross-platform development ]

   1. Abra o arquivo `.csproj` do seu projeto e adicione um elemento `<ItemGroup>`.

   1. No elemento `<ItemGroup>`, adicione um elemento `<Reference>` com um atributo `Include` para cada assembly necessário.

      Para o Amazon S3, por exemplo, você adicionaria as seguintes linhas ao arquivo `.csproj` do seu projeto.

      **No Linux e macOS:**

      ```
      <ItemGroup>
        <Reference Include="./AwsAssemblies/AWSSDK.Core.dll" />
        <Reference Include="./AwsAssemblies/AWSSDK.S3.dll" />
      </ItemGroup>
      ```

      **No Windows:**

      ```
      <ItemGroup>
        <Reference Include="AwsAssemblies\AWSSDK.Core.dll" />
        <Reference Include="AwsAssemblies\AWSSDK.S3.dll" />
      </ItemGroup>
      ```

   1. Salve o arquivo `.csproj` do seu projeto.

------
#### [ Windows with Visual Studio and .NET Core ]

   1. No Visual Studio, carregue seu projeto e abra **Projeto**, **Adicionar referência**.

   1. Escolha o botão **Procurar** na parte inferior da caixa de diálogo. Navegue até a pasta do seu projeto e a subpasta para a qual você copiou os arquivos DLL necessários (`AwsAssemblies`, por exemplo).

   1. Selecione todos os arquivos DLL, escolha **Adicionar** e escolha **OK**.

   1. Salve o seu projeto.

------

# Resolução de perfil e credenciais
<a name="creds-assign"></a>

O AWS SDK para .NET busca credenciais em uma determinada ordem e usa o primeiro conjunto disponível para o aplicativo atual.

**Ordem de pesquisa de credencial**

1. Credenciais definidas explicitamente no cliente do serviço da AWS, conforme descrito em [Acessar credenciais e perfis em um aplicativo](creds-locate.md).
**nota**  
Esse tópico está na seção [Considerações especiais](special-considerations.md) porque não é o método preferencial para especificar credenciais.

1. Um perfil de credenciais com o nome especificado por um valor em [AWSConfigs.AWSProfileName](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html#properties).

1. Um perfil de credenciais com o nome especificado pela variável de ambiente `AWS_PROFILE`.

1. O perfil de credenciais `[default]`.

1. [SessionAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSessionAWSCredentials.html) criadas a partir das variáveis de ambiente `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e `AWS_SESSION_TOKEN`, se todas forem não vazias.

1.  [BasicAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TBasicAWSCredentials.html) criadas a partir das variáveis de ambiente `AWS_ACCESS_KEY_ID` e `AWS_SECRET_ACCESS_KEY`, se ambas forem não vazias.

1. O [provedor de credenciais de contêiner](https://docs.aws.amazon.com/sdkref/latest/guide/feature-container-credentials.html).

1. Metadados da instância do Amazon EC2.

Se o aplicativo estiver em execução em uma instância do Amazon EC2, como em um ambiente de produção, use um perfil do IAM conforme descrito em [Conceder acesso utilizando um perfil do IAM](net-dg-hosm.md). Caso contrário, como em testes de pré-lançamento, armazene suas credenciais em um arquivo que use o formato de arquivo de credenciais da AWS ao qual seu aplicativo web tenha acesso no servidor.

## Resolução do perfil
<a name="net-dg-config-creds-profile-resolution"></a>

Com dois mecanismos de armazenamento diferentes para credenciais, é importante entender como configurar o AWS SDK para .NET para usá-los. A propriedade [AWSConfigs.AWSProfilesLocation](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) controla como o AWS SDK para .NET encontra perfis de credenciais.


****  

| AWSProfilesLocation | Comportamento da resolução do perfil | 
| --- | --- | 
|  nulo (não definido) ou vazio  |  Pesquise na SDK Store se a plataforma for compatível e, em seguida, pesquise o arquivo de credenciais compartilhado da AWS no [local padrão](creds-file.md). Se o perfil não estiver em nenhum desses locais, busque `~/.aws/config` (Linux ou macOS) ou `%USERPROFILE%\.aws\config` (Windows).  | 
|  O caminho para um arquivo no formato de arquivo de credenciais da AWS  |  Pesquise *somente* o arquivo especificado para um perfil com o nome especificado.  | 

## Usar credenciais da conta de usuário federado
<a name="net-dg-config-creds-saml"></a>

Os aplicativos que usam o AWS SDK para .NET ([AWSSDK.Core](https://www.nuget.org/packages/AWSSDK.Core/) versão 3.1.6.0 ou posterior) podem usar contas de usuário federado por meio do Active Directory Federation Services (AD FS - Serviços de federação do Active Directory) para acessar web services da AWS usando o Security Assertion Markup Language (SAML).

Suporte ao acesso federado significa que usuários podem se autenticar usando o Active Directory. São concedidas credenciais temporárias ao usuário automaticamente. Estas credenciais temporárias, que são válidas por uma hora, são usadas quando o aplicativo invoca os serviços da AWS. O SDK faz o gerenciamento das credenciais temporárias. Para contas de usuário associados a um domínio, se o aplicativo realizar uma chamada mas as credenciais expiraram, o usuário é reautenticado automaticamente e são concedidas novas credenciais. (Para contas que não estão associadas a um domínio, o usuário deve informar as credenciais antes da reautenticação.)

Para usar esse suporte no aplicativo .NET, primeiro é necessário configurar o perfil da função usando um cmdlet PowerShell. Para saber como, consulte a [documentação do AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/saml-pst.html).

Depois de configurar o perfil da função, faça referência ao perfil em seu aplicativo. Há várias maneiras de fazer isso, uma delas é usar a propriedade [AWSConfigs.AWSProfileName](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) da mesma forma que você faria com outros perfis de credenciais.

A assembly *AWS Security Token Service* ([AWSSDK.SecurityToken](https://www.nuget.org/packages/AWSSDK.SecurityToken/)) fornece o suporte SAML para obter credenciais da AWS. Para usar as credenciais da conta de usuário federado, certifique-se de que esse assembly esteja disponível para seu aplicativo.

## Especificar funções ou credenciais temporárias
<a name="net-dg-config-creds-assign-role"></a>

Para aplicativos executados em instâncias do Amazon EC2, a forma mais segura de gerenciar as credenciais é utilizar perfis do IAM, conforme descrito em [Conceder acesso utilizando um perfil do IAM](net-dg-hosm.md).

Para cenários do aplicativo em que o executável do software está disponível para usuários de fora da organização, recomendamos que você projete o software para usar *credenciais de segurança temporárias*. Além de oferecer acesso restrito aos recursos da AWS, essas credenciais têm o benefício de expirarem após um período especificado. Para obter mais informações sobre as credenciais de segurança temporárias, consulte:
+  [Credenciais de segurança temporárias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 
+  [Banco de identidades do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)

## Usar credenciais de proxy
<a name="net-dg-config-creds-proxy"></a>

Se o seu software se comunica com a AWS por meio de um proxy, especifique as credenciais para o proxy usando a propriedade `ProxyCredentials` na classe `Config` para um serviço. A classe `Config` de um serviço normalmente faz parte do namespace primário do serviço. Os exemplos incluem o seguinte: [AmazonCloudDirectoryConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudDirectory/TCloudDirectoryConfig.html) no namespace [Amazon.CloudDirectory](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudDirectory/NCloudDirectory.html) e [AmazonGameLiftConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/GameLift/TGameLiftConfig.html) no namespace [Amazon.GameLift](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/GameLift/NGameLift.html).

Para [Amazon S3](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Config.html), por exemplo, você pode usar código semelhante ao seguinte, quando `SecurelyStoredUserName` e `SecurelyStoredPassword` são o nome de usuário e senha do proxy especificados em um objeto [NetworkCredential](https://learn.microsoft.com/en-us/dotnet/api/system.net.networkcredential).

```
AmazonS3Config config = new AmazonS3Config();
config.ProxyCredentials = new NetworkCredential(SecurelyStoredUserName, SecurelyStoredPassword);
```

**nota**  
Versões anteriores do SDK utilizavam `ProxyUsername` e `ProxyPassword`, mas estas propriedades estão obsoletas.

# Informações adicionais sobre usuários e perfis
<a name="net-dg-users-roles"></a>

Para fazer o desenvolvimento do .NET na AWS ou para executar aplicativos .NET na AWS, você precisa ter uma combinação de usuários, conjuntos de permissões e perfis de serviço que sejam apropriados para essas tarefas.

Os usuários específicos, os conjuntos de permissões e os perfis de serviço que você cria e a maneira como você os utiliza dependerão dos seus dos seus aplicativos. Veja a seguir algumas informações adicionais sobre por que eles podem ser usados e como criá-los.

## Usuários e conjuntos de permissões
<a name="net-dg-users-roles-user"></a>

Embora seja possível usar uma conta de usuário do IAM com credenciais de longo prazo para acessar os serviços da AWS, essa não é mais uma prática recomendada e deve ser evitada. Mesmo durante o desenvolvimento, é prática recomendada criar usuários e conjuntos de permissões no Centro de Identidade do AWS IAM e usar credenciais temporárias fornecidas por uma fonte de identidade.

Para desenvolvimento, você pode usar o usuário que criou ou recebeu em [Configure a autenticação do SDK](creds-idc.md). Se você tiver permissões apropriadas do Console de gerenciamento da AWS, também poderá criar conjuntos de permissões diferentes com privilégio mínimo para esse usuário ou criar usuários especificamente para projetos de desenvolvimento, fornecendo conjuntos de permissões com privilégio mínimo. A ação que você escolher, se for o caso, dependerá das circunstâncias.

Para obter mais informações sobre esses usuários e conjuntos de permissões e como criá-los, consulte [Autenticação e acesso](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) no *Guia de referência de AWS SDKs e ferramentas* e [Conceitos básicos](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.

## Perfis de serviço
<a name="net-dg-users-roles-service-role"></a>

Você pode configurar um perfil de serviço da AWS para acessar serviços da AWS em nome dos usuários. Esse tipo de acesso é apropriado quando várias pessoas estão executando a aplicação remotamente; por exemplo, em uma instância do Amazon EC2 que você criou para essa finalidade.

O processo de criação de um perfil de serviço varia de acordo com a situação, mas é basicamente o seguinte.

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Selecione **Funções** e, depois, **Criar função**.

1. Escolha **Serviço da AWS**, encontre e selecione **EC2** (por exemplo) e, depois, selecione o caso de uso do **EC2** (por exemplo).

1. Escolha **Próximo: Permissões** e selecione as [políticas apropriadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) para os serviços da AWS que seu aplicativo usará.
**Atenção**  
***NÃO*** escolha a política **AdministratorAccess** porque ela concede permissões de leitura e gravação a quase tudo na sua conta.

1. Escolha **Próximo: Tags** e insira as tags que você desejar.

   Você encontrará informações sobre tags em [Controlar o acesso a recursos da AWS usando tags ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)no[ Manual do usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

1. Escolha **Próximo: Revisar** para fornecer um **nome de perfil** e uma **descrição de perfil**. Então, escolha **Criar perfil**.

Você pode encontrar informações de alto nível sobre os perfis do IAM em [Identidades (usuários, grupos e perfis)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) no [Guia do usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/). Encontre informações detalhadas sobre perfis nesse tópico [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

**Informações adicionais sobre perfis**
+ Use [perfis do IAM para tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) do Amazon Elastic Container Service (Amazon ECS).
+ Use [perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) para aplicações em execução nas instâncias do Amazon EC2.

# Configurações avançadas para seu projeto do AWS SDK para .NET
<a name="net-dg-advanced-config"></a>

Os tópicos desta seção contêm informações sobre tarefas e métodos de configurações adicionais que podem ser do seu interesse.

**Topics**
+ [AWSSDK.Extensões. NETCore.Configuração e IConfiguration](net-dg-config-netcore.md)
+ [Configuração de outros parâmetros do aplicativo](net-dg-config-other.md)
+ [Referência dos arquivos de configuração para o AWS SDK para .NET](net-dg-config-ref.md)

# Usando AWSSDK .Extensions. NETCore.Configuração e interface IConfiguration
<a name="net-dg-config-netcore"></a>

(Este tópico era anteriormente intitulado “Configurando o AWS SDK para .NET com o.NET Core”)

Uma das principais alterações no .NET Core é a retirada do `ConfigurationManager` e dos arquivos padrão `app.config` e `web.config` usados nos aplicativos .NET Framework e ASP.NET.

A configuração no .NET Core é baseada em pares de chave/valor estabelecidos pelos provedores de configuração. Os provedores de configuração leem dados de configuração em pares de chave/valor de uma variedade de fontes de configuração, incluindo argumentos de linha de comando, arquivos de diretório, variáveis de ambiente e arquivos de configurações.

**nota**  
Para obter mais informações, consulte [Configuração no ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration).

Para facilitar o uso do AWS SDK para .NET com o.NET Core, você pode usar as [AWSSDK.Extensions. NETCore NuGet .Pacote de configuração](https://www.nuget.org/packages/AWSSDK.Extensions.NETCore.Setup/). Como muitas bibliotecas.NET Core, ela adiciona métodos de extensão à `IConfiguration` interface para facilitar a obtenção da AWS configuração.

O código-fonte desse pacote está GitHub em[https://github.com/aws/aws-sdk-net/tree/aws-sdk-net-v3.7/extensions/src/AWSSDK.Extensions.NETCore.Setup](https://github.com/aws/aws-sdk-net/tree/aws-sdk-net-v3.7/extensions/src/AWSSDK.Extensions.NETCore.Setup).

## Usando AWSSDK .Extensions. NETCore.Configuração
<a name="net-core-configuration-builder"></a>

Suponha que você crie um aplicativo ASP.NET Core Model-View-Controller (MVC), o que pode ser feito com o modelo de **aplicativo Web ASP.NET Core** no Visual Studio ou executando na `dotnet new mvc ...` CLI do.NET Core. Quando você cria tal aplicativo, o construtor do `Startup.cs` lida com a configuração lendo várias fontes de entrada de provedores de configuração, como o `appsettings.json`.

```
public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}
```

Para usar o `Configuration` objeto para obter as *AWS*opções, primeiro adicione o `AWSSDK.Extensions.NETCore.Setup` NuGet pacote. Em seguida, adicione as opções ao arquivo de configuração, conforme descrito a seguir.

Observe que um dos arquivos adicionados ao seu projeto é `appsettings.Development.json`. Isso corresponde a um `EnvironmentName` definido como **Desenvolvimento**. Durante o desenvolvimento, você coloca sua configuração nesse arquivo, que só é lido durante o teste local. Quando você implanta uma instância do Amazon EC2 que foi `EnvironmentName` configurada como **Produção**, esse arquivo é ignorado e volta para as AWS SDK para .NET credenciais e a região do IAM que estão configuradas para a instância do Amazon EC2.

As definições de configuração a seguir mostram exemplos dos valores que você pode incluir no arquivo `appsettings.Development.json` em seu projeto para fornecer as configurações da AWS .

```
{
  "AWS": {
    "Profile": "local-test-profile",
    "Region": "us-west-2"
  },
  "SupportEmail": "TechSupport@example.com"
}
```

Para acessar uma configuração em um arquivo *CSHTML*, use a diretiva `Configuration`.

```
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<h1>Contact</h1>

<p>
    <strong>Support:</strong> <a href='mailto:@Configuration["SupportEmail"]'>@Configuration["SupportEmail"]</a><br />
</p>
```

Para acessar as AWS opções definidas no arquivo a partir do código, chame o método de `GetAWSOptions` extensão adicionado `IConfiguration` a.

Para construir um cliente de serviço a partir dessas opções, chame `CreateServiceClient`. O código de exemplo a seguir mostra como criar um cliente de serviço do Amazon S3. (Certifique-se de adicionar o [AWSSDK NuGet pacote.S3](https://www.nuget.org/packages/AWSSDK.S3) ao seu projeto.)

```
var options = Configuration.GetAWSOptions();
IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();
```

Também é possível criar vários clientes de serviço com configurações incompatíveis ao usar várias entradas no arquivo `appsettings.Development.json`, conforme mostrado nos exemplos a seguir, em que a configuração de `service1` inclui a região `us-west-2` e a configuração de `service2` inclui o *URL* do endpoint especial.

```
{
  "service1": {
    "Profile": "default",
    "Region": "us-west-2"
  },
  "service2": {
    "Profile": "default",
    "ServiceURL": "URL"
  }
}
```

Depois, você pode obter as opções para um serviço específico usando a entrada no arquivo JSON. Por exemplo, para obter as configurações para `service1`, use o seguinte.

```
var options = Configuration.GetAWSOptions("service1");
```

### Valores permitidos no arquivo appsettings
<a name="net-core-appsettings-values"></a>

Os valores de configuração do aplicativo a seguir podem ser definidos no arquivo `appsettings.Development.json`. Os nomes de campo devem usar a capitalização mostrada. Para obter mais detalhes sobre essas configurações, consulte a classe `[AWS.Runtime.ClientConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html)`.
+ Região
+ Perfil
+ ProfilesLocation
+ SignatureVersion
+ RegionEndpoint
+ UseHttp
+ ServiceURL
+ AuthenticationRegion
+ AuthenticationServiceName
+ MaxErrorRetry
+ LogResponse
+ BufferSize
+ ProgressUpdateInterval
+ ResignRetries
+ AllowAutoRedirect
+ LogMetrics
+ DisableLogging
+ UseDualstackEndpoint

## Injeção de dependência no núcleo do ASP.NET
<a name="net-core-dependency-injection"></a>

As *AWSSDKextensões. NETCoreO NuGet pacote.Setup* também se integra a um novo sistema de injeção de dependência no ASP.NET Core. O método `ConfigureServices` na classe `Startup` do seu aplicativo é o local onde os serviços MVC são adicionados. Se o aplicativo usa a Estrutura de entidade, também é aqui que ela é inicializada.

```
public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();
}
```

**nota**  
O histórico sobre a injeção de dependência no .NET Core está disponível no [site de documentação do .NET Core](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection).

O `AWSSDK.Extensions.NETCore.Setup` NuGet pacote adiciona novos métodos de extensão `IServiceCollection` que você pode usar para adicionar AWS serviços à injeção de dependência. O código a seguir mostra como adicionar as AWS opções que são lidas `IConfiguration` para adicionar o Amazon S3 e o DynamoDB à lista de serviços. (Certifique-se de adicionar os DBv2 NuGet pacotes [AWSSDK.S3](https://www.nuget.org/packages/AWSSDK.S3) e [AWSSDK.Dynamo ao seu projeto](https://www.nuget.org/packages/AWSSDK.DynamoDBv2).)

```
public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();

    services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
    services.AddAWSService<IAmazonS3>();
    services.AddAWSService<IAmazonDynamoDB>();
}
```

Agora, se os controladores MVC usam `IAmazonS3` ou `IAmazonDynamoDB` como parâmetros em seus construtores, o sistema de injeção de dependência passa nesses serviços.

```
public class HomeController : Controller
{
    IAmazonS3 S3Client { get; set; }

    public HomeController(IAmazonS3 s3Client)
    {
        this.S3Client = s3Client;
    }

    ...

}
```

# Configuração de outros parâmetros do aplicativo
<a name="net-dg-config-other"></a>

**nota**  
As informações neste tópico são específicas para projetos baseados no .NET Framework. Os arquivos `App.config` e `Web.config` não estão presentes por padrão em projetos baseados no .NET Core.

## Abra para ver o conteúdo do .NET Framework
<a name="w2aab9c31b9b5b1"></a>

Há diversos parâmetros do aplicativo que você pode configurar:
+  `AWSLogging` 
+  `AWSLogMetrics` 
+  `AWSRegion` 
+  `AWSResponseLogging` 
+  `AWS.DynamoDBContext.TableNamePrefix` 
+  `AWS.S3.UseSignatureVersion4` 
+  `AWSEndpointDefinition` 
+  [AWS Endpoints gerados por serviços](#config-setting-service-generated-awsendpointdefinition) 

Esses parâmetros podem ser configurados no arquivo `App.config` ou `Web.config` do aplicativo. Embora você também possa configurá-los com a AWS SDK para .NET API, recomendamos que você use o `.config` arquivo do aplicativo. Ambas as abordagens são descritas aqui.

Para obter mais informações sobre o uso do elemento `<aws>` conforme descrito posteriormente neste tópico, consulte [Referência de arquivos de configuração para o AWS SDK para .NET](net-dg-config-ref.md).

### AWSLogging
<a name="config-setting-awslogging"></a>

Configura a forma como o SDK registra os eventos, caso registre. Por exemplo, a abordagem recomendada é usar o elemento `<logging>`, que é um elemento filho do elemento `<aws>`:

```
<aws>
  <logging logTo="Log4Net"/>
</aws>
```

Alternativa:

```
<add key="AWSLogging" value="log4net"/>
```

Os valores possíveis são:

** `None` **  
Desative o registro de eventos do . Esse é o padrão.

** `log4net` **  
Registre usando o log4net.

** `SystemDiagnostics` **  
Registre usando a classe `System.Diagnostics`.

Defina diversos valores para o atributo `logTo`, separado por vírgulas. O exemplo a seguir define ambos os registros `log4net` e `System.Diagnostics` no arquivo `.config`:

```
<logging logTo="Log4Net, SystemDiagnostics"/>
```

Alternativa:

```
<add key="AWSLogging" value="log4net, SystemDiagnostics"/>
```

[Como alternativa, usando a AWS SDK para .NET API, combine os valores da [LoggingOptions](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TLoggingOptions.html)enumeração e defina a AWSConfigs propriedade .Logging:](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html)

```
AWSConfigs.Logging = LoggingOptions.Log4Net | LoggingOptions.SystemDiagnostics;
```

As alterações nessa configuração entram em vigor somente para novas instâncias AWS do cliente.

### AWSLogMétricas
<a name="config-setting-awslogmetrics"></a>

Especifica se o SDK deve ou não registrar as métricas de desempenho. Para definir a configuração do registro das métricas no arquivo `.config`, defina o valor do atributo `logMetrics` no elemento `<logging>`, que é um elemento filho do elemento `<aws>`:

```
<aws>
  <logging logMetrics="true"/>
</aws>
```

Como alternativa, defina a chave `AWSLogMetrics` na seção`<appSettings>`:

```
<add key="AWSLogMetrics" value="true">
```

Como alternativa, para definir o registro de métricas com a AWS SDK para .NET API, defina [AWSConfigso. LogMetrics](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html)propriedade:

```
AWSConfigs.LogMetrics = true;
```

Essa definição configura propriedade padrão `LogMetrics` para todos os clientes/configurações. As alterações nessa configuração entram em vigor somente para novas instâncias AWS do cliente.

### AWSRegion
<a name="config-setting-awsregion"></a>

Configura a AWS região padrão para clientes que não especificaram explicitamente uma região. Para definir a região no arquivo `.config`, a abordagem recomendada é definir o valor do atributo `region` no elemento `aws`:

```
<aws region="us-west-2"/>
```

Como alternativa, defina a chave *AWSRegion* na seção`<appSettings>`:

```
<add key="AWSRegion" value="us-west-2"/>
```

Como alternativa, para definir a região com a AWS SDK para .NET API, defina [AWSConfigso. AWSRegion](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html)propriedade:

```
AWSConfigs.AWSRegion = "us-west-2";
```

Para obter mais informações sobre como criar um AWS cliente para uma região específica, consulte [Seleção de AWS região](net-dg-region-selection.md). As alterações nessa configuração entram em vigor somente para novas instâncias AWS do cliente.

### AWSResponseRegistro
<a name="config-setting-awsresponselogging"></a>

Configura quando o SDK deve registrar respostas de serviços. Os valores possíveis são:

** `Never` **  
Nunca registrar as respostas de serviços. Esse é o padrão.

** `Always` **  
Sempre registrar as respostas de serviços.

** `OnError` **  
Somente registrar as respostas de serviços quando ocorrer um erro.

Para definir a configuração do registro de serviços no arquivo `.config`, a abordagem recomendada é definir o valor do atributo `logResponses` no elemento `<logging>`, que é um elemento filho do elemento `<aws>`:

```
<aws>
  <logging logResponses="OnError"/>
</aws>
```

Como alternativa, defina a chave de *AWSResponseregistro* na `<appSettings>` seção:

```
<add key="AWSResponseLogging" value="OnError"/>
```

Como alternativa, para definir o registro de serviços com a AWS SDK para .NET API, defina [AWSConfigso. ResponseLogging](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html)propriedade de um dos valores da [ResponseLoggingOption](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TResponseLoggingOption.html)enumeração:

```
AWSConfigs.ResponseLogging = ResponseLoggingOption.OnError;
```

As alterações desta configuração entram em vigor imediatamente.

### `AWS.DynamoDBContext.TableNamePrefix`
<a name="config-setting-aws-dynamodbcontext-tablenameprefix"></a>

Configura a `TableNamePrefix` padrão que o `DynamoDBContext` usará, se não for configurada manualmente.

Para definir o prefixo do nome da tabela no arquivo `.config`, a abordagem recomendada é definir o valor do atributo `tableNamePrefix` no elemento `<dynamoDBContext>`, que é um elemento filho do elemento `<dynamoDB>`, que por sua vez é um elemento filho do elemento `<aws>`:

```
<dynamoDBContext tableNamePrefix="Test-"/>
```

Como alternativa, defina a chave `AWS.DynamoDBContext.TableNamePrefix` na seção`<appSettings>`:

```
<add key="AWS.DynamoDBContext.TableNamePrefix" value="Test-"/>
```

Como alternativa, para definir o prefixo do nome da tabela com a AWS SDK para .NET API, defina a propriedade [AWSConfigsDBContextTableNamePrefix.Dynamo](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html):

```
AWSConfigs.DynamoDBContextTableNamePrefix = "Test-";
```

As alterações desta configuração serão implementadas somente em instâncias recentemente criadas do `DynamoDBContextConfig` e `DynamoDBContext`.

### `AWS.S3.UseSignatureVersion4`
<a name="config-setting-aws-s3-usesignatureversion4"></a>

Configura se o cliente do Amazon S3 deve ou não usar a assinatura do Signature versão 4 com as solicitações.

Para definir a assinatura da versão 4 para o Amazon S3 no arquivo `.config`, a abordagem recomendada é definir o valor do atributo `useSignatureVersion4` do elemento `<s3>`, que é um elemento filho do elemento `<aws>`:

```
<aws>
  <s3 useSignatureVersion4="true"/>
</aws>
```

Como alternativa, defina a chave `AWS.S3.UseSignatureVersion4` como `true` na seção `<appSettings>`:

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

Como alternativa, para definir a assinatura da versão 4 com a AWS SDK para .NET API, defina a propriedade [AWSConfigs.S3 UseSignatureVersion 4](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) como: `true`

```
AWSConfigs.S3UseSignatureVersion4 = true;
```

Por padrão, esta configuração é `false`, mas o Signature versão 4 pode ser usado como padrão em alguns casos ou em algumas regiões. Quando a configuração é `true`, o Signature versão 4 será usada em todas as solicitações. As alterações desta configuração entram em vigor somente para novas instâncias de cliente do Amazon S3.

### AWSEndpointDefinição
<a name="config-setting-awsendpointdefinition"></a>

Configura se o SDK deve ou não usar um arquivo de configuração personalizado que define as regiões e os endpoints.

Para definir o arquivo de definição do endpoint no arquivo `.config`, recomendamos definir o valor do atributo `endpointDefinition` no elemento `<aws>`.

```
<aws endpointDefinition="c:\config\endpoints.json"/>
```

Como alternativa, você pode definir a chave de *AWSEndpointdefinição* na `<appSettings>` seção:

```
<add key="AWSEndpointDefinition" value="c:\config\endpoints.json"/>
```

[Como alternativa, para definir o arquivo de definição do endpoint com a AWS SDK para .NET API, defina o. AWSConfigs EndpointDefinition](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html)propriedade:

```
AWSConfigs.EndpointDefinition = @"c:\config\endpoints.json";
```

Se nenhum nome de arquivo for fornecido, não será usado um arquivo de configuração personalizado. As alterações nessa configuração entram em vigor somente para novas instâncias AWS do cliente. O arquivo endpoint.json está disponível em [https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/endpoints.json](https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/endpoints.json).

### AWS Endpoints gerados por serviços
<a name="config-setting-service-generated-awsendpointdefinition"></a>

Alguns AWS serviços geram seus próprios endpoints em vez de consumir um endpoint regional. Os clientes desses serviços consomem um URL de serviço específico ao serviço e aos recursos. Dois exemplos desses serviços são Amazon CloudSearch AWS IoT e. Os exemplos a seguir mostram como obter os endpoints para esses serviços.

#### Exemplo de CloudSearch endpoints da Amazon
<a name="cs-endpoints-example"></a>

O CloudSearch cliente da Amazon é usado para acessar o serviço de CloudSearch configuração da Amazon. Você usa o serviço CloudSearch de configuração da Amazon para criar, configurar e gerenciar domínios de pesquisa. Para criar um domínio de pesquisa, crie um [CreateDomainRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearch/TCreateDomainRequest.html)objeto e forneça a `DomainName` propriedade. Crie um [AmazonCloudSearchClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearch/TCloudSearchClient.html)objeto usando o objeto de solicitação. Chame o método [CreateDomain](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearch/MCloudSearchCreateDomainCreateDomainRequest.html). O [CreateDomainResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearch/TCreateDomainResponse.html)objeto retornado da chamada contém uma `DomainStatus` propriedade que tem os `SearchService` pontos finais `DocService` e. Crie um [AmazonCloudSearchDomainConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearchDomain/TCloudSearchDomainConfig.html)objeto e use-o para inicializar `DocService` as `SearchService` instâncias da [AmazonCloudSearchDomainClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudSearchDomain/TCloudSearchDomainClient.html)classe.

```
// Create domain and retrieve DocService and SearchService endpoints
DomainStatus domainStatus;
using (var searchClient = new AmazonCloudSearchClient())
{
    var request = new CreateDomainRequest
    {
        DomainName = "testdomain"
    };
    domainStatus = searchClient.CreateDomain(request).DomainStatus;
    Console.WriteLine(domainStatus.DomainName + " created");
}

// Test the DocService endpoint
var docServiceConfig = new AmazonCloudSearchDomainConfig
{
    ServiceURL = "https://" + domainStatus.DocService.Endpoint
};
using (var domainDocService = new AmazonCloudSearchDomainClient(docServiceConfig))
{
    Console.WriteLine("Amazon CloudSearchDomain DocService client instantiated using the DocService endpoint");
    Console.WriteLine("DocService endpoint = " + domainStatus.DocService.Endpoint);

    using (var docStream = new FileStream(@"C:\doc_source\XMLFile4.xml", FileMode.Open))
    {
        var upload = new UploadDocumentsRequest
        {
            ContentType = ContentType.ApplicationXml,
            Documents = docStream
        };
        domainDocService.UploadDocuments(upload);
    }
}

// Test the SearchService endpoint
var searchServiceConfig = new AmazonCloudSearchDomainConfig
{
    ServiceURL = "https://" + domainStatus.SearchService.Endpoint
};
using (var domainSearchService = new AmazonCloudSearchDomainClient(searchServiceConfig))
{
    Console.WriteLine("Amazon CloudSearchDomain SearchService client instantiated using the SearchService endpoint");
    Console.WriteLine("SearchService endpoint = " + domainStatus.SearchService.Endpoint);

    var searchReq = new SearchRequest
    {
        Query = "Gambardella",
        Sort = "_score desc",
        QueryParser = QueryParser.Simple
    };
    var searchResp = domainSearchService.Search(searchReq);
}
```

#### AWS IoT Exemplo de endpoints
<a name="iotlong-endpoints-example"></a>

Para obter o endpoint para AWS IoT, crie um [AmazonIoTClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IoT/TIoTClient.html)objeto e chame o [DescribeEndPoint](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IoT/MIoTDescribeEndpointDescribeEndpointRequest.html)método. O [DescribeEndPointResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IoT/TDescribeEndpointResponse.html)objeto retornado contém `EndpointAddress` o. Crie um [AmazonIotDataConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IotData/TIotDataConfig.html)objeto, defina a `ServiceURL` propriedade e use o objeto para instanciar a [AmazonIotDataClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/IotData/TIotDataClient.html)classe.

```
string iotEndpointAddress;
using (var iotClient = new AmazonIoTClient())
{
    var endPointResponse = iotClient.DescribeEndpoint();
    iotEndpointAddress = endPointResponse.EndpointAddress;
}

var ioTdocServiceConfig = new AmazonIotDataConfig
{
    ServiceURL = "https://" + iotEndpointAddress
};
using (var dataClient = new AmazonIotDataClient(ioTdocServiceConfig))
{
    Console.WriteLine("AWS IoTData client instantiated using the endpoint from the IotClient");
}
```

# Referência dos arquivos de configuração para o AWS SDK para .NET
<a name="net-dg-config-ref"></a>

**nota**  
As informações neste tópico são específicas para projetos baseados no .NET Framework. Os arquivos `App.config` e `Web.config` não estão presentes por padrão em projetos baseados no .NET Core.

## Abra para ver o conteúdo do .NET Framework
<a name="w2aab9c31c11b5b1"></a>

Use um arquivo `App.config` ou `Web.config` de projeto .NET para especificar as configurações da AWS, como credenciais da AWS, opções de registro em log, endpoints de serviço da AWS e regiões da AWS, bem como algumas configurações dos serviços da AWS, como Amazon DynamoDB, Amazon EC2 e Amazon S3. As informações a seguir descrevem como formatar de forma apropriada um arquivo `App.config` ou `Web.config` para especificar esses tipos de configurações.

**nota**  
Embora seja possível continuar a usar o elemento `<appSettings>` em um arquivo `App.config` ou `Web.config` para especificar as configurações da AWS, recomendamos o uso dos elementos `<configSections>` e `<aws>` conforme descrito posteriormente neste tópico. Para obter mais informações sobre o elemento `<appSettings>`, consulte os exemplos do elemento `<appSettings>` em [Configuração do seu aplicativo AWS SDK para .NET](net-dg-config.md).

**nota**  
Embora seja possível continuar a usar as propriedades a seguir da classe [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) em um arquivo de código para especificar as configurações da AWS, estas propriedades são obsoletas e podem não comportar versões futuras:  
 `DynamoDBContextTableNamePrefix` 
 `EC2UseSignatureVersion4` 
 `LoggingOptions` 
 `LogMetrics` 
 `ResponseLoggingOption` 
 `S3UseSignatureVersion4` 
Geralmente, recomendamos que em vez de usar as propriedades da classe `AWSConfigs` em um arquivo de código para especificar as configurações da AWS, use os elementos `<configSections>` e `<aws>` em um arquivo `App.config` ou `Web.config` para especificar as configurações da AWS, conforme descrito posteriormente neste tópico. Para obter mais informações sobre as propriedades anteriores, consulte os exemplos de códigos da `AWSConfigs` em [Configuração do seu aplicativo AWS SDK para .NET](net-dg-config.md).

**Topics**
+ [Declarar uma seção de configurações da AWS](#net-dg-config-ref-declaring)
+ [Elementos permitidos](#net-dg-config-ref-elements)
+ [Referência dos elementos](#net-dg-config-ref-elements-ref)

### Declarar uma seção de configurações da AWS
<a name="net-dg-config-ref-declaring"></a>

Especifique as configurações da AWS em um arquivo `App.config` ou `Web.config` a partir do elemento `<aws>`. Antes de começar a usar o elemento `<aws>`, é necessário criar um elemento `<section>` (que é um elemento filho do elemento `<configSections>`) e definir o seu atributo `name` como `aws` e o atributo `type` como `Amazon.AWSSection, AWSSDK.Core`, conforme mostrado no seguinte exemplo:

```
<?xml version="1.0"?>
<configuration>
  ...
  <configSections>
    <section name="aws" type="Amazon.AWSSection, AWSSDK.Core"/>
  </configSections>
  <aws>
    <!-- Add your desired AWS settings declarations here. -->
  </aws>
  ...
</configuration>
```

O editor do Visual Studio não oferece a conclusão de código automática (IntelliSense) para o elemento `<aws>` ou para os seus elementos filho.

Para auxiliá-lo na criação de uma versão corretamente formatada `<aws>`, chame o método `Amazon.AWSConfigs.GenerateConfigTemplate`. Isso gera como saída uma versão canônica do elemento `<aws>` como uma string formatada, que pode ser adaptada para as suas necessidades. As seções a seguir descrevem os atributos e os elementos filho do elemento `<aws>`.

### Elementos permitidos
<a name="net-dg-config-ref-elements"></a>

A seguir encontra-se uma lista das relações lógicas entre os elementos permitidos em uma seção de configurações da AWS. Gere a versão mais recente dessa lista chamando o método `Amazon.AWSConfigs.GenerateConfigTemplate`, que gera como saída uma versão canônica do elemento `<aws>` como uma string que pode ser adaptada para as suas necessidades.

```
<aws
  endpointDefinition="string value"
  region="string value"
  profileName="string value"
  profilesLocation="string value">
  <logging
    logTo="None, Log4Net, SystemDiagnostics"
    logResponses="Never | OnError | Always"
    logMetrics="true | false"
    logMetricsFormat="Standard | JSON"
    logMetricsCustomFormatter="NameSpace.Class, Assembly" />
  <dynamoDB
    conversionSchema="V1 | V2">
    <dynamoDBContext
      tableNamePrefix="string value">
      <tableAliases>
        <alias
          fromTable="string value"
          toTable="string value" />
      </tableAliases>
      <map
        type="NameSpace.Class, Assembly"
        targetTable="string value">
        <property
          name="string value"
          attribute="string value"
          ignore="true | false"
          version="true | false"
          converter="NameSpace.Class, Assembly" />
      </map>
    </dynamoDBContext>
  </dynamoDB>
  <s3
    useSignatureVersion4="true | false" />
  <ec2
    useSignatureVersion4="true | false" />
  <proxy
    host="string value"
    port="1234"
    username="string value"
    password="string value" />
</aws>
```

### Referência dos elementos
<a name="net-dg-config-ref-elements-ref"></a>

A seguir encontra-se uma lista dos elementos permitidos em uma seção de configurações da AWS. Para cada elemento, são listados os atributos permitidos e os elementos filho.

**Topics**
+ [alias](#net-dg-config-ref-elements-alias)
+ [`aws`](#net-dg-config-ref-elements-aws)
+ [dynamoDB](#net-dg-config-ref-elements-dynamodb)
+ [dynamoDBContext](#net-dg-config-ref-elements-ddbcontext)
+ [ec2](#net-dg-config-ref-elements-ec2)
+ [registro em log](#net-dg-config-ref-elements-logging)
+ [mapear](#net-dg-config-ref-elements-map)
+ [property](#net-dg-config-ref-elements-property)
+ [proxy](#net-dg-config-ref-elements-proxy)
+ [s3](#net-dg-config-ref-elements-s3)

#### alias
<a name="net-dg-config-ref-elements-alias"></a>

O elemento `<alias>` representa um único item em um conjunto de um ou mais mapeamentos from-table até to-table, que especifica uma tabela diferente daquela configurada para um tipo. Esse elemento é mapeado para uma instância da classe `Amazon.Util.TableAlias` da propriedade `Amazon.AWSConfigs.DynamoDBConfig.Context.TableAliases` no AWS SDK para .NET. O remapeamento é feito antes de aplicar um prefixo de nome da tabela.

Esse elemento pode incluir os seguintes atributos:

** `fromTable` **  
A parte from-table do mapeamento from-table até to-table. Esse atributo é mapeado para a propriedade `Amazon.Util.TableAlias.FromTable` no AWS SDK para .NET.

** `toTable` **  
A parte to-table do mapeamento from-table até to-table. Esse atributo é mapeado para a propriedade `Amazon.Util.TableAlias.ToTable` no AWS SDK para .NET.

O pai do elemento `<alias>` é o elemento `<tableAliases>`.

O elemento `<alias>` não contém elementos filho.

Veja a seguir um exemplo do elemento `<alias>` em uso:

```
<alias
  fromTable="Studio"
  toTable="Studios" />
```

#### `aws`
<a name="net-dg-config-ref-elements-aws"></a>

O elemento `<aws>` representa o elemento mais superior em uma seção de configurações da AWS. Esse elemento pode incluir os seguintes atributos:

** `endpointDefinition` **  
O caminho absoluto para um arquivo de configuração personalizado que define as regiões e endpoints da AWS para o uso. Esse atributo é mapeado para a propriedade `Amazon.AWSConfigs.EndpointDefinition` no AWS SDK para .NET.

** `profileName` **  
O nome do perfil para as credenciais da AWS armazenadas que serão utilizadas para realizar chamadas de serviços. Esse atributo é mapeado para a propriedade `Amazon.AWSConfigs.AWSProfileName` no AWS SDK para .NET.

** `profilesLocation` **  
O caminho absoluto do local do arquivo de credenciais compartilhado com outros SDKs da AWS. Por padrão, o arquivo de credenciais está armazenado no diretório `.aws` no diretório base do usuário atual. Esse atributo é mapeado para a propriedade `Amazon.AWSConfigs.AWSProfilesLocation` no AWS SDK para .NET.

** `region` **  
O ID da região da AWS padrão para clientes que não especificaram explicitamente uma região. Esse atributo é mapeado para a propriedade `Amazon.AWSConfigs.AWSRegion` no AWS SDK para .NET.

O elemento `<aws>` não possui elemento pai.

O elemento `<aws>` pode incluir os seguintes elementos filho:
+  `<dynamoDB>` 
+  `<ec2>` 
+  `<logging>` 
+  `<proxy>` 
+  `<s3>` 

Veja a seguir um exemplo do elemento `<aws>` em uso:

```
<aws
  endpointDefinition="C:\Configs\endpoints.xml"
  region="us-west-2"
  profileName="development"
  profilesLocation="C:\Configs">
  <!-- ... -->
</aws>
```

#### dynamoDB
<a name="net-dg-config-ref-elements-dynamodb"></a>

O elemento `<dynamoDB>` representa um conjunto de configurações do Amazon DynamoDB. Este elemento pode incluir o atributo *conversionSchema*, que representa a versão a ser usada para conversão entre objetos .NET e DynamoDB. Os valores permitidos incluem V1 e V2. Esse atributo é mapeado para a classe `Amazon.DynamoDBv2.DynamoDBEntryConversion` no AWS SDK para .NET. Para obter mais informações, consulte [Série DynamoDB – esquemas de conversão](http://blogs.aws.amazon.com/net/post/Tx2TCOGWG7ARUH5/DynamoDB-Series-Conversion-Schemas).

O pai do elemento `<dynamoDB>` é o elemento `<aws>`.

O elemento `<dynamoDB>` pode incluir o elemento filho `<dynamoDBContext>`.

Veja a seguir um exemplo do elemento `<dynamoDB>` em uso:

```
<dynamoDB
  conversionSchema="V2">
  <!-- ... -->
</dynamoDB>
```

#### dynamoDBContext
<a name="net-dg-config-ref-elements-ddbcontext"></a>

O elemento `<dynamoDBContext>` representa um conjunto de configurações específicas de contexto do Amazon DynamoDB. Este elemento pode incluir o atributo *tableNamePrefix*, que representa o prefixo do nome da tabela padrão que o contexto do DynamoDB usará se não for configurado manualmente. Esse atributo é mapeado para a propriedade `Amazon.Util.DynamoDBContextConfig.TableNamePrefix` da propriedade `Amazon.AWSConfigs.DynamoDBConfig.Context.TableNamePrefix` no AWS SDK para .NET. Para obter mais informações, consulte [Aprimoramentos do DynamoDB SDK](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK).

O pai do elemento `<dynamoDBContext>` é o elemento `<dynamoDB>`.

O elemento `<dynamoDBContext>` pode incluir os seguintes elementos filho:
+  `<alias>` (uma ou mais instâncias)
+  `<map>` (uma ou mais instâncias)

Veja a seguir um exemplo do elemento `<dynamoDBContext>` em uso:

```
<dynamoDBContext
  tableNamePrefix="Test-">
  <!-- ... -->
</dynamoDBContext>
```

#### ec2
<a name="net-dg-config-ref-elements-ec2"></a>

O elemento `<ec2>` representa um conjunto de configurações do Amazon EC2. Este elemento pode incluir o atributo *useSignatureVersion4*, que especifica se a assinatura do Signature Version4 será usada para todas as solicitações (verdadeiro) ou se ela não será usada para todas as solicitações (falso, o padrão). Esse atributo é mapeado para a propriedade `Amazon.Util.EC2Config.UseSignatureVersion4` da propriedade `Amazon.AWSConfigs.EC2Config.UseSignatureVersion4` no AWS SDK para .NET.

O pai do elemento `<ec2>` é o elemento.

O elemento `<ec2>` não contém elementos filho.

Veja a seguir um exemplo do elemento `<ec2>` em uso:

```
<ec2
  useSignatureVersion4="true" />
```

#### registro em log
<a name="net-dg-config-ref-elements-logging"></a>

O elemento `<logging>` representa um conjunto de configurações para o registro de respostas e de métricas de desempenho. Esse elemento pode incluir os seguintes atributos:

** `logMetrics` **  
Se as métricas de desempenho serão registradas para todos os clientes e configurações (verdadeiro); caso contrário, falso. Esse atributo é mapeado para a propriedade `Amazon.Util.LoggingConfig.LogMetrics` da propriedade `Amazon.AWSConfigs.LoggingConfig.LogMetrics` no AWS SDK para .NET.

** `logMetricsCustomFormatter` **  
O tipo de dados e o nome do conjunto de um formatador personalizado para as métricas de registro. Esse atributo é mapeado para a propriedade `Amazon.Util.LoggingConfig.LogMetricsCustomFormatter` da propriedade `Amazon.AWSConfigs.LoggingConfig.LogMetricsCustomFormatter` no AWS SDK para .NET.

** `logMetricsFormat` **  
O formato em que as métricas de registro são apresentadas (é mapeado para a propriedade `Amazon.Util.LoggingConfig.LogMetricsFormat` da propriedade `Amazon.AWSConfigs.LoggingConfig.LogMetricsFormat` no AWS SDK para .NET).  
Os valores permitidos incluem:    
** `JSON` **  
Use o formato JSON.  
** `Standard` **  
Use o formato padrão.

** `logResponses` **  
Quando registrar as respostas de serviços (é mapeado para a propriedade `Amazon.Util.LoggingConfig.LogResponses` da propriedade `Amazon.AWSConfigs.LoggingConfig.LogResponses` no AWS SDK para .NET).  
Os valores permitidos incluem:    
** `Always` **  
Sempre registrar as respostas de serviços.  
** `Never` **  
Nunca registrar as respostas de serviços.  
** `OnError` **  
Somente registrar as respostas de serviços quando existirem erros.

** `logTo` **  
Onde registrar (é mapeado para a propriedade `LogTo` a partir da propriedade `Amazon.AWSConfigs.LoggingConfig.LogTo` no AWS SDK para .NET).  
Os valores permitidos incluem um ou mais entre:    
** `Log4Net` **  
Registrar no log4net.  
** `None` **  
Desativar o registro.  
** `SystemDiagnostics` **  
Registrar no System.Diagnostics.

O pai do elemento `<logging>` é o elemento `<aws>`.

O elemento `<logging>` não contém elementos filho.

Veja a seguir um exemplo do elemento `<logging>` em uso:

```
<logging
  logTo="SystemDiagnostics"
  logResponses="OnError"
  logMetrics="true"
  logMetricsFormat="JSON"
  logMetricsCustomFormatter="MyLib.Util.MyMetricsFormatter, MyLib" />
```

#### mapear
<a name="net-dg-config-ref-elements-map"></a>

O elemento `<map>` representa um único item em um conjunto de mapeamentos type-to-table de tipos .NET para tabelas do DynamoDB (é mapeado para uma instância da classe `TypeMapping` da propriedade `Amazon.AWSConfigs.DynamoDBConfig.Context.TypeMappings` no AWS SDK para .NET). Para obter mais informações, consulte [Aprimoramentos do DynamoDB SDK](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK).

Esse elemento pode incluir os seguintes atributos:

** `targetTable` **  
A tabela do DynamoDB a qual o mapeamento se aplica. Esse atributo é mapeado para a propriedade `Amazon.Util.TypeMapping.TargetTable` no AWS SDK para .NET.

** `type` **  
O tipo e o nome do conjunto ao qual o mapeamento se aplica. Esse atributo é mapeado para a propriedade `Amazon.Util.TypeMapping.Type` no AWS SDK para .NET.

O pai do elemento `<map>` é o elemento `<dynamoDBContext>`.

O elemento `<map>` pode incluir uma ou mais instâncias do elemento filho `<property>`.

Veja a seguir um exemplo do elemento `<map>` em uso:

```
<map
  type="SampleApp.Models.Movie, SampleDLL"
  targetTable="Movies">
  <!-- ... -->
</map>
```

#### property
<a name="net-dg-config-ref-elements-property"></a>

O elemento `<property>` representa uma propriedade do DynamoDB. (Este elemento é mapeado para uma instância da classe Amazon.Util.PropertyConfig do método `AddProperty` no AWS SDK para .NET) Para obter mais informações, consulte [Aprimoramentos do DynamoDB SDK](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK) e [Atributos do DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DeclarativeTagsList.html).

Esse elemento pode incluir os seguintes atributos:

** `attribute` **  
O nome de um atributo da propriedade, como o nome de uma chave de intervalo. Esse atributo é mapeado para a propriedade `Amazon.Util.PropertyConfig.Attribute` no AWS SDK para .NET.

** `converter` **  
O tipo de conversor que deve ser usado para esta propriedade. Esse atributo é mapeado para a propriedade `Amazon.Util.PropertyConfig.Converter` no AWS SDK para .NET.

** `ignore` **  
Se a propriedade associada deve ser ignorada (verdadeiro); caso contrário, falso. Esse atributo é mapeado para a propriedade `Amazon.Util.PropertyConfig.Ignore` no AWS SDK para .NET.

** `name` **  
O nome da propriedade. Esse atributo é mapeado para a propriedade `Amazon.Util.PropertyConfig.Name` no AWS SDK para .NET.

** `version` **  
Se essa propriedade deve armazenar o número da versão do item (verdadeiro); caso contrário, falso. Esse atributo é mapeado para a propriedade `Amazon.Util.PropertyConfig.Version` no AWS SDK para .NET.

O pai do elemento `<property>` é o elemento `<map>`.

O elemento `<property>` não contém elementos filho.

Veja a seguir um exemplo do elemento `<property>` em uso:

```
<property
  name="Rating"
  converter="SampleApp.Models.RatingConverter, SampleDLL" />
```

#### proxy
<a name="net-dg-config-ref-elements-proxy"></a>

O elemento `<proxy>` representa as configurações necessárias de um proxy para o seu uso pelo AWS SDK para .NET. Esse elemento pode incluir os seguintes atributos:

**host**  
O nome do host ou endereço IP do servidor de proxy. Esses atributos são mapeados para a propriedade `Amazon.Util.ProxyConfig.Host` da propriedade `Amazon.AWSConfigs.ProxyConfig.Host` no AWS SDK para .NET.

**password**  
A senha para a autenticação com o servidor de proxy. Esses atributos são mapeados para a propriedade `Amazon.Util.ProxyConfig.Password` da propriedade `Amazon.AWSConfigs.ProxyConfig.Password` no AWS SDK para .NET.

**porta**  
O número da porta do proxy. Esses atributos são mapeados para a propriedade `Amazon.Util.ProxyConfig.Port` da propriedade `Amazon.AWSConfigs.ProxyConfig.Port` no AWS SDK para .NET.

**username**  
O nome de usuário para a autenticação com o servidor de proxy. Esses atributos são mapeados para a propriedade `Amazon.Util.ProxyConfig.Username` da propriedade `Amazon.AWSConfigs.ProxyConfig.Username` no AWS SDK para .NET.

O pai do elemento `<proxy>` é o elemento `<aws>`.

O elemento `<proxy>` não contém elementos filho.

Veja a seguir um exemplo do elemento `<proxy>` em uso:

```
<proxy
  host="192.0.2.0"
  port="1234"
  username="My-Username-Here"
  password="My-Password-Here" />
```

#### s3
<a name="net-dg-config-ref-elements-s3"></a>

O elemento `<s3>` representa um conjunto de configurações do Amazon S3. Este elemento pode incluir o atributo *useSignatureVersion4*, que especifica se a assinatura do Signature Version4 será usada para todas as solicitações (verdadeiro) ou se ela não será usada para todas as solicitações (falso, o padrão). Esse atributo é mapeado para a propriedade `Amazon.AWSConfigs.S3Config.UseSignatureVersion4` no AWS SDK para .NET.

O pai do elemento `<s3>` é o elemento `<aws>`.

O elemento `<s3>` não contém elementos filho.

Veja a seguir um exemplo do elemento `<s3>` em uso:

```
<s3 useSignatureVersion4="true" />
```

# Uso de credenciais herdadas
<a name="net-dg-legacy-creds"></a>

Os tópicos desta seção fornecem informações sobre como usar credenciais de longo ou curto prazo sem usar o Centro de Identidade do AWS IAM.

**Atenção**  
Para evitar riscos de segurança, não use usuários do IAM para autenticação ao desenvolver software com propósito específico ou trabalhar com dados reais. Em vez disso, use federação com um provedor de identidade, como [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).

**nota**  
As informações neste tópico são para circunstâncias em que você precisa obter e gerenciar manualmente as credenciais de curto ou longo prazo. Para obter informações adicionais sobre credenciais de curto e longo prazo, consulte [Outras formas de autenticação no Guia](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html) de *referência de ferramentas AWS SDKs e ferramentas*.  
Para obter as melhores práticas de segurança Centro de Identidade do AWS IAM, use, conforme descrito em[Configure a autenticação do SDK](creds-idc.md).

## Avisos e orientações importantes para credenciais
<a name="net-dg-config-creds-warnings-and-guidelines"></a>

**Avisos para credenciais**
+ ***NÃO*** use as credenciais raiz da sua conta para acessar AWS recursos. Estas credenciais fornecem acesso ilimitado à conta e são difíceis de revogar.
+ ***NÃO*** coloque chaves de acesso literais ou informações de credenciais em arquivos de aplicações. Se colocar, criará um risco de exposição acidental das credenciais se, por exemplo, fizer upload do projeto em um repositório público.
+ ***NÃO*** inclua arquivos que contenham credenciais em sua área de projeto.
+ Esteja ciente de que todas as credenciais armazenadas no AWS `credentials` arquivo compartilhado são armazenadas em texto simples.

**Orientação adicional para gerenciar credenciais com segurança**

[Para uma discussão geral sobre como gerenciar AWS credenciais com segurança, consulte Credenciais de [AWS segurança](https://docs.aws.amazon.com/general/latest/gr/Welcome.html#aws-security-credentials) em e [Melhores práticas de segurança [Referência geral da AWS](https://docs.aws.amazon.com/general/latest/gr/)e casos de uso no Guia](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) do usuário do IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/) Além dessas discussões, considere o seguinte:
+ Crie usuários adicionais, como usuários no Centro de Identidade do IAM, e use as credenciais deles em vez de usar suas credenciais de usuário raiz da AWS . As credenciais de outros usuários poderão ser revogadas, se necessário, ou são temporárias por natureza. Além disso, você pode aplicar uma política a cada usuário para acessar somente determinados recursos e ações e, assim, adotar uma postura de permissões com privilégio mínimo.
+ Use [perfis do IAM para tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) do Amazon Elastic Container Service (Amazon ECS).
+ Use [perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) para aplicações em execução nas instâncias do Amazon EC2.
+ Use [credenciais temporárias](creds-assign.md#net-dg-config-creds-assign-role) ou variáveis de ambiente para aplicativos disponíveis para usuários de fora da organização.

**Topics**
+ [Avisos e orientações importantes para credenciais](#net-dg-config-creds-warnings-and-guidelines)
+ [Usando o arquivo de AWS credenciais compartilhado](creds-file.md)
+ [Usando a SDK Store (somente Windows)](sdk-store.md)

# Usando o arquivo de AWS credenciais compartilhado
<a name="creds-file"></a>

(Assegure-se de revisar os [avisos e orientações importantes para credenciais](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines).)

Uma forma de fornecer credenciais para seus aplicativos é criar perfis no *arquivo de credenciais compartilhado da AWS * e, em seguida, armazenar as credenciais nesses perfis. Esse arquivo pode ser usado pelo outro AWS SDKs. Ele também pode ser usado pelo [AWS CLI[AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)](https://docs.aws.amazon.com/cli/latest/userguide/), pelo e pelos AWS kits de ferramentas do [Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/) e do [VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/). [JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/)

**Atenção**  
Para evitar riscos de segurança, não use usuários do IAM para autenticação ao desenvolver software com propósito específico ou trabalhar com dados reais. Em vez disso, use federação com um provedor de identidade, como [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).

**nota**  
As informações neste tópico são para circunstâncias em que você precisa obter e gerenciar manualmente as credenciais de curto ou longo prazo. Para obter informações adicionais sobre credenciais de curto e longo prazo, consulte [Outras formas de autenticação no Guia](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html) de *referência de ferramentas AWS SDKs e ferramentas*.  
Para obter as melhores práticas de segurança Centro de Identidade do AWS IAM, use, conforme descrito em[Configure a autenticação do SDK](creds-idc.md).

## Informações gerais
<a name="creds-file-general-info"></a>

Por padrão, o arquivo de AWS credenciais compartilhadas está localizado no `.aws` diretório dentro do seu diretório inicial e é nomeado`credentials`; ou seja, `~/.aws/credentials` (Linux ou macOS) `%USERPROFILE%\.aws\credentials` ou (Windows). Para obter informações sobre locais alternativos, consulte [Localização dos arquivos compartilhados](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html) no *[Guia de referência de ferramentas AWS SDKs e ferramentas](https://docs.aws.amazon.com/sdkref/latest/guide/overview.html)*. Também consulte [Acessar credenciais e perfis em um aplicativo](creds-locate.md).

O arquivo de AWS credenciais compartilhado é um arquivo de texto simples e segue um determinado formato. Para obter informações sobre o formato dos arquivos de AWS credenciais, consulte [Formato do arquivo de credenciais no Guia](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-creds) de *Referência de Ferramentas AWS SDKs e Ferramentas*.

Você pode gerenciar os perfis no arquivo de AWS credenciais compartilhadas de várias maneiras.
+ Use qualquer editor de texto para criar e atualizar o arquivo de AWS credenciais compartilhado.
+ Use o [Amazon.Runtime. CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html)namespace da AWS SDK para .NET API, conforme mostrado posteriormente neste tópico.
+ Use comandos e procedimentos para o [Ferramentas da AWS para PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html)e os AWS kits de ferramentas para [Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html) e [VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html). [JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-credentials.html)
+ Usar comandos do [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html); por exemplo, `aws configure set aws_access_key_id` e `aws configure set aws_secret_access_key`.

## Exemplos de gerenciamento de perfil
<a name="creds-file-examples"></a>

As seções a seguir mostram exemplos de perfis no arquivo de AWS credenciais compartilhado. Alguns dos exemplos mostram o resultado, que pode ser obtido através de qualquer um dos métodos de gerenciamento de credenciais descritos anteriormente. Outros exemplos mostram como usar um método específico.

### O perfil padrão.
<a name="creds-file-default"></a>

O arquivo de AWS credenciais compartilhado quase sempre terá um perfil chamado *default*. É aqui que ele AWS SDK para .NET procura as credenciais se nenhum outro perfil estiver definido.

O perfil `[default]` geralmente é parecido com o mostrado a seguir.

```
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### Criar um perfil de forma programática
<a name="creds-file-create-programmatically"></a>

Este exemplo mostra como criar um perfil e salvá-lo programaticamente no arquivo de AWS credenciais compartilhadas. Ele usa as seguintes classes do [Amazon.Runtime. CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html)namespace: [CredentialProfileOptions[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileOptions.html), e. [SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html)

```
using Amazon.Runtime.CredentialManagement;
...

// Do not include credentials in your code.
WriteProfile("my_new_profile", SecurelyStoredKeyID, SecurelyStoredSecretAccessKey);
...

void WriteProfile(string profileName, string keyId, string secret)
{
    Console.WriteLine($"Create the [{profileName}] profile...");
    var options = new CredentialProfileOptions
    {
        AccessKey = keyId,
        SecretKey = secret
    };
    var profile = new CredentialProfile(profileName, options);
    var sharedFile = new SharedCredentialsFile();
    sharedFile.RegisterProfile(profile);
}
```

**Atenção**  
Códigos como esse geralmente não deveriam estar em seu aplicativo. Se você inclui-lo em seu aplicativo, tome as devidas precauções para garantir que as chaves de texto simples não possam ser vistas no código, na rede ou mesmo na memória do computador.

A seguir está o perfil que foi criado por este exemplo.

```
[my_new_profile]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### Atualizar um perfil existente de forma programática
<a name="creds-file-update-programmatically"></a>

Este exemplo mostra como atualizar de forma programática o perfil que foi criado anteriormente. Ele usa as seguintes classes do [Amazon.Runtime. CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html)namespace: e. [CredentialProfile[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html)](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html) Ele também usa a [RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TRegionEndpoint.html)classe do namespace [Amazon](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/N.html).

```
using Amazon.Runtime.CredentialManagement;
...

AddRegion("my_new_profile", RegionEndpoint.USWest2);
...

void AddRegion(string profileName, RegionEndpoint region)
{
    var sharedFile = new SharedCredentialsFile();
    CredentialProfile profile;
    if (sharedFile.TryGetProfile(profileName, out profile))
    {
        profile.Region = region;
        sharedFile.RegisterProfile(profile);
    }
}
```

A seguir está o perfil atualizado.

```
[my_new_profile]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
region=us-west-2
```

**nota**  
Você também pode definir a AWS região em outros locais e usando outros métodos. Para obter mais informações, consulte [Configurar a região da AWS](net-dg-region-selection.md).

# Usando a SDK Store (somente Windows)
<a name="sdk-store"></a>

(Assegure-se de revisar os [avisos e diretrizes importantes](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines).)

No Windows, a *SDK Store* é outro local para criar perfis e armazenar credenciais criptografadas para seu AWS SDK para .NET aplicativo. Ela está localizada em `%USERPROFILE%\AppData\Local\AWSToolkit\RegisteredAccounts.json`. Você pode usar a SDK Store durante o desenvolvimento como alternativa ao [arquivo de credenciais compartilhado da AWS](creds-file.md).

**Atenção**  
Para evitar riscos de segurança, não use usuários do IAM para autenticação ao desenvolver software com propósito específico ou trabalhar com dados reais. Em vez disso, use federação com um provedor de identidade, como [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).

**nota**  
As informações neste tópico são para circunstâncias em que você precisa obter e gerenciar manualmente as credenciais de curto ou longo prazo. Para obter informações adicionais sobre credenciais de curto e longo prazo, consulte [Outras formas de autenticação no Guia](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html) de *referência de ferramentas AWS SDKs e ferramentas*.  
Para obter as melhores práticas de segurança Centro de Identidade do AWS IAM, use, conforme descrito em[Configure a autenticação do SDK](creds-idc.md).

## Informações gerais
<a name="sdk-store-general-info"></a>

A SDK Store oferece os seguintes benefícios:
+ As credenciais na SDK Store são criptografadas, e a SDK Store reside no diretório base do usuário. Isso limita o risco de exposição acidental das credenciais.
+ A SDK Store também oferece credenciais para o [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/) e o [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/).

Os perfis da SDK Store são específicos para um determinado usuário em um host particular. Não é possível copiá-los para outros hosts ou outros usuários. Isso significa que não é possível reutilizar os perfis da SDK Store que estiverem na máquina de desenvolvimento para outros hosts ou outras máquinas de desenvolvedores. Isso também significa que você não pode usar perfis da SDK Store em aplicativos de produção.

Gerencie os perfis na SDK Store das seguintes formas:
+ Usar a interface gráfica de usuário (GUI) no [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html).
+ Use o [Amazon.Runtime. CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html)namespace da AWS SDK para .NET API, conforme mostrado posteriormente neste tópico.
+ Usar comandos do [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html); por exemplo, `Set-AWSCredential` e `Remove-AWSCredentialProfile`.

## Exemplos de gerenciamento de perfil
<a name="sdk-store-examples"></a>

Os exemplos a seguir mostram como criar e atualizar um perfil de forma programática na SDK Store.

### Criar um perfil de forma programática
<a name="sdk-store-create-programmatically"></a>

Este exemplo mostra como criar um perfil e salvá-lo na SDK Store de forma programática. Ele usa as seguintes classes do [Amazon.Runtime. CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html)namespace: [CredentialProfileOptions[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileOptions.html), e [Net SDKCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TNetSDKCredentialsFile.html) File.

```
using Amazon.Runtime.CredentialManagement;
...

// Do not include credentials in your code.
WriteProfile("my_new_profile", SecurelyStoredKeyID, SecurelyStoredSecretAccessKey);
...

void WriteProfile(string profileName, string keyId, string secret)
{
    Console.WriteLine($"Create the [{profileName}] profile...");
    var options = new CredentialProfileOptions
    {
        AccessKey = keyId,
        SecretKey = secret
    };
    var profile = new CredentialProfile(profileName, options);
    var netSdkStore = new NetSDKCredentialsFile();
    netSdkStore.RegisterProfile(profile);
}
```

**Atenção**  
Códigos como esse geralmente não deveriam estar em seu aplicativo. Se ele estiver incluído em seu aplicativo, tome as devidas precauções para garantir que as chaves de texto simples não possam ser vistas no código, na rede ou mesmo na memória do computador.

A seguir está o perfil que foi criado por este exemplo.

```
"[generated GUID]" : {
    "AWSAccessKey" : "01000000D08...[etc., encrypted access key ID]",
    "AWSSecretKey" : "01000000D08...[etc., encrypted secret access key]",
    "ProfileType"  : "AWS",
    "DisplayName"  : "my_new_profile",
}
```

### Atualizar um perfil existente de forma programática
<a name="sdk-store-update-programmatically"></a>

Este exemplo mostra como atualizar de forma programática o perfil que foi criado anteriormente. Ele usa as seguintes classes do [Amazon.Runtime. CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html)namespace: [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)e [Net SDKCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TNetSDKCredentialsFile.html) File. Ele também usa a [RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TRegionEndpoint.html)classe do namespace [Amazon](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/N.html).

```
using Amazon.Runtime.CredentialManagement;
...

AddRegion("my_new_profile", RegionEndpoint.USWest2);
...

void AddRegion(string profileName, RegionEndpoint region)
{
    var netSdkStore = new NetSDKCredentialsFile();
    CredentialProfile profile;
    if (netSdkStore.TryGetProfile(profileName, out profile))
    {
        profile.Region = region;
        netSdkStore.RegisterProfile(profile);
    }
}
```

A seguir está o perfil atualizado.

```
"[generated GUID]" : {
    "AWSAccessKey" : "01000000D08...[etc., encrypted access key ID]",
    "AWSSecretKey" : "01000000D08...[etc., encrypted secret access key]",
    "ProfileType"  : "AWS",
    "DisplayName"  : "my_new_profile",
    "Region"       : "us-west-2"
}
```

**nota**  
Você também pode definir a AWS região em outros locais e usando outros métodos. Para obter mais informações, consulte [Configurar a região da AWS](net-dg-region-selection.md).