

A versão 4 (V4) do AWS SDK para .NET foi lançada\$1

Para obter informações sobre mudanças significativas e migrar seus aplicativos, consulte o [tópico de migração](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html).

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# Começando com o AWS SDK para .NET
<a name="net-dg-config"></a>

Saiba como instalar, configurar e usar AWS SDK para .NET o. Você deve instalar seu conjunto de ferramentas e configurar várias coisas essenciais que seu aplicativo precisa para acessar os AWS serviços. 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

Para obter informações sobre como configurar projetos e outras partes críticas, consulte[Configurando o AWS SDK para .NET](configuring-the-sdk.md).

**Topics**
+ [Instalando e configurando seu conjunto de ferramentas](net-dg-dev-env.md)
+ [Autenticando com AWS](creds-idc.md)
+ [Criando um aplicativo simples](quick-start.md)

# Instalando e configurando seu conjunto de ferramentas para o AWS SDK para .NET
<a name="net-dg-dev-env"></a>

Para usar o AWS SDK para .NET, você deve 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.

  Os 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 AWS kit de ferramentas, se estiver 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 AWS recursos e perfis locais do 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>

[Autenticando o com AWS SDK para .NET AWS](creds-idc.md)

# Autenticando o com AWS SDK para .NET 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 for AWS .NET v4.

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 aprimora a segurança ao eliminar a necessidade de armazenar credenciais de longo prazo localmente. Ao executar o `Invoke-AWSLogin ` cmdlet Ferramentas da AWS para PowerShell ou 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 v4 atualiza automaticamente o token quando necessário durante suas solicitações. 

**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.Iniciar sessão**
A falha em referenciar esses pacotes resultará em uma exceção de runtime.
+ [Ferramentas da AWS para PowerShell Guia do desenvolvedor de credenciais de login.](https://docs.aws.amazon.com/powershell/v5/userguide/creds-idc.html#login-con-creds)
+ [Faça login para desenvolvimento AWS local usando credenciais de console usando AWS CLI.](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html)

O `config` arquivo ficaria assim que você fizesse o login seguindo as etapas fornecidas acima para Ferramentas da AWS para PowerShell nossa 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*.

# Criando um aplicativo simples usando o 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).

Para obter informações sobre o desenvolvimento de software para AWS serviços específicos, juntamente com exemplos de código, consulte[ AWS Serviços de chamadas](working-with-aws-services.md). Consulte mais exemplos de código em [SDK para .NET (v4) 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 multiplataforma simples usando o AWS SDK para .NET
<a name="quick-start-s3-1-cross"></a>

Este tutorial usa o.NET Core para desenvolvimento multiplataforma. AWS SDK para .NET 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 [Instalando e configurando seu conjunto de ferramentas para o AWS SDK para .NET](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.

  Os 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
   ```

   Os comandos anteriores instalam os NuGet pacotes do [gerenciador de NuGet pacotes](https://www.nuget.org/profiles/awsdotnet). Como sabemos exatamente quais NuGet pacotes precisamos para este tutorial, podemos realizar essa 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 seguinte comando:

   ```
   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, 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, *amzn-s3-demo-bucket* substituindo-o pelo nome do bucket que você escolheu.

   ```
   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, exclua-o 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 em 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 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 [Instalando e configurando seu conjunto de ferramentas para o AWS SDK para .NET](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 novo projeto que use a versão C\$1 do modelo de **aplicativo de console**; ou seja, com a descrição: “... para criar um aplicativo de linha de comando que pode ser executado no.NET...”. 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, escolha **Tools**, **NuGetPackage Manager**, **Manage NuGet Packages for Solution**.

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

   Esse processo instala os NuGet pacotes do [gerenciador de NuGet pacotes](https://www.nuget.org/profiles/awsdotnet). Como sabemos exatamente quais NuGet pacotes precisamos para este tutorial, podemos realizar essa 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 ela, 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 comando, *amzn-s3-demo-bucket* substitua o comando a seguir pelo nome do bucket que você escolheu.

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

   Ou, se você estiver executando o aplicativo no IDE, escolha **Projeto**, **CreateAndList Propriedades do S3**, **Depurar** e insira o nome do bucket lá.

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, exclua-o 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 AWS recursos ou recursos em seu ambiente de desenvolvimento, como arquivos e pastas.

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