Instalación App Builder en AWS (windows)
Introducción
Este manual cubrirá varios métodos sugeridos de instalación de App Builder en AWS con Windows y SQL Server. Existen muchos métodos para configurar la arquitectura subyacente para el alojamiento web, la red y los aspectos de seguridad que se indican a continuación se pueden adaptar según sea necesario.
Esta guía está destinada principalmente a ayudar con una nueva cuenta de AWS en blanco o una existente que pueda adaptarse para cumplir con los requisitos básicos.
Dos métodos generales de uso de AWS para alojamiento App Builder en Windows son:
- PaaS: ElasticBeanstalk - .NET como plataforma (con y sin alta disponibilidad)
- IaaS: instancias Ec2 de máquinas virtuales (similar a las locales)
Este documento se centra en el uso de ElasticBeanstalk (EB), ya que es el método más sencillo en AWS para la gestión a largo plazo y la facilidad de actualizaciones. Para Ec2 únicamente, consulte nuestra documentación de VM/on-premise. Además, este documento también se centrará en el uso de RDS (Relational Database Service) para la base de datos.
Nota
Puede ahorrar costos y aumentar la simplicidad al colocar todos los objetos en subredes públicas (subredes que están en una tabla de rutas donde la puerta de enlace predeterminada ((0.0.0.0/0)) es una puerta de enlace de Internet); lo que elimina la necesidad de una puerta de enlace NAT y un alojar bastión. Solo tenga en cuenta que los grupos de seguridad serán la única barrera para el acceso externo y no podrá tener una IP saliente confiable desde App Builder que incluir en la lista de permisos de sistemas externos. (Las puertas de enlace NAT tienen una eIP estática que será la IP de salida).
Elementos de AWS
- VPC con 4 o más subredes; Dos o más asociadas con una tabla de enrutar que contiene una puerta de enlace de Internet como enrutar predeterminada (pública) – Dos o más asociadas con una tabla de enrutar que utiliza una puerta de enlace NAT como enrutar predeterminada (privada) Las zonas de disponibilidad deben reflejarse en todas las tablas de rutas (es decir: utilizando pública: 1a, 1b - privada: 1a, 1b)
- Certificado – Necesitará crear o importar un certificado para usar SSL
- IAM: Usuarios, Roles*, Políticas* – Concesión de permisos de servicio
- Grupos de seguridad* – Concesión de permisos de entrada y entre servidores
- Ec2, alojar Bastion: servidor Jump para acceso de administrador de base de datos y servidor de aplicaciones
- S3 Bucket* - configurado para permitir App Builder acceso de lectura/escritura con el fin de crear y compartir claves de seguridad
- Base de datos* - Se puede ejecutar mediante RDS o instalar en instancias EC2
- Elastic Beanstalk* - Administra App Builder instancias de EC2
*Una por instancia
Redes Básicas
Ejemplo de VPC:
VPC predeterminada: 172.31.0.0/16
Puerta de enlace NAT (opcional): subred pública, conectividad pública, asignar eIP.
Subredes:
Tabla de rutas públicas:
Tabla de rutas privadas:
Configuración de S3 para Claves de Cifrado de Datos
Cree un depósito S3 en la región deseada; esto se utilizará para almacenar metadatos del estado de la sesión y App Builder cifrado de columna:
Nombre de ejemplo: *companyname*-vinyl-encryption-keys-*dev*
*Denegar acceso público
SOY
Políticas
Política de acceso S3:
Crear nueva política con este JSON, editar el recurso con el nombre anterior:
{
"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": "*"
}
]
}
Nombre del ejemplo: *companyname*-vinyl-encryption-keys-s3-*dev*
Ejemplo de descripción: otorga acceso a EC2 al depósito S3
Roles
Crear nuevo rol: Tipo=EC2 -> Agregar políticas:
<S3 Policy Above>
-AWSElasticBeanstalkMulticontainerDocker
-AWSElasticBeanstalkWebTier
-AWSElasticBeanstalkWorkerTier
Nombre: *companyname*-eb-*dev*
EC2
Dentro del servicio EC2, vaya a cada una de las secciones siguientes y cree lo siguiente:
Grupos de seguridad:
Cree al menos dos grupos, uno para EC2/EB (aplicado en EB) y otro para RDS. El grupo EB se agregará como una fuente en el grupo RDS, como se ve a continuación. Estos otorgan permisos a RDP para la instancia EC2 y para que la instancia EC2 acceda a la instancia RDS:
Configuración del grupo de seguridad | ||||
---|---|---|---|---|
Nombre: EB-DEV (Permite puertos a EC2) | ||||
RDP | TCP | 3389 | <VPN Endpoint> | VPN de empresa |
RDP | TCP | 3389 | <Yourself> | PDR |
RDP | TCP | 3389 | sgr-091a912ec59ae4184 | Bastión |
Nombre: RDS-DEV (Permite puertos a RDS) | ||||
MSSQL | TCP | 1433 | <VPN Endpoint> | VPN de empresa |
MSSQL | TCP | 1433 | sgr-082d6e34327ee6b9c8 | (EB-DEV) |
MSSQL | TCP | 1433 | <Yourself> | RDS |
MSSQL | TCP | 1433 | sgr-091a912ec59ae4184 | Bastión |
Nombre: Bastion (Opcional) (Se agrega arriba para permitirle acceso a instancias en subredes privadas) | ||||
MSSQL | TCP | 1433 | <VPN Endpoint> | VPN de empresa |
Pares de claves:
Crear par de claves -> <companyname-%dev%>
-> PEM -> Crear
Instancias: Crear un alojar de Bastion (Opcional)
Inicie una instancia básica de Windows 2019 para usarla como host de salto RDP si usa subredes privadas para App Builder instancias.
Crear una Base de Datos Utilizando RDS
- Abra el servicio RDS en la consola de AWS
- Elija Grupos de subredes > Crear grupo de subredes de base de datos > Etiquete como privado o público, dependiendo de si desea la capacidad de acceso externo (si los grupos de seguridad lo permiten) > Elija su VPC y seleccione el par de zonas de disponibilidad que utilizó al configurar las subredes para la VPC anterior > Ahora seleccione las dos subredes correctas que sean privadas o públicas. > Crear
-
Seleccione Crear base de datos > Microsoft SQL Server > Elegir licencia:
- SQL Server Express Edition *(Aceptable para bases de datos pequeñas de menos de 10 GB e instancias de tamaño 'grande' o más pequeñas).
- SQL Web Edition (para bases de datos > 10 GB; para tamaños de instancia > 'grandes')
- SQL Standard Edition (para Multi-AZ; muy costoso)
-
Identificador de instancia de base de datos: IE: companyname-db-dev
- Nombre de usuario maestro: App Builder
- Contraseña maestra: genere una contraseña aleatoria segura que excluya los símbolos (por ejemplo, zpZvLtLmRmrrE68T)
- Tamaño de la instancia: T3.Medium o mayor, según la carga de trabajo (M5.Large o mayor para un uso elevado y sostenido de la CPU).
- Almacenamiento asignado: 20 GB para comenzar para el desarrollo; se recomiendan 200 GB o más para la producción debido a la mayor asignación de IOPS
-
Grupo de subredes: elige el que creaste anteriormente.
- Acceso público: Sí, si el grupo anterior utilizó subredes públicas; de lo contrario, no.
- Grupos de seguridad de VPC existentes: elija el grupo RDS creado anteriormente.
Establezca los valores restantes como desee (mantenga 1433 como puerto DB).
Nota
Si es anfitrión App Builder con Jitterbit, SQL Server Express no es una opción de base de datos compatible.
Configuración de Elastic Beanstalk (eb)
- Nombre de la aplicación:
App Builder
- Nombre del ambiente:*companyname*-app-*dev*
- Plataforma: .NET en Windows; IIS 10 Windows 2019, última plataforma
- Subir App Builder paquete .zip con el nombre de archivo terminado en '-eb'. Por ejemplo:
vinyl-3.3.12345-win-eb.zip
-
Seleccione Configurar más opciones - Desplácese hasta la parte superior de la página Seleccione: Configuración personalizada Para lo siguiente, haga clic en Editar en cada sección y guarde en el siguiente orden:
Configuración de Elastic Beanstalk Capacidad: Carga equilibrada; mín. 1/máx. 1 (consulte el manual de alta disponibilidad para obtener más información);
Tipo de instancia: T3.medium o superior (según la carga);
ID de AMI: use la ID de AMI predeterminadaRed: Seleccionar VPC creada
Subredes del balanceador de carga: Seleccionar 2 subredes públicas
Subredes de instancia: Seleccionar 2 subredes privadas
Subredes de base de datos: Sin usarInstancias: Tamaño: 150 GB; Grupos: Grupo EB creado en la sección EC2. Balanceador de carga: Tipo: Aplicación -> Procesos; Editar predeterminado;
Código HTTP: 200; Ruta /ping
Para SSL: (Consulte Configuración de HTTPS) Agregar oyente - 443/HTTPS - Su certificado - TLS-1-2-Ext-2018-06Seguridad: <EC2 Key pair from above>
; Perfil de instancia de IAM creado anteriormente. Deje el rol de servicio tal como está (generado automáticamente) -
¡Crear!
Configuración de Publicación EB
El ambiente tardará aproximadamente entre 15 y 20 minutos en aparecer.
Una vez que EB haya terminado de instalar los componentes, es normal que el estado sea rojo en esta fase, ya que es necesario actualizar las propiedades del ambiente EB predeterminadas.
En el ambiente ElasticBeanstalk: vaya a: Configuración -> Software -> Editar:
Desplácese hacia abajo hasta Propiedades del ambiente:
Nombre de la propiedad | Predeterminado | Ejemplo |
---|---|---|
Información de conexión | 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~!! |
ConnectionInfo
: Edite partes de la cadena para que coincidan con el nombre de host, el nombre de usuario y la contraseña de su base de datos.DataEncryptionKeyS3BucketEndpoint
: Establezca el nombre del depósito creado anteriormente.DataEncryptionKeyS3KeyPrefix
: Establezca el nombre del ambiente de Elastic Beanstalk.
Después de aplicar estos pasos y completar las actualizaciones, vaya a la App Builder URL del sitio en EB. Esto activará la instalación o actualización de la base de datos, si es necesario.
Configurando HTTPS
De manera predeterminada, los nuevos ambientes de Elastic Beanstalk no están configurados para HTTPS. Como se indica en la App Builder documentación: se recomienda enfáticamente el uso de HTTPS para todos los nuevos ambientes de Elastic Beanstalk.
Los ambientes de Elastic Beanstalk finalizan la conexión HTTPS en Elastic Load Balancer.
Nota
Para el siguiente proceso, debe haber creado o importado un certificado en el servicio Administrador de certificados.
Configuración de Elastic Beanstalk para Aceptar Solicitudes HTTPS
- Inicie sesión en la consola de Amazon Web Services
- En Servicios, seleccione Elastic Beanstalk
- Seleccione el ambiente que está actualizando
- Seleccione Configuración en el menú de la izquierda.
- En Load Balancer, seleccione Editar
-
Si no está presente, agregue Puerto de escucha 443, HTTPS:
-
Seleccione el ID del certificado SSL que corresponda. Para la 'política SSL'; en el caso de Windows 2019, se debe utilizar TLS 1.2.
-
Haga clic en el botón Guardar y luego en Aplicar en la página Balanceador de carga:
Aplicar HTTPS y Redireccionamiento FQDN
Asegúrese de haber creado y probado una entrada CNAME de DNS para su dominio con su registrador o servidores de nombres actuales antes de configurar lo siguiente. El URI de ElasticBeanstalk será el valor de destino que debe utilizar su entrada de DNS. También debe coincidir con el certificado SSL que está utilizando.
Ejemplo
- Host/Nombre:
demo1.companydomain.com
- Tipo:
CNAME
- Objetivo/Valor:
demo1.us-east-1.elasticbeanstalk.com
- Desde App Builder, vaya a IDE > Proveedores de seguridad
-
Desde el panel Configuración, haga clic en el botón Más y seleccione Sitios:
-
Haga doble clic en la entrada predeterminada
- Haga clic en el botón Editar
- Ingrese su URL FQDN con https en el campo URL
- Marque para habilitar Redireccionar
-
En el campo Redirigir si existe encabezado, ingrese X-Forwarded-For:
-
Haga clic en Guardar