

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

# Tutorial: implantar um aplicativo "Hello, World\$1" aplicativo com CodeDeploy (Windows Server)
<a name="tutorials-windows"></a>

Neste tutorial, você implanta uma única página da web em uma única instância do Amazon EC2 do Windows Server que executa o IIS (Serviços de Informações da Internet) como seu servidor web. Essa página da web exibe um "Hello, World\$1" simples mensagem.

Não é o que você está procurando?
+ Em vez disso, para praticar a implantação em uma instância Amazon EC2 do Amazon Linux ou Red Hat Enterprise Linux (RHEL), consulte [Tutorial: Implante WordPress em uma instância do Amazon EC2 (Amazon Linux ou Red Hat Enterprise Linux e Linux, macOS ou Unix)](tutorials-wordpress.md).
+ Para praticar a implantação em uma instância local, consulte [Tutorial: Implantar um aplicativo em uma instância local com CodeDeploy (Windows Server, Ubuntu Server ou Red Hat Enterprise Linux)](tutorials-on-premises-instance.md).

As etapas deste tutorial são apresentadas sob a perspectiva do Windows. Embora você possa concluir a maioria dessas etapas em uma máquina local executando o Linux, macOS ou Unix, é necessário adaptar as etapas que fazem referência a caminhos de diretório baseados no Windows, como `c:\temp`. Além disso, se quiser se conectar à instância do Amazon EC2, você precisará de um aplicativo cliente que possa conectar via protocolo RDP à instância do Amazon EC2 que executa o Windows Server. (O Windows inclui um aplicativo cliente de conexão RDP por padrão.)

Antes de começar este tutorial, você deve preencher os pré-requisitos[Começando com CodeDeploy](getting-started-codedeploy.md), incluindo configurar seu usuário, instalar ou atualizar o e criar um perfil de instância do AWS CLI IAM e uma função de serviço.

**Topics**
+ [Etapa 1: execute uma instância do Amazon EC2 do Windows Server](tutorials-windows-launch-instance.md)
+ [Etapa 2: configurar seu conteúdo de origem para implantar na instância do Amazon EC2 do Windows Server](tutorials-windows-configure-content.md)
+ [Etapa 3: carregar seu aplicativo "Hello, World\$1" no Amazon S3](tutorials-windows-upload-application.md)
+ [Etapa 4: implantar seu aplicativo Hello World](tutorials-windows-deploy-application.md)
+ [Etapa 5: atualizar e reimplantar o aplicativo "Hello, World\$1" aplicação](tutorials-windows-update-and-redeploy-application.md)
+ [Etapa 6: limpar seu aplicativo "Hello, World\$1" e os recursos relacionados](tutorials-windows-clean-up.md)

# Etapa 1: execute uma instância do Amazon EC2 do Windows Server
<a name="tutorials-windows-launch-instance"></a>

Para implantar o aplicativo Hello World com CodeDeploy, você precisa de uma instância do Amazon EC2 executando o Windows Server.

Siga as instruções em [Crie uma instância do Amazon EC2 para CodeDeploy](instances-ec2-create.md). Quando estiver pronto para atribuir uma tag de instância do Amazon EC2 à instância, especifique a chave da tag de **Name** e o valor da tag de **CodeDeployDemo** (Se você especificar uma chave de tag ou um valor de tag diferente, as instruções em [Etapa 4: implantar seu aplicativo Hello World](tutorials-windows-deploy-application.md) poderão produzir resultados inesperados.)

Depois de iniciar a instância do Amazon EC2, retorne a essa página e continue na próxima seção. Não continue em [Crie um aplicativo com CodeDeploy](applications-create.md) como próxima etapa.

## Conecte-se à sua instância Amazon EC2
<a name="tutorials-windows-launch-instance-connect"></a>

Depois que a sua instância do Amazon EC2 for iniciada, siga essas instruções para praticar a conexão com ela. 

**nota**  
Nestas instruções, partimos do princípio de que você esteja executando o Windows e o aplicativo cliente de Conexão de Área de Trabalho do Windows. Para obter informações, consulte [Estabelecendo uma conexão com a sua instância do Windows usando o RDP](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html). Talvez seja necessário adaptar essas instruções para outros sistemas operacionais ou outros aplicativos cliente de conexão RDP.

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

1. No painel de navegação, em **Instâncias**, escolha **Instâncias**. 

1. Navegue e escolha sua instância do Windows Server na lista.

1. Selecione **Conectar**.

1. Selecione **Get Password (Obter senha)** e, em seguida, selecione **Choose File (Selecionar arquivo)**.

1. Procure e escolha o arquivo de par de chaves da instância do Amazon EC2 associado à instância do Amazon EC2 no Windows Server e escolha **Abrir**.

1. Escolha **Decrypt Password**. Anote a senha que é exibida. Você vai precisar dele na etapa 10.

1. Escolha **Download Remote Desktop File** e abra o arquivo.

1. Se você for solicitado a se conectar, continue mesmo que o editor da conexão remota não possa ser identificado.

1. Digite a senha que você anotou na etapa 7 e continue. (Se seu aplicativo cliente de conexão RDP solicitar um nome de usuário, digite **Administrator**.)

1. Se você for solicitado a se conectar, continue mesmo que a identidade do computador remoto não possa ser verificada. 

1. Quando você estiver conectado, a área de trabalho da instância do Amazon EC2 que executa o Windows Server será exibida.

1. Agora você pode desconectar-se da instância do Amazon EC2.
**Atenção**  
Não interrompa ou encerre a instância. Caso contrário, não será CodeDeploy possível implantá-lo.

