

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

# Implantações personalizadas do ASP.NET Core com o Elastic Beanstalk
<a name="deployment-beanstalk-custom-netcore"></a>

Este tópico descreve como a implantação funciona e o que você pode fazer para personalizar implantações ao criar aplicações ASP.NET Core com o Elastic Beanstalk e o kit de ferramentas para Visual Studio.

Depois que você concluir o assistente de implantação no kit de ferramentas para Visual Studio, o kit empacotará a aplicação e a enviará ao Elastic Beanstalk. A primeira etapa na criação do pacote de aplicativos é usar a nova CLI dotnet a fim de preparar o aplicativo para publicação usando o comando **publish**. A estrutura e a configuração são passadas pelas configurações no assistente para o comando **publish**. Assim, se você tiver selecionado **Release** para `configuration` e **netcoreapp1.0** para o `framework`, o toolkit executará o seguinte comando:

 `dotnet publish --configuration Release --framework netcoreapp1.0` 

Quando o comando **publish** é concluído, o toolkit grava o novo manifesto de implantação na pasta de publicação. O manifesto de implantação é um arquivo JSON chamado **aws-windows-deployment-manifest.json**, que o contêiner do Elastic Beanstalk Windows (versão 1.2 ou posterior) lê para determinar como implantar a aplicação. Por exemplo, para um aplicativo do ASP.NET Core que você queira implantar na raiz do IIS, o toolkit gera um arquivo manifesto semelhante a este:

```
{
  "manifestVersion": 1,
  "deployments": {

    "aspNetCoreWeb": [
      {
        "name": "app",
        "parameters": {
          "appBundle": ".",
          "iisPath": "/",
          "iisWebSite": "Default Web Site"
        }
      }
    ]
  }
}
```

A propriedade `appBundle` indica onde os bits do aplicativo estão em relação ao arquivo manifesto. Essa propriedade pode apontar para um diretório ou um arquivo ZIP. As propriedades `iisPath` e `iisWebSite` indicam onde hospedar o aplicativo no IIS.

## Personalizar o manifesto
<a name="tkv-deploy-beanstalk-custom-netcore-manifest"></a>

O toolkit só gravará o arquivo manifesto se um ainda não existir na pasta de publicação. Se o arquivo não existir, o toolkit atualizará as propriedades `appBundle`, `iisPath` e `iisWebSite` no primeiro aplicativo listado na seção `aspNetCoreWeb` do manifesto. Isso permite adicionar o **aws-windows-deployment-manifest.json** ao projeto e personalizar o manifesto. Para fazer isso para um aplicativo web do ASP.NET Core no Visual Studio, adicione um novo arquivo JSON à raiz do projeto e o nomeie como **aws-windows-deployment-manifest.json**.

O manifesto deve ser chamado de **aws-windows-deployment-manifest.json** e deve estar na raiz do projeto. O contêiner do Elastic Beanstalk procura o manifesto na raiz e, se o encontrar, invoca as ferramentas de implantação. Se o arquivo não existir, o contêiner do Elastic Beanstalk recorrerá às ferramentas de implantação anteriores, o que pressupõe que o arquivo seja um arquivo **msdeploy**.

Para garantir que o comando `publish` da CLI do dotnet inclua o manifesto, atualize o arquivo `project.json` para incluir o arquivo manifesto na seção include em `include` em `publishOptions`.

```
{
   "publishOptions": {
     "include": [
       "wwwroot",
       "Views",
       "Areas/**/Views",
       "appsettings.json",
       "web.config",
       "aws-windows-deployment-manifest.json"
     ]
   }
 }
```

Agora que já declarou o manifesto de maneira que ele esteja incluído no pacote de aplicativos, você pode configurar como deseja implantar o aplicativo. Você pode personalizar a implantação acima do que o assistente de implantação comporta. Como a AWS definiu um esquema JSON para o arquivo **aws-windows-deployment-manifest.json**, quando você instalou o kit de ferramentas para Visual Studio, a configuração registrou o URL do esquema.

Ao abrir `windows-deployment-manifest.json`, você verá o URL do esquema selecionado na caixa suspensa Schema. Você pode navegar até o URL para obter uma descrição completa do que pode ser definido no manifesto. Com o esquema selecionado, o Visual Studio fornecerá o IntelliSense enquanto você estiver editando o manifesto.

Uma personalização que você pode fazer é configurar o grupo de aplicativos do IIS no qual o aplicativo será executado. O exemplo a seguir mostra como você pode definir um grupo de aplicativos do IIS ("customPool") que recicle o processo a cada 60 minutos e o atribui ao aplicativo usando `"appPool": "customPool"`.

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "appPools": [
      {
        "name": "customPool",
        "recycling": {
          "regularTimeInterval": 60
        }
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "app",
        "parameters": {
          "appPool": "customPool"
        }
      }
    ]
  }
}
```

Além disso, o manifesto pode declarar scripts do Windows PowerShell a serem executados antes e depois das ações de instalação, reinicialização e desinstalação. Por exemplo, o manifesto a seguir executa o script do Windows PowerShell `PostInstallSetup.ps1` para fazer mais trabalho de configuração após a implantação do aplicativo ASP.NET Core no IIS. Ao adicionar scripts assim, certifique-se de que os scripts sejam adicionados à seção include em publishOptions no arquivo `project.json`, da mesma maneira como você fez com o arquivo `aws-windows-deployment-manifest.json`. Se você não fizer isso, os scripts não serão incluídos como parte do comando **publish** da CLI do dotnet.

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "app",
        "scripts": {
          "postInstall": {
            "file": "SetupScripts/PostInstallSetup.ps1"
          }
        }
      }
    ]
  }
}
```

## E .ebextensions?
<a name="tkv-deploy-beanstalk-custom-netcore-ebextensions"></a>

Os arquivos de configuração **.ebextensions** do Elastic Beanstalk são compatíveis como todos os outros contêineres do Elastic Beanstalk. Para incluir ebextensions em um aplicativo do ASP.NET Core, adicione o diretório `.ebextensions` à seção `include` em `publishOptions` no arquivo `project.json`. Para obter mais informações sobre .ebextensions, confira o [Guia do desenvolvedor do Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html).