Instalando o Jitterbit App Builder na AWS (Windows)
Introdução
Este manual abordará vários métodos sugeridos para a instalação do App Builder na AWS usando Windows e SQL Server. Existem muitos métodos de configuração da arquitetura subjacente para hospedagem na web, aspectos de rede e segurança que podem ser adaptados conforme necessário.
Este guia é principalmente destinado a ajudar com uma nova conta da AWS em branco ou uma existente que pode ser adaptada para atender aos requisitos básicos.
Dois métodos gerais de usar a AWS para hospedar o App Builder no Windows são:
- PaaS: ElasticBeanstalk - .NET como plataforma (Com e sem Alta Disponibilidade)
- IaaS: instâncias EC2 - (Semelhante ao local)
Este documento foca no uso do ElasticBeanstalk (EB), pois este é o método mais fácil na AWS para gerenciamento a longo prazo e facilidade de atualizações. Para apenas EC2, consulte nosso documento sobre VM/local. Além disso, este documento também se concentrará no uso do RDS (Serviço de Banco de Dados Relacional) para o DB.
Nota
Você pode economizar custos e aumentar a simplicidade colocando todos os objetos em sub-redes públicas (Sub-redes que estão em uma Tabela de Roteamento onde o gateway padrão ((0.0.0.0/0)) é um Gateway de Internet.); Negando a necessidade de um Gateway NAT e um host Bastion. Apenas observe que os Grupos de Segurança serão então a única barreira contra o acesso externo e você não poderá ter um IP de saída confiável do App Builder para colocar na lista de permissões em sistemas externos. (Gateways NAT têm um eIP estático que será o IP de saída).
Elementos da AWS
- VPC com 4 ou mais sub-redes; Duas ou mais associadas a uma tabela de roteamento contendo um Gateway de Internet como a rota padrão (pública) – Duas ou mais associadas a uma tabela de roteamento usando um gateway NAT como a rota padrão (Privada) As zonas de disponibilidade devem espelhar entre as Tabelas de Roteamento (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* – Concedendo permissões de entrada e entre servidores
- EC2, host Bastion – Servidor de salto para acesso ao servidor de aplicativo e administração do DB
- Bucket S3* - configurado para permitir acesso de leitura/gravação do App Builder para o propósito de criar e compartilhar chaves de segurança
- Banco de Dados* - Pode ser executado usando RDS ou instalado em instâncias EC2
- Elastic Beanstalk* - Gerencia instâncias EC2 do App Builder
*Um 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 Roteamento Pública:
Tabela de Roteamento Privada:
Configuração do S3 para chaves de criptografia de dados
Crie um bucket S3 na região desejada; este será usado para armazenar metadados de estado de sessão e criptografia de colunas do App Builder:
Nome de exemplo: *nomedaempresa*-vinyl-encryption-keys-*dev*
*Negar acesso público
IAM
Políticas
Política de Acesso ao S3:
Crie uma nova Política com este JSON, edite o 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 de Exemplo: *nomedaempresa*-vinyl-encryption-keys-s3-*dev*
Descrição de Exemplo: Concede acesso EC2 ao Bucket S3
Funções
Crie uma nova Função: Tipo=EC2 -> Adicione políticas:
<Política S3 Acima>
AWSElasticBeanstalkMulticontainerDocker
AWSElasticBeanstalkWebTier
AWSElasticBeanstalkWorkerTier
Nome: *nomedaempresa*-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 em EB) e um para RDS. O grupo EB será adicionado como uma fonte no grupo RDS, conforme visto abaixo. Estes concedem permissões para RDP à 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 | <Você> |
RDP |
RDP | TCP | 3389 | sgr-091a912ec59ae4184 |
Bastion |
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 | <Você> |
RDS |
MSSQL | TCP | 1433 | sgr-091a912ec59ae4184 |
Bastion |
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: Criar um host Bastion (Opcional)
Inicie uma instância básica do Windows 2019 para uso como um jump-host RDP se estiver usando sub-redes privadas para instâncias do App Builder.
Criar um banco de dados usando RDS
- Abra o serviço RDS no console da AWS
- Escolha Grupos de sub-rede > Criar grupo de sub-rede DB > Rotule como privado ou público, dependendo se deseja a capacidade de acesso externo (permissões de grupos de segurança) > Escolha sua VPC e adicione selecione o par de Zona de Disponibilidade que você usou ao configurar as sub-redes para a VPC acima > Agora selecione as duas sub-redes corretas que são ambas privadas ou públicas. > Criar
-
Escolha Criar Banco de Dados > Microsoft SQL Server > Escolher licença:
- Edição Express do SQL Server *(Aceitável para bancos de dados pequenos abaixo de 10GB e instâncias de tamanho 'grande' ou menores.)
- Edição Web do SQL (Para bancos de dados > 10GB; para tamanhos de instância > 'grande')
- Edição Padrão do SQL (Para Multi-AZ; Muito caro)
-
Identificador da instância DB: IE: companyname-db-dev
- Nome de usuário mestre: App Builder
- Senha mestre: Gere uma senha aleatória forte que exclua símbolos (IE: zpZvLtLmRmrrE68T)
- Tamanho da instância: T3.Medium ou maior, dependendo da carga de trabalho (M5.Large ou > para CPU alta sustentada.)
- Armazenamento alocado: 20GB para começar para dev; recomenda-se 200GB 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 DB).
Nota
Se estiver hospedando o App Builder com Jitterbit, o SQL Server Express não é uma opção de banco de dados suportada.
Configuração do Elastic Beanstalk (EB)
- Nome do App:
App Builder
- Nome do Env:
*companyname*-app-*dev*
- Plataforma: .NET no Windows; IIS 10 Windows 2019, Plataforma mais recente
- Faça upload do pacote .zip do App Builder com o sufixo de nome de arquivo '-eb'. Por exemplo:
vinyl-3.3.12345-win-eb.zip
-
Selecione Configurar Mais Opções - Role até 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: Balanceado por Carga; min 1/max 1 (Veja o manual de Alta Disponibilidade para mais);
Tipo de Instância: T3.medium ou maior (Dependendo da carga);
ID da AMI: Use o ID da AMI padrãoRede: Selecione a 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 utilizadoInstâncias: Tamanho: 150GB; Grupos: Grupo EB criado na seção EC2. Balanceador de Carga: Tipo: Aplicação -> Processos; Editar padrão;
Código HTTP: 200; Caminho /ping
Para SSL: (Veja Configurando HTTPS) Adicionar listener - 443/HTTPS - Seu Certificado - TLS-1-2-Ext-2018-06Segurança: <Par de Chaves EC2 acima>
; Perfil de instância IAM conforme criado acima. Deixe a Função de Serviço como está (autogerada) -
Criar!
Configuração pós-EB
O ambiente levará aproximadamente de 15 a 20 minutos para ser iniciado.
Uma vez que o EB tenha concluído a configuração dos componentes, é normal que o status esteja vermelho nesta fase, pois é necessário atualizar as propriedades padrão do ambiente EB.
No Ambiente do ElasticBeanstalk: Vá para: Configuração -> Software -> Editar:
Role para baixo até Propriedades do ambiente:
Nome da Propriedade | Padrão | Exemplo |
---|---|---|
ConnectionInfo | 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~!! |
DataEncryption:S3BucketEndpoint | https://{bucket}s3{-aws-region}.amazonaws.com |
https://companyname-vinyl-encryption-keys-dev |
DataEncryption:S3KeyPrefix | {elastic-beanstalk-environment-name} |
Companyname-app-Dev |
ConnectionInfo
: Edite as partes da string para corresponder ao hostname, nome de usuário e senha do seu banco de dados.DataEncryptionKeyS3BucketEndpoint
: Defina para o nome do bucket criado anteriormente.DataEncryptionKeyS3KeyPrefix
: Defina para o nome do ambiente do Elastic Beanstalk.
Após a aplicação desses passos e a conclusão das atualizações, acesse a URL do site do App Builder no EB. Isso acionará uma instalação ou atualização do banco de dados, se necessário.
Configurando HTTPS
Por padrão, novos ambientes do Elastic Beanstalk não estão configurados para HTTPS. Como mencionado na documentação do App Builder, o HTTPS é fortemente recomendado para todos os novos ambientes do Elastic Beanstalk.
Elastic Beanstalk environments terminate the HTTPS connection at the Elastic Load Balancer.
Nota
Para o processo abaixo, você deve ter criado ou importado um certificado no serviço Certificate Manager.
Configurando o Elastic Beanstalk para aceitar solicitações HTTPS
- Faça login no Console da Amazon Web Services
- Em Serviços, escolha Elastic Beanstalk
- Selecione o ambiente que você está atualizando
- Selecione Configuração no menu à esquerda
- Em Load Balancer, escolha Editar
-
Se não estiver presente, adicione Listener Port 443, HTTPS:
-
Selecione o SSL Certificate ID que é aplicável *Para a 'política SSL'; Para Windows 2019, deve-se usar TLS 1.2
-
Clique no botão Salvar e, em seguida, Aplicar na página do Load Balancer:
Forçar HTTPS e redirecionamento FQDN
Certifique-se de que você criou e testou uma entrada DNS CNAME para seu domínio com seu registrador ou servidores de nomes 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
- Destino/Valor:
demo1.us-east-1.elasticbeanstalk.com
- No 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 Redirecionar
-
No campo Redirecionar se o cabeçalho existir, insira X-Forwarded-For:
-
Clique em Salvar