## Adicionar uma regra de entrada que permita tráfego HTTP à instância do Amazon EC2 do Windows Server.
<a name="tutorials-windows-launch-instance-add-inbound-rule"></a>

A próxima etapa confirma se a instância do Amazon EC2 tem uma porta HTTP aberta para que você possa ver a página da web implantada em sua instância do Amazon EC2 do Windows Server em um navegador. 

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

1. Escolha **Instâncias** e, em seguida, escolha sua instância. 

1. Na guia **Descrição**, em **Grupos de segurança**, escolha **exibir regras de entrada**. 

   Você deve ver uma lista de regras em seu grupo de segurança como a seguinte:

   ```
   Security Groups associated with i-1234567890abcdef0
    Ports     Protocol     Source     launch-wizard-N
    22        tcp          0.0.0.0/0          ✔
   ```

1.  Em **Grupos de segurança**, escolha o grupo de segurança para a sua instância do Amazon EC2. Ele pode se chamar **launch-wizard-*N***. O ***N*** no nome é um número atribuído ao grupo de segurança quando a instância foi criada. 

    Escolha a guia **Entrada**. Se o grupo de segurança da sua instância está configurado corretamente, você deve ver uma regra com os seguintes valores: 
   + **Tipo:** HTTP
   + **Protocolo**: TCP
   + **Port Range**: 80
   + **Origem**: 0.0.0.0/0

1.  Se você não encontrar uma regra com esses valores, use os procedimentos em [Adicionar regras a um grupo de segurança](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule) para adicioná-las a uma nova regra de segurança. 

# Etapa 2: configurar seu conteúdo de origem para implantar na instância do Amazon EC2 do Windows Server
<a name="tutorials-windows-configure-content"></a>

Agora é hora de configurar o conteúdo de origem do seu aplicativo, para que você tenha algo que possa implantar na instância do Amazon EC2. Para este tutorial, você implantará uma única página da Web na instância do Amazon EC2 que executa o Windows Server, que executará o IIS (Serviços de Informações da Internet) como seu servidor web. Essa página da Web exibirá um simples "Hello, World\$1" mensagem.

