Instalando App Builder na AWS (windows)
Introdução
Este manual abordará vários métodos sugeridos de instalação de App Builder na AWS usando Windows e SQL Server. Existem muitos métodos de configuração da arquitetura subjacente para hospedagem web, rede e aspectos de segurança abaixo podem ser personalizados conforme necessário.
Este guia tem como objetivo principal ajudar com uma nova conta em branco da AWS ou com uma conta existente que possa ser adaptada para atender aos requisitos básicos.
Dois métodos gerais de uso da AWS para hospedagem App Builder no Windows são:
- PaaS: ElasticBeanstalk - .NET como plataforma (com e sem alta disponibilidade)
- IaaS: instâncias Ec2 de VMs - (semelhante ao local)
Este documento foca no uso do ElasticBeanstalk (EB), pois este é o método mais fácil na AWS para gerenciamento de longo prazo e facilidade de atualizações. Para Ec2-only, veja nosso documento VM/on-premise. Além disso, este documento também focará no uso do RDS (Relational Database Service) para o DB.
Nota
Você pode economizar em custos e aumentar a simplicidade colocando todos os objetos em Sub-redes públicas (Sub-redes que estão em uma Tabela de Rotas onde o gateway padrão ((0.0.0.0/0)) é um Gateway de Internet.); Negando a necessidade de um Gateway NAT e um hospedar Bastion. Apenas observe que os Grupos de Segurança serão então a única barreira de acesso externo e você não poderá ter um IP de saída confiável de App Builder que lista de permissões em sistemas externos. (Os gateways NAT têm um eIP estático que será o IP de saída).
Elementos AWS
- VPC com 4 ou mais sub-redes; Duas ou mais associadas a uma tabela de rotear contendo um Gateway de Internet como rotear padrão (público) – Duas ou mais associadas a uma tabela de rotear usando um gateway NAT como rotear padrão (privado) As zonas de disponibilidade devem ser espelhadas nas Tabelas de Rotas (IE: usando Público: 1a,1b - Privado: 1a,1b)
- Certificado – Você precisará criar ou importar um certificado para usar SSL
- IAM: Usuários, Funções*, Políticas* – Concedendo permissões de serviço
- Grupos de segurança* – Concessão de permissões de entrada e entre servidores
- Ec2, Bastion hospedar – Servidor Jump para acesso de administrador de servidor de aplicativo e banco de dados
- S3 Bucket* - configurado para permitir App Builder acesso de leitura/gravação para fins de criação e compartilhamento de chaves de segurança
- Banco de dados* - Pode ser executado usando RDS ou instalado em instâncias EC2
- Elastic Beanstalk* - Gerencia App Builder instâncias Ec2
*Uma por instância
Rede Básica
Exemplo de VPC:
VPC padrão: 172.31.0.0/16
Gateway NAT (opcional): Sub-rede como pública, Conectividade como pública, alocar eIP.
Sub-redes:
Tabela de Rota Pública:
Tabela de Rota Privada:
Configuração S3 para Chaves de Criptografia de Dados
Crie um bucket S3 na região desejada; ele será usado para armazenar metadados de estado de sessão e App Builder criptografia de coluna:
Nome de exemplo: *companyname*-vinyl-encryption-keys-*dev*
*Negar acesso público
EU SOU
Políticas
Política de acesso S3:
Criar nova política com este JSON, editar recurso com o nome acima:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource":
"arn:aws:s3:::companyname-vinyl-encryption-keys-dev/*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": "*"
}
]
}
Nome do Exemplo: *companyname*-vinyl-encryption-keys-s3-*dev*
Exemplo Desc: Concede acesso EC2 ao S3 Bucket
Funções
Criar nova função: Tipo=EC2 -> Adicionar políticas:
<S3 Policy Above>
AWSElasticBeanstalkMulticontainerDocker
AWSElasticBeanstalkWebTier
AWSElasticBeanstalkWorkerTier
Nome: *companyname*-eb-*dev*
EC2
Dentro do serviço EC2, vá para cada uma das seções abaixo e crie o seguinte:
Grupos de segurança:
Crie pelo menos dois grupos, um para EC2/EB (aplicado no EB) e um para RDS. O grupo EB será adicionado como uma fonte no grupo RDS, conforme visto abaixo. Eles concedem permissões para RDP para a instância EC2 e para a instância EC2 acessar a instância RDS:
Configuração do grupo de segurança | ||||
---|---|---|---|---|
Nome: EB-DEV (Permite portas para EC2) | ||||
RDP | TCP | 3389 | <VPN Endpoint> | VPN da empresa |
RDP | TCP | 3389 | <Yourself> | PDR |
RDP | TCP | 3389 | sgr-091a912ec59ae4184 | Bastião |
Nome: RDS-DEV (Permite portas para RDS) | ||||
MSSQL | TCP | 1433 | <VPN Endpoint> | VPN da empresa |
MSSQL | TCP | 1433 | sgr-082d6e34327ee6b9c8 | (EB-DEV) |
MSSQL | TCP | 1433 | <Yourself> | RDS |
MSSQL | TCP | 1433 | sgr-091a912ec59ae4184 | Bastião |
Nome: Bastion (Opcional) (É adicionado acima para permitir acesso a instâncias em sub-redes privadas) | ||||
MSSQL | TCP | 1433 | <VPN Endpoint> | VPN da empresa |
Pares de chaves:
Criar par de chaves -> <companyname-%dev%>
-> PEM -> Criar
Instâncias: Crie um hospedar Bastion (Opcional)
Inicie uma instância básica do Windows 2019 para uso como um host de salto RDP se estiver usando sub-redes privadas para App Builder instâncias.
Crie um Banco de Dados Usando RDS
- Abra o serviço RDS no console da AWS
- Selecione Grupos de sub-redes > Criar grupo de sub-redes de BD > Rotule como privado ou público, dependendo se você deseja a capacidade de acesso externo (se os grupos de segurança permitirem) > Escolha sua VPC e adicione o par de Zonas de disponibilidade que você usou ao configurar as sub-redes para a VPC acima > Agora selecione as duas sub-redes corretas que são privadas ou públicas. > Criar
-
Escolha Criar banco de dados > Microsoft SQL Server > Escolher licença:
- SQL Server Express Edition *(Aceitável para pequenos bancos de dados com menos de 10 GB e instâncias de tamanho 'grande' ou menor.)
- SQL Web Edition (para bancos de dados > 10 GB; para tamanhos de instância > 'grande')
- SQL Standard Edition (para Multi-AZ; Muito caro)
-
Identificador de instância do BD: IE: companyname-db-dev
- Nome de usuário mestre: App Builder
- Senha mestra: Gere uma passagem aleatória forte que exclua símbolos (IE: zpZvLtLmRmrrE68T)
- Tamanho da instância: T3.Médio ou maior, dependendo da carga de trabalho (M5.Grande ou > para CPU alta sustentada.)
- Armazenamento alocado: 20 GB para começar para dev; recomendo 200 GB ou mais para Prod devido à maior alocação de IOPS
-
Grupo de sub-rede: Escolha o que você criou acima.
- Acesso público: Sim se o grupo acima usou sub-redes públicas; caso contrário, não.
- Grupos de segurança VPC existentes: Escolha o grupo RDS criado anteriormente.
Defina os valores restantes conforme desejado (mantenha 1433 como a porta do banco de dados).
Nota
Se estiver hospedando App Builder com o Jitterbit, o SQL Server Express não é uma opção de banco de dados suportada.
Configuração do Elastic Beanstalk (eb)
- Nome do aplicativo:
App Builder
- Nome do ambiente:
*companyname*-app-*dev*
- Plataforma: .NET no Windows; IIS 10 Windows 2019, plataforma mais recente
- Carregar App Builder pacote .zip com o nome de arquivo terminando em '-eb'. Por exemplo:
vinyl-3.3.12345-win-eb.zip
-
Selecione Configurar mais opções - Role para o topo da página Selecione: Configuração personalizada Para o abaixo, clique em Editar em cada seção e salve na seguinte ordem:
Configuração do Elastic Beanstalk Capacidade: Carga balanceada; mín. 1/máx. 1 (consulte o manual de alta disponibilidade para maiores informações);
Tipo de instância: T3.medium ou superior (dependendo da carga);
ID da AMI: use a ID da AMI padrãoRede: Selecione VPC criada
Sub-redes do balanceador de carga: Selecione 2 sub-redes públicas
Sub-redes de instância: Selecione 2 sub-redes privadas
Sub-redes do banco de dados: Não utilizadasInstâncias: Tamanho: 150 GB; Grupos: Grupo EB criado na seção EC2. Balanceador de carga: Tipo: Aplicativo -> Processos; Editar padrão;
Código HTTP: 200; Caminho /ping
Para SSL: (Consulte Configurando HTTPS) Adicionar ouvinte - 443/HTTPS - Seu certificado - TLS-1-2-Ext-2018-06Segurança: <EC2 Key pair from above>
; Perfil de instância do IAM conforme criado acima. Deixe a função de serviço como está (gerada automaticamente) -
Criar!
Configuração de Postagem EB
O ambiente levará aproximadamente de 15 a 20 minutos para surgir.
Depois que o EB terminar de montar os componentes, é normal que o status fique vermelho nesta fase, pois é necessário atualizar as propriedades padrão do ambiente do EB.
No ambiente ElasticBeanstalk: Vá para: Configuração -> Software -> Editar:
Role para baixo até Propriedades do ambiente:
Nome da propriedade | Padrão | Exemplo |
---|---|---|
Informações de conexão | DatabaseType=SQLServer;HostName=;DatabaseName=App Builder;UserName=vinyl;Password=password | DatabaseType=SQLServer;HostName=example-db-dev.cmpgei1x4tzz.us-east-1.rds.amazonaws.com;DatabaseName=App Builder;UserName=vinyl;Password=P@SSW**RD~!! |
Criptografia de dados: S3BucketEndpoint | https://{bucket}s3{-aws-region}.amazonaws.com | https://companyname-vinyl-encryption-keys-dev |
Criptografia de dados: S3KeyPrefix | {elastic-beanstalk-environment-name} | Companyname-app-Dev |
ConnectionInfo
: Edite partes da string para corresponder ao nome do host do seu db, nome de usuário e senha.DataEncryptionKeyS3BucketEndpoint
: Defina para o nome do bucket criado anteriormente.DataEncryptionKeyS3KeyPrefix
: Defina o nome do ambiente do Elastic Beanstalk.
Após essas etapas serem aplicadas e as atualizações concluídas, vá para App Builder URL do site no EB. Isso acionará uma instalação ou atualização do banco de dados, se necessário.
Configurando HTTPS
Por padrão, novos ambientes Elastic Beanstalk não são configurados para HTTPS. Conforme observado no App Builder documentação, HTTPS é fortemente recomendado para todos os novos ambientes Elastic Beanstalk.
Os ambientes Elastic Beanstalk encerram a conexão HTTPS no Elastic Load Balancer.
Nota
Para o processo abaixo, você deve ter criado ou importado um certificado para o serviço Certificate Manager já.
Configurando o Elastic Beanstalk para Aceitar Solicitações HTTPS
- Faça login no Amazon Web Services Console
- Em Serviços, escolha Elastic Beanstalk
- Selecione o ambiente que você está atualizando
- Selecione Configuração no menu esquerdo
- Em Load Balancer escolha Editar
-
Se não estiver presente, adicione Porta do ouvinte 443, HTTPS:
-
Selecione o ID do certificado SSL aplicável *Para a 'política SSL'; Quanto ao Windows 2019, o TLS 1.2 deve ser usado
-
Clique no botão Salvar e depois em Aplicar na página do Balanceador de Carga:
Aplicar Redirecionamento HTTPS e FQDN
Certifique-se de ter criado e testado uma entrada DNS CNAME para seu domínio com seu registrador ou Servidores de Nome atuais antes de configurar o abaixo. O URI do ElasticBeanstalk será o valor de destino que sua entrada DNS deve usar. Ele também deve corresponder ao Certificado SSL que você está usando.
Exemplo
- Host/Nome:
demo1.companydomain.com
- Tipo:
CNAME
- Meta/Valor:
demo1.us-east-1.elasticbeanstalk.com
- De App Builder, vá para IDE > Provedores de segurança
-
No painel Configuração, clique no botão Mais e selecione Sites:
-
Clique duas vezes na entrada padrão
- Clique no botão Editar
- Insira sua url FQDN com https no campo URL
- Marque para habilitar Redirecionamento
-
No campo Redirecionar se o cabeçalho existir, insira X-Forwarded-For:
-
Clique em Salvar