**Topics**
+ [Criar página da Web](#tutorials-windows-configure-content-download-code)
+ [Crie um script para executar seu aplicativo](#tutorials-windows-configure-content-create-scripts)
+ [Adicionar um arquivo de especificação de aplicativo](#tutorials-windows-configure-content-add-appspec-file)

## Criar página da Web
<a name="tutorials-windows-configure-content-download-code"></a>

1. Crie um subdiretório (subpasta) chamado `HelloWorldApp` na pasta `c:\temp` e, em seguida, mude para essa pasta.

   ```
   mkdir c:\temp\HelloWorldApp
   cd c:\temp\HelloWorldApp
   ```
**nota**  
Não é necessário usar a localização `c:\temp` ou o nome da subpasta `HelloWorldApp`. Se você usar uma localização ou um nome de subpasta diferente, certifique-se de usá-lo ao longo de todo este tutorial.

1. Use um editor de texto para criar um arquivo dentro da pasta. Nomeie o arquivo `index.html`.

   ```
   notepad index.html
   ```

1. Adicione o seguinte código HTML ao arquivo e salve-o em seguida.

   ```
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
   <html>
   <head>
     <title>Hello, World!</title>
     <style>
       body {
         color: #ffffff;
         background-color: #0188cc;
         font-family: Arial, sans-serif;  
         font-size:14px;
       }
     </style>
   </head>
   <body>
     <div align="center"><h1>Hello, World!</h1></div>
     <div align="center"><h2>You have successfully deployed an application using CodeDeploy</h2></div>
     <div align="center">
       <p>What to do next? Take a look through the <a href="https://aws.amazon.com/codedeploy">CodeDeploy Documentation</a>.</p>
     </div>
   </body>
   </html>
   ```

## Crie um script para executar seu aplicativo
<a name="tutorials-windows-configure-content-create-scripts"></a>

Em seguida, você criará um script que CodeDeploy será usado para configurar o servidor web na instância de destino do Amazon EC2.

1. Na mesma subpasta em que o arquivo `index.html` está salvo, use um editor de texto para criar outro arquivo. Nomeie o arquivo `before-install.bat`.

   ```
   notepad before-install.bat
   ```

1. Adicione o seguinte código script em lotes ao arquivo e salve-o em seguida.

   ```
   REM Install Internet Information Server (IIS).
   c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Import-Module -Name ServerManager
   c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Install-WindowsFeature Web-Server
   ```

## Adicionar um arquivo de especificação de aplicativo
<a name="tutorials-windows-configure-content-add-appspec-file"></a>

Em seguida, você adicionará um arquivo de especificação do aplicativo (AppSpec arquivo), além da página da Web e do arquivo de script em lote. O AppSpec arquivo é um arquivo formatado em [YAML](http://www.yaml.org) usado por para: CodeDeploy 
+ Mapear os arquivos de origem na sua revisão de aplicativo para os respectivos destinos na instância.
+ Especifique os scripts a serem executados na instância durante a implantação.

O AppSpec arquivo deve ser nomeado`appspec.yml`. Ele deve ser colocado na pasta raiz do código-fonte do aplicativo.

1. Na mesma subpasta em que os arquivos `index.html` e `before-install.bat` estão salvos, use um editor de texto para criar outro arquivo. Nomeie o arquivo `appspec.yml`.

   ```
   notepad appspec.yml
   ```

1. Adicione o seguinte código YAML ao arquivo e salve-o em seguida.

   ```
   version: 0.0
   os: windows
   files:
     - source: \index.html
       destination: c:\inetpub\wwwroot
   hooks:
     BeforeInstall:
       - location: \before-install.bat
         timeout: 900
   ```

CodeDeploy usará esse AppSpec arquivo para copiar o `index.html` arquivo na pasta raiz do código-fonte do aplicativo para a `c:\inetpub\wwwroot` pasta na instância do Amazon EC2 de destino. Durante a implantação, CodeDeploy executará o script em `before-install.bat` lote na instância de destino do Amazon EC2 durante o evento do ciclo de vida da **BeforeInstall** implantação. Se esse script levar mais de 900 segundos (15 minutos) para ser executado, CodeDeploy interromperá a implantação e marcará a implantação na instância do Amazon EC2 como falha.

Para obter mais informações sobre essas configurações, consulte o [CodeDeploy AppSpec referência de arquivo](reference-appspec-file.md).

**Importante**  
Os locais e números de espaços entre cada um dos itens desse arquivo são importantes. Se o espaçamento estiver incorreto, CodeDeploy gerará um erro que pode ser difícil de depurar. Para obter mais informações, consulte [AppSpec Espaçamento de arquivos](reference-appspec-file.md#reference-appspec-file-spacing).

# Etapa 3: carregar seu aplicativo "Hello, World\$1" no Amazon S3
<a name="tutorials-windows-upload-application"></a>

Agora você preparará e enviará seu conteúdo de origem para um local a partir do qual CodeDeploy possa implantá-lo. As instruções a seguir mostram como provisionar um bucket do Amazon S3, preparar os arquivos da revisão de aplicativo para o bucket, agrupar os arquivos da revisão e, em seguida, enviá-la para esse bucket.

**nota**  
Embora não seja abordado neste tutorial, você pode usá-lo CodeDeploy para implantar aplicativos de GitHub repositórios para instâncias. Para obter mais informações, consulte [Integrando com CodeDeploy GitHub](integrations-partners-github.md).

**Topics**
+ [Provisionar um bucket do Amazon S3](#tutorials-windows-upload-application-create-s3-bucket)
+ [Preparar os arquivos do aplicativo para o bucket](#tutorials-windows-upload-application-prepare-application-files)
+ [Agrupar os arquivos do aplicativo em um único arquivamento e enviar o arquivamento](#tutorials-windows-upload-application-bundle-and-push-archive)

## Provisionar um bucket do Amazon S3
<a name="tutorials-windows-upload-application-create-s3-bucket"></a>

Crie um contêiner de armazenamento, ou *bucket*, no Amazon S3, ou use um bucket existente. Certifique-se de que você possa carregar a revisão no bucket e de que as instâncias do Amazon EC2 usadas nas implantações possam baixá-la desse bucket.

Você pode usar o AWS CLI console do Amazon S3 ou o Amazon S3 para criar um bucket do Amazon APIs S3. Depois de criar o bucket, certifique-se de dar permissões de acesso a ele e ao seu usuário do CodeDeploy.

**nota**  
Os nomes dos buckets devem ser exclusivos no Amazon S3 para todas as contas AWS . Se não for possível usar **amzn-s3-demo-bucket**, tente um nome de bucket diferente, como **amzn-s3-demo-bucket**, seguido por um traço e suas iniciais ou algum outro identificador exclusivo. Em seguida, certifique-se de substituir o nome do bucket por **amzn-s3-demo-bucket** sempre que essa identificação aparecer neste tutorial.  
O bucket do Amazon S3 deve ser criado na mesma AWS região em que suas instâncias de destino do Amazon EC2 são lançadas. Por exemplo, se você criar o bucket na região Leste dos EUA (Norte da Virgínia), suas instâncias do Amazon EC2 de destino devem ser lançadas na região Leste dos EUA (Norte da Virgínia).

**Topics**
+ [Como criar um bucket do Amazon S3 (CLI)](#tutorials-windows-upload-application-create-s3-bucket-cli)
+ [Como criar um bucket do Amazon S3 (console)](#tutorials-windows-upload-application-create-s3-bucket-console)
+ [Conceda permissões ao bucket do Amazon S3 e à sua conta AWS](#tutorials-windows-upload-application-create-s3-bucket-grant-permission)

### Como criar um bucket do Amazon S3 (CLI)
<a name="tutorials-windows-upload-application-create-s3-bucket-cli"></a>

Chame o comando **mb** para criar um bucket do Amazon S3 denominado **amzn-s3-demo-bucket**:

```
aws s3 mb s3://amzn-s3-demo-bucket --region region
```

### Como criar um bucket do Amazon S3 (console)
<a name="tutorials-windows-upload-application-create-s3-bucket-console"></a>

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No console do Amazon S3, escolha **Criar bucket**.

1. Na caixa **Nome do bucket**, digite um nome para o bucket.

1. Na lista **Região**, escolha a região de destino e escolha **Criar**.

### Conceda permissões ao bucket do Amazon S3 e à sua conta AWS
<a name="tutorials-windows-upload-application-create-s3-bucket-grant-permission"></a>

Você deve ter permissões para fazer upload no bucket do Amazon S3. Você pode especificar essas permissões por meio de uma política de bucket do Amazon S3. Por exemplo, na seguinte política de bucket do Amazon S3, o uso do caractere curinga (\$1) permite que `111122223333` a AWS conta faça upload de arquivos para qualquer diretório no bucket do Amazon S3 chamado: `amzn-s3-demo-bucket`

```
{
    "Statement": [
        {
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            }
        }
    ]
}
```

Para ver o ID AWS da sua conta, consulte [Encontrando o ID AWS da sua conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId).

Agora é um bom momento para verificar se o bucket do Amazon S3 permitirá solicitações de download de cada instância participante do Amazon EC2. É possível especificar isso por meio de uma política do bucket do Amazon S3. Por exemplo, na seguinte política de bucket do Amazon S3, usar o caractere curinga (\$1) permite que qualquer instância do Amazon EC2 com um perfil de instância anexado do IAM contendo o ARN `arn:aws:iam::444455556666:role/CodeDeployDemo` faça o download de arquivos de qualquer diretório no bucket do Amazon S3 chamado de `amzn-s3-demo-bucket`:

```
{
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::444455556666:role/CodeDeployDemo"
                ]
            }
        }
    ]
}
```

Para obter informações sobre como gerar e anexar uma política de bucket do Amazon S3, consulte [Exemplos de políticas de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).

O usuário CodeDeploy administrativo que você criou também [Etapa 1: configuração](getting-started-setting-up.md) deve ter permissão para carregar a revisão no bucket do Amazon S3. Uma forma de especificar isso é por meio de uma política do IAM, que você adiciona ao conjunto de permissões do usuário, ou de um perfil do IAM (que você permite que o usuário assuma). A seguinte política do IAM permite que o usuário faça upload de revisões em qualquer lugar do bucket do Amazon S3 denominado `amzn-s3-demo-bucket`:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	   
  "Statement":[
    {
      "Effect":"Allow",
      "Action":["s3:PutObject"],
      "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

------

Para obter informações sobre como criar uma política do IAM, consulte [Criação de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no *Guia do usuário do IAM*. Para obter informações sobre como adicionar uma política a um conjunto de permissões, consulte [Criar um conjunto de permissões](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.

## Preparar os arquivos do aplicativo para o bucket
<a name="tutorials-windows-upload-application-prepare-application-files"></a>

Certifique-se de que a página da web, o AppSpec arquivo e o script estejam organizados em sua máquina de desenvolvimento da seguinte forma:

```
c:\
  |-- temp\
        |--HelloWorldApp\
             |-- appspec.yml
             |-- before-install.bat
             |-- index.html
```

## Agrupar os arquivos do aplicativo em um único arquivamento e enviar o arquivamento
<a name="tutorials-windows-upload-application-bundle-and-push-archive"></a>

Agrupe os arquivos em um arquivamento (conhecido como uma *revisão* de aplicativo).

**nota**  
Você pode ser cobrado por armazenar objetos em um bucket e por transferir revisões de aplicativos para dentro e fora de um bucket. Para obter mais informações, consulte [Preço do Amazon S3](https://aws.amazon.com/s3/pricing/). 

1. Na máquina de desenvolvimento, mude para a pasta na qual os arquivos estão armazenados: 

   ```
   cd c:\temp\HelloWorldApp
   ```
**nota**  
Se você não mudar para essa pasta, o empacotamento de arquivos começará na sua pasta atual. Por exemplo, se a sua pasta atual for `c:\temp`, e não `c:\temp\HelloWorldApp`, o empacotamento começará com os arquivos e as subpastas da pasta `c:\temp`, o que poderá incluir mais do que a subpasta `HelloWorldApp`.

1. Chame o **create-application** comando para registrar um novo aplicativo chamado **HelloWorld\$1App** com CodeDeploy:

   ```
   aws deploy create-application --application-name HelloWorld_App
   ```

1. Chame o comando CodeDeploy [push](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html) para agrupar os arquivos, fazer o upload das revisões para o Amazon S3 e registrar informações sobre a revisão CodeDeploy carregada, tudo em uma única ação. 

   ```
   aws deploy push --application-name HelloWorld_App --s3-location s3://amzn-s3-demo-bucket/HelloWorld_App.zip --ignore-hidden-files
   ```

   Esse comando agrupa os arquivos do diretório atual (excluindo os arquivos ocultos) em um único arquivo chamado`HelloWorld_App.zip`, carrega a revisão no **amzn-s3-demo-bucket** bucket e registra as informações CodeDeploy sobre a revisão carregada.

# Etapa 4: implantar seu aplicativo Hello World
<a name="tutorials-windows-deploy-application"></a>

Agora, você implanta o exemplo da revisão de aplicativo Hello World\$1 que fez o upload no Amazon S3. Você usa o AWS CLI ou o CodeDeploy console para implantar a revisão e monitorar o progresso da implantação. Depois que a revisão do aplicativo for implementada com êxito, confira os resultados.

**Topics**
+ [Implemente a revisão do seu aplicativo com CodeDeploy](#tutorials-windows-deploy-application-create-deployment)
+ [Monitorar sua implantação e solucionar problemas relacionados](#tutorials-windows-deploy-application-monitor)
+ [Verificar sua implantação](#tutorials-windows-deploy-application-verify)

## Implemente a revisão do seu aplicativo com CodeDeploy
<a name="tutorials-windows-deploy-application-create-deployment"></a>

 Você pode implantar seu aplicativo usando a CLI ou o console. 

**Topics**
+ [Para implantar sua revisão de aplicativo (CLI)](#tutorials-windows-deploy-application-create-deployment-cli)
+ [Para implantar sua revisão de aplicativo (console)](#tutorials-windows-deploy-application-create-deployment-console)

### Para implantar sua revisão de aplicativo (CLI)
<a name="tutorials-windows-deploy-application-create-deployment-cli"></a>

1. Primeiro, a implantação precisa de um grupo de implantação. No entanto, antes de criar o grupo de implantação, você precisa de um ARN de um perfil de serviço. Um perfil de serviço é um perfil do IAM que dá a um serviço permissão para agir em seu nome. Nesse caso, a função de serviço dá CodeDeploy permissão para acessar suas instâncias do Amazon EC2 para expandir (ler) suas tags de instância do Amazon EC2.

   Você já deve ter seguido as instruções em [Criar um perfil de serviço (CLI)](getting-started-create-service-role.md#getting-started-create-service-role-cli) para criar um perfil de serviço. Para obter o ARN do perfil de serviço, consulte [Obter o ARN do perfil de serviço (CLI)](getting-started-create-service-role.md#getting-started-get-service-role-cli).

1. Agora que você tem o ARN de perfil de serviço, chame o comando **create-deployment-group** para criar um grupo de implantação chamado **HelloWorld\$1DepGroup**, associado ao aplicativo chamado **HelloWorld\$1App**, usando a tag de instância do Amazon EC2 chamada **CodeDeployDemo** e a configuração de implantação chamada **CodeDeployDefault.OneAtATime**, com o ARN de perfil de serviço:

   ```
   aws deploy create-deployment-group --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --deployment-config-name CodeDeployDefault.OneAtATime --ec2-tag-filters Key=Name,Value=CodeDeployDemo,Type=KEY_AND_VALUE --service-role-arn serviceRoleARN
   ```
**nota**  
O [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)comando fornece suporte para a criação de acionadores que resultam no envio de notificações do Amazon SNS aos assinantes do tópico sobre eventos específicos em implantações e instâncias. O comando também oferece suporte a opções para reverter automaticamente as implantações e configurar alarmes para interromper as implantações quando os limites de monitoramento nos alarmes da CloudWatch Amazon forem atingidos. Os comandos para essas ações não estão incluídos neste tutorial.

1. Antes de criar uma implantação, as instâncias do seu grupo de implantação devem ter o CodeDeploy agente instalado. Você pode instalar o agente a partir da linha de comando do AWS Systems Manager , com o seguinte comando:

   ```
   aws ssm create-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo --parameters action=Install,name=AWSCodeDeployAgent --schedule-expression "cron(0 2 ? * SUN *)" 
   ```

   Esse comando cria uma associação no Systems Manager State Manager que instalará o CodeDeploy agente e tentará atualizá-lo às 2:00 de cada manhã de domingo. Para obter mais informações sobre o CodeDeploy agente, consulte [Trabalhando com o CodeDeploy agente](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html). Para obter mais informações sobre o Systems Manager, consulte [O que é o AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html).

1. Agora, chame o comando **create-deployment** para criar uma implantação associada ao aplicativo **HelloWorld\$1App**, a configuração de implantação **CodeDeployDefault.OneAtATime** e o grupo de implantação **HelloWorld\$1DepGroup**, usando a revisão de aplicativo **HelloWorld\$1App.zip** no bucket **amzn-s3-demo-bucket**:

   ```
   aws deploy create-deployment --application-name HelloWorld_App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name HelloWorld_DepGroup --s3-location bucket=amzn-s3-demo-bucket,bundleType=zip,key=HelloWorld_App.zip
   ```

### Para implantar sua revisão de aplicativo (console)
<a name="tutorials-windows-deploy-application-create-deployment-console"></a>

1. Antes de usar o CodeDeploy console para implantar a revisão do aplicativo, você precisa de um ARN de função de serviço. Um perfil de serviço é um perfil do IAM que dá a um serviço permissão para agir em seu nome. Nesse caso, a função de serviço dá CodeDeploy permissão para acessar suas instâncias do Amazon EC2 para expandir (ler) suas tags de instância do Amazon EC2.

   Você já deve ter seguido as instruções em [Criar um perfil de serviço (console)](getting-started-create-service-role.md#getting-started-create-service-role-console) para criar um perfil de serviço. Para obter o ARN do perfil de serviço, consulte [Obter o ARN do perfil de serviço (console)](getting-started-create-service-role.md#getting-started-get-service-role-console).

1. Agora que você tem o ARN, você pode usar o CodeDeploy console para implantar a revisão do seu aplicativo.

   Faça login no Console de gerenciamento da AWS e abra o CodeDeploy console em [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy).
**nota**  
Faça login com o mesmo usuário que você configurou em [Começando com CodeDeploy](getting-started-codedeploy.md).

1. No painel de navegação, expanda a opção **Implantar** e escolha **Aplicações**.

1. Escolha **HelloWorld\$1App**.

1. Na guia **Grupos de implantação**, selecione **Criar um grupo de implantação**.

1. Em **Nome do grupo de implantação**, insira **HelloWorld\$1DepGroup**.

1. Em **Service Role (Função do serviço)**, selecione o nome da função do serviço.

1. Em **Tipo de implantação**, selecione **No local**.

1. Em **Configuração do ambiente**, selecione **Instâncias do Amazon EC2**.

1. Em **Configuração do agente com AWS Systems Manager**, mantenha os padrões.

1. Em **Chave**, insira **Name**.

1. Em **Valor**, informe **CodeDeployDemo**.

1. Em **Configuração de implantação**, escolha **CodeDeployDefault. OneAtATime**.

1. Em **Balanceador de carga**, desmarque **Habilitar balanceamento de carga**.

1. Selecione **Criar grupo de implantação**.

1. Escolha **Criar implantação**.

1. No **grupo de implantação**, escolha **HelloWorld\$1 DepGroup**

1. Em **Tipo de revisão**, selecione **Meu aplicativo está armazenado no Amazon S3** e, em seguida, em **Local de revisão**, digite o local da revisão do aplicativo de exemplo Hello World\$1 que você fez upload no Amazon S3 anteriormente. Para obter a localização:

   1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   1. Na lista de buckets, selecione **amzn-s3-demo-bucket** (ou o nome do bucket no qual você fez upload da sua revisão de aplicação). 

   1. Na lista de objetos, escolha **HelloWorld\$1App.zip**.

   1. Na guia **Overview (Visão geral)**, selecione **Copy path (Copiar caminho)**.

   1. Retorne ao CodeDeploy console e, em **Local da revisão**, cole o valor do campo **Link**.

1. Em **Tipo de arquivo de revisão**, selecione **.zip**. 

1. (Opcional) Insira um comentário em **Deployment description (Descrição da implantação)**.

1. Escolha **Criar implantação**. As informações sobre a implantação recém-criada aparecem na página **Implantações**.

## Monitorar sua implantação e solucionar problemas relacionados
<a name="tutorials-windows-deploy-application-monitor"></a>

Use o console AWS CLI ou o console para monitorar e solucionar problemas de sua implantação.

**Topics**
+ [Para monitorar e solucionar problemas de implantação (CLI)](#tutorials-windows-deploy-application-monitor-cli)
+ [Para monitorar e solucionar problemas de implantação (console)](#tutorials-windows-deploy-application-monitor-console)

### Para monitorar e solucionar problemas de implantação (CLI)
<a name="tutorials-windows-deploy-application-monitor-cli"></a>

1. Obtenha o ID de implantação chamando o comando **list-deployments** para o aplicativo chamado **HelloWorld\$1App** e o grupo de implantação chamado **HelloWorld\$1DepGroup**:

   ```
   aws deploy list-deployments --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --query "deployments" --output text
   ```

1. Chame o comando **get-deployment** com o ID da implantação:

   ```
   aws deploy get-deployment --deployment-id deploymentID --query "deploymentInfo.status" --output text
   ```

1. O comando retorna o status geral da implantação. Se a implantação for bem-sucedida, o valor será `Succeeded`.

   Se o status geral for `Failed`, você poderá chamar comandos como [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) e [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html) para solucionar problemas. Para mais opções de solução de problemas, consulte [Analisando arquivos de log para investigar falhas de implantação em instâncias](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures).

### Para monitorar e solucionar problemas de implantação (console)
<a name="tutorials-windows-deploy-application-monitor-console"></a>

Na página **Implantações** no CodeDeploy console, você pode monitorar o status da sua implantação na coluna **Status**.

Para obter mais informações sobre a implantação, especialmente se o valor da coluna **Status** tiver qualquer outro valor que não **Succeeded**:

1. Na tabela **Deployments (Implantações)**, selecione o ID da implantação. Depois que uma implantação apresentar falha, uma mensagem descrevendo o motivo da falha será exibida na página de detalhes da implantação.

1. Serão exibidas mais informações sobre as instâncias de implantação. Depois que uma implantação apresentar falha, você possivelmente conseguirá determinar em quais instâncias do Amazon EC2 e em qual etapa ocorreu a falha.

1. Se quiser realizar outros procedimentos de solução de problemas, use uma técnica como [Visualizar detalhes da instância com o CodeDeploy](instances-view-details.md). Você também pode analisar os arquivos de log de implantação em uma instância do Amazon EC2. Para obter mais informações, consulte [Analisando arquivos de log para investigar falhas de implantação em instâncias](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures).

## Verificar sua implantação
<a name="tutorials-windows-deploy-application-verify"></a>

Depois que a sua implantação for bem-sucedida, verifique se a sua instalação está funcionando. Use o endereço DNS público da instância do Amazon EC2 para visualizar a página da Web em um navegador da Web. (Para obter o valor DNS público, no console do Amazon EC2, escolha a instância do Amazon EC2 e, na guia **Description**, procure o valor de **DNS público**.)

Por exemplo, se o endereço DNS público da sua instância do Amazon EC2 for **ec2-01-234-567-890.compute-1.amazonaws.com**, você usará o seguinte URL:

```
http://ec2-01-234-567-890.compute-1.amazonaws.com
```

Se o procedimento for bem-sucedido, você verá uma página da web Hello World\$1.

# Etapa 5: atualizar e reimplantar o aplicativo "Hello, World\$1" aplicação
<a name="tutorials-windows-update-and-redeploy-application"></a>

Agora que você implantou com sucesso a revisão do seu aplicativo, na máquina de desenvolvimento, atualize o código da página da Web e use-o CodeDeploy para reimplantar o site. Após a redistribuição, você poderá ver as alterações na instância do Amazon EC2.

**Topics**
+ [Modificar a página da web](#tutorials-windows-update-and-redeploy-application-modify-code)
+ [Reimplantar o site](#tutorials-windows-update-and-redeploy-application-deploy-updates)

## Modificar a página da web
<a name="tutorials-windows-update-and-redeploy-application-modify-code"></a>

1. Vá para a subpasta `c:\temp\HelloWorldApp` e use um editor de texto para modificar o arquivo `index.html`:

   ```
   cd c:\temp\HelloWorldApp
   notepad index.html
   ```

1. Revise o conteúdo do arquivo `index.html` para alterar a cor do plano de fundo e parte do texto na página da web e depois salve o arquivo:

   ```
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
   <html>
   <head>
     <title>Hello Again, World!</title>
     <style>
       body {
         color: #ffffff;
         background-color: #66cc00;
         font-family: Arial, sans-serif;  
         font-size:14px;
       }
     </style>
   </head>
   <body>
     <div align="center"><h1>Hello Again, World!</h1></div>
     <div align="center"><h2>You have successfully deployed a revision of an application using CodeDeploy</h2></div>
     <div align="center">
       <p>What to do next? Take a look through the <a href="https://aws.amazon.com/codedeploy">CodeDeploy Documentation</a>.</p>
     </div>
   </body>
   </html>
   ```

## Reimplantar o site
<a name="tutorials-windows-update-and-redeploy-application-deploy-updates"></a>

Agora que você modificou o código, use o Amazon S3 e reimplante CodeDeploy a página da web.

Agrupe e carregue as alterações no Amazon S3, conforme descrito em [Agrupar os arquivos do aplicativo em um único arquivamento e enviar o arquivamento](tutorials-windows-upload-application.md#tutorials-windows-upload-application-bundle-and-push-archive). (Ao seguir essas instruções, você não precisa criar um novo aplicativo.) Especifique a mesma chave de antes para a revisão (**HelloWorld\$1App.zip**). Faça upload dela no mesmo bucket do Amazon S3 criado anteriormente (por exemplo, **amzn-s3-demo-bucket**).

Use o console AWS CLI ou o CodeDeploy console para reimplantar o site.

**Topics**
+ [Para redistribuir o site (CLI)](#tutorials-windows-update-and-redeploy-application-deploy-updates-cli)
+ [Para reimplantar o site (console)](#tutorials-windows-update-and-redeploy-application-deploy-updates-console)

### Para redistribuir o site (CLI)
<a name="tutorials-windows-update-and-redeploy-application-deploy-updates-cli"></a>

Chame o comando **create-deployment** para criar uma implantação baseada na revisão que fez upload, novamente usando o aplicativo **HelloWorld\$1App**, a configuração de implantação **CodeDeployDefault.OneAtATime**, o grupo de implantação **HelloWorld\$1DepGroup** e a revisão **HelloWorld\$1App.zip** no bucket **amzn-s3-demo-bucket**:

```
 aws deploy create-deployment --application-name HelloWorld_App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name HelloWorld_DepGroup --s3-location bucket=amzn-s3-demo-bucket,bundleType=zip,key=HelloWorld_App.zip
```

Você pode verificar o status da nova implantação conforme descrito em [Monitorar sua implantação e solucionar problemas relacionados](tutorials-windows-deploy-application.md#tutorials-windows-deploy-application-monitor).

Quando CodeDeploy tiver reimplantado o site, visite novamente o site em seu navegador para verificar se a cor de fundo e o texto na página da Web foram alterados. (Talvez seja necessário atualizar o navegador.) Se a cor de fundo e o texto tiverem sido alterados, parabéns\$1 Você modificou e reimplantou seu site\$1

### Para reimplantar o site (console)
<a name="tutorials-windows-update-and-redeploy-application-deploy-updates-console"></a>

1. Faça login no Console de gerenciamento da AWS e abra o CodeDeploy console em [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy).
**nota**  
Faça login com o mesmo usuário que você configurou em [Começando com CodeDeploy](getting-started-codedeploy.md).

1. No painel de navegação, selecione **Applications (Aplicativos)**.

1. Na lista de **aplicativos**, escolha **HelloWorld\$1App**.

1. Na guia **Deployments (Implantações)**, escolha **Create deployment (Criar implantação)**.

   1. Na lista **de grupos de implantação**, escolha **HelloWorld\$1 DepGroup**.

   1.  Em **Local de revisão**, digite o link Amazon S3 da revisão.

      Para encontrar o valor do link:

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

         Navegue até **amzn-s3-demo-bucket**, abra-o e, depois, selecione a revisão, **HelloWorld\$1App.zip**, no console do Amazon S3.

      1. Se o painel **Propriedades** não estiver visível no console do Amazon S3, escolha o botão **Propriedades**.

      1. No painel **Properties (Propriedades)**, copie o valor do campo **Link**.

      1. Retorne ao CodeDeploy console e cole o link no **local da revisão**.

   1. Em **Tipo de arquivo de revisão**, se uma mensagem aparecer indicando que o tipo de arquivo não pôde ser detectado, selecione **.zip**.

   1. Deixe **Descrição da implantação** em branco.

   1. **Expandir **substituições de grupos de implantação** Na lista de **configuração de implantação**, escolha. CodeDeployDefault OneAtATime**e, em seguida, escolha **Criar implantação**. 

      Você pode verificar o status da implantação conforme descrito em [Monitorar sua implantação e solucionar problemas relacionados](tutorials-windows-deploy-application.md#tutorials-windows-deploy-application-monitor).

      Quando CodeDeploy tiver reimplantado o site, visite novamente o site em seu navegador para verificar se a cor de fundo e o texto na página da Web foram alterados. (Talvez seja necessário atualizar o navegador.) Se a cor de fundo e o texto tiverem sido alterados, parabéns\$1 Você modificou e reimplantou seu site\$1

# Etapa 6: limpar seu aplicativo "Hello, World\$1" e os recursos relacionados
<a name="tutorials-windows-clean-up"></a>

Agora, você fez uma atualização bem-sucedida no código de "Hello, World\$1" e reimplantou o site. Para evitar cobranças contínuas pelos recursos criados neste tutorial, exclua o seguinte:
+ Qualquer CloudFormation pilha (ou encerre qualquer instância do Amazon EC2, se você as criou fora do). CloudFormation
+ Qualquer bucket do Amazon S3.
+ O aplicativo `HelloWorld_App` no CodeDeploy.
+ A associação AWS Systems Manager do gerente estadual para o CodeDeploy agente.

Você pode usar o AWS CLI, o CloudFormation, o Amazon S3, o Amazon EC2 CodeDeploy e os consoles, ou AWS APIs o para realizar a limpeza.

**Topics**
+ [Para usar recursos de limpeza (CLI)](#tutorials-windows-clean-up-cli)
+ [Para limpar recursos (console)](#tutorials-windows-clean-up-console)
+ [Próximas etapas](#tutorials-windows-clean-up-whats-next)

## Para usar recursos de limpeza (CLI)
<a name="tutorials-windows-clean-up-cli"></a>

1. Se você usou a CloudFormation pilha neste tutorial, exclua a pilha chamando o **delete-stack** comando na pilha chamada. **CodeDeployDemoStack** Isso encerra todas as instâncias do Amazon EC2 acompanhantes e exclui todos os perfis do IAM acompanhantes originalmente criados pela pilha.

   ```
   aws cloudformation delete-stack --stack-name CodeDeployDemoStack
   ```

1. Para excluir o bucket do Amazon S3, chame o comando **rm** com a opção **--recursive** para o bucket denominado **amzn-s3-demo-bucket**. Isso exclui o bucket e todos os seus objetos.

   ```
   aws s3 rm s3://amzn-s3-demo-bucket --recursive --region region
   ```

1. Para excluir o `HelloWorld_App` aplicativo de CodeDeploy, chame o **delete-application** comando. Isso exclui todos os registros do grupo de implantação associados e os registros de implantação do aplicativo.

   ```
   aws deploy delete-application --application-name HelloWorld_App
   ```

1. Para excluir a associação do gerenciador de estados do Systems Manager, chame o comando **delete-association**.

   ```
   aws ssm delete-association --assocation-id association-id
   ```

   Você pode obter o *association-id* chamando o **describe-association** comando.

   ```
   aws ssm describe-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo
   ```

1. Se você não usou a CloudFormation pilha para este tutorial, chame o **terminate-instances** comando para encerrar as instâncias do Amazon EC2 que você criou manualmente. Forneça o ID da instância do Amazon EC2 a ser encerrada.

   ```
   aws ec2 terminate-instances --instance-ids instanceId
   ```

## Para limpar recursos (console)
<a name="tutorials-windows-clean-up-console"></a>

Se você usou nosso CloudFormation modelo para este tutorial, exclua a CloudFormation pilha associada.

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

1. Na caixa de pesquisa, digite o nome da CloudFormation pilha (por exemplo,**CodeDeployDemoStack**).

1. Marque a caixa ao lado do nome da pilha.

1. No menu **Ações**, escolha **Excluir pilha**. Isso exclui a pilha, encerrará todas as instâncias do Amazon EC2 acompanhantes e excluirá todos os perfis do IAM acompanhantes.

Para encerrar instâncias do Amazon EC2 que você criou fora de CloudFormation uma pilha:

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

1. Na área **Instâncias**, escolha **Instâncias**.

1. Na caixa de pesquisa, digite o nome da instância do Amazon EC2 que você deseja encerrar e pressione **Enter**.

1. Escolha a instância do Amazon EC2.

1. Escolha **Ações**, escolha **Estado da instância** e escolha **Encerrar**. Quando solicitado, escolha **Sim, Encerrar**. Repita essas etapas para qualquer instância do Amazon EC2 adicional.

Para excluir o bucket do Amazon S3:

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

1. Na lista de buckets, navegue e escolha o nome do bucket do Amazon S3 (por exemplo, **amzn-s3-demo-bucket**)

1. Antes de poder excluir um bucket, você deve excluir seu conteúdo. Selecione todos os arquivos no bucket, como **HelloWorld\$1App.zip**. No menu **Ações**, escolha **Excluir**. Quando solicitado a confirmar a exclusão, escolha **OK**. 

1. Depois que o bucket estiver vazio, você poderá excluí-lo. Na lista de buckets, escolha a linha do bucket (mas não o nome do bucket). Escolha **Excluir bucket** e quando solicitado a confirmar, escolha **OK**. 

Para excluir o `HelloWorld_App` aplicativo de CodeDeploy:

1. Faça login no Console de gerenciamento da AWS e abra o CodeDeploy console em [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy).
**nota**  
Faça login com o mesmo usuário que você configurou em [Começando com CodeDeploy](getting-started-codedeploy.md).

1. No painel de navegação, expanda a opção **Implantar** e escolha **Aplicativos**.

   

1. Selecione **`HelloWorld_App`**.

1. Selecione **Excluir aplicativo**.

1. Quando solicitado, digite **Delete** e escolha **Excluir**. 

Para excluir a associação do gerenciador de estados do Systems Manager:

1. Abra o AWS Systems Manager console em https://console.aws.amazon.com /systems-manager.

1. No painel de navegação, escolha **State Manager**.

1. Escolha a associação criada e selecione **Excluir**.

## Próximas etapas
<a name="tutorials-windows-clean-up-whats-next"></a>

Se você chegou aqui, concluiu com êxito uma implantação com CodeDeploy. Parabéns\$1