Migración de una Hosted Zone de una cuenta a otra

Debido a una reestructuración, es necesario mover las zonas de una cuenta a otra, para esto se ejecutaron las instrucciones de: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-migrating.html

Para esto necesitamos

  • 2 Cuentas de AWS
  • 1 Hosted zone por cada 1
  • cat Usuarios con acceso CLI para cada cuenta con permisos de
    • route53:ListResourceRecordSets (Cuenta de Origen)
    • route53:ChangeResourceRecordSets (Cuenta de Destino)

Una vez que tenemos todo lo necesario, lo primero que hacemos es descargar el listado desde la cuenta de origen, utilizando:


aws route53 list-resource-record-sets --hosted-zone-id XXXXXXXXX --profile cuentaOrigen > origen.json

Una vez que tenemos este archivo, debemos convertirlo a un formato apto para la carga, para esto ingresaremos en el siguiente utilitario:

Utilitario Migración

En este utilitario podemos pegar el contenido del archivo de origen y obtener un archivo con un formato apto para ejecutar el comando Change Resource Record Sets


aws route53 change-resource-record-sets --hosted-zone-id YYYYYYYYY --change-batch file:///resultado.json --profile cuentaDestino

Configurar Aws Cloudwatch Agent en Ubuntu EC2

Despues de varios incidentes donde el disco duro de instancias EC2 bajo mi supervisión se llenaran, deteniendo los servicios de producción, fue necesario encontrar una manera de monitorear de mejor manera los mismos.

A continuación una guia de como configurar esto en instancias EC2 con ubuntu:

Paso 1 crear un rol con permisos para

  • CloudWatchAgentServerPolicy
  • AmazonSSMManagedInstanceCore
  • + Politica de ec2:DescribeTags

Asignar este rol a la instancia deseada

Una vez activado el rol, continuamos con la configuración del agente

Descargamos el agente desde:

Instalamos el paquete .deb

Verificamos el estado del servicio

ahí nos indicará que falta configurar el servicio

ejecutamos el asistente de configuración

Dependiendo de la configuración, y el usuario que escojamos deberemos dar permiso a este usuario:

Una vez configurado, se generará un archivo en:

Debe moverse a

Activamos e Iniciamos el servicio

Verificamos el estado usando

Si todo salió bien deberias ver lo siguiente en cloudwatch

Esto nos permitirá generar un dashboar similar a:

Convertir AVI a MP4 ó WebM Usando Funciones Lambda y FFMPEG

El contenido de esté artículo deriva del repositorio https://github.com/kefabean/lambda-transcoder

Instrucciones para generación del build de FFMPEG

https://trac.ffmpeg.org/wiki/CompilationGuide/Centos

Descarga de Builds estáticos FFMPEG

https://johnvansickle.com/ffmpeg/

Una vez que generamos o descargamos el build estático de FFMPEG, descargamos las dependencias de la función

npm install async
npm install fluent-ffmpeg
npm install s3-upload-stream

Deberemos terminar con un zip que contenga:

El entorno de ejecución máximo para esta función es Node.js 16.x

Instalación de certificado para wildcard con certbot

Esta instalación solo permite la generación del certificado y el único medio de validación es mediante un registro TXT en DNS

sudo certbot certonly --manual -d "*.dominio.com" -d "dominio.com"

Se debe crear el registro TXT DNS con los valores proporcionados por el comando antes de continuar el proceso

La creación del registro puede ser validado mediante el siguiente link:

https://www.whatsmydns.net/

Por ultimo se debe actualizar el certificado en el archivo ssl.conf

Habilitar PHP 8.1 de forma adicional en servidor Amazon Linux

Instalamos EPEL

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Instalamos REMI

sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

Instalamos yum utils

sudo yum -y install yum-utils

Deshabilitamos la versión por defecto de php en remi

sudo yum-config-manager –disable ‘remi-php*’

Activamos la versión 8.1

sudo yum-config-manager –enable remi-php81

Instalamos PHP 8.1 y sus dependencias

sudo yum install php81

sudo yum install php81-php-fpm

Habilitamos el servicio de PHP FPM

sudo systemctl enable php81-php-fpm

Actualizamos www.conf para que genere un archivo socket desde el cual se conectará Apache

vi /etc/opt/remi/php81/php-fpm.d/www.conf

Agregando linea listen

listen = /etc/opt/remi/php81/php-fpm.d/www.sock

Iniciamos el servicio de PHP FPM

sudo systemctl start php81-php-fpm

Actualizamos los permisos del archivo www.sock

getfacl /etc/opt/remi/php81/php-fpm.d/www.sock

sudo setfacl -m u:apache:rw /etc/opt/remi/php81/php-fpm.d/www.sock

Creamos carpeta /var/www/php81

mkdir /var/www/php81

Creamos virtualhost en apache, para que acceda a una carpeta y ejecute esta versión de PHP

Listen 8080

<VirtualHost *:8080>

DocumentRoot /var/www/php81

<Directory /var/www/php81>

Options -Indexes +FollowSymLinks +MultiViews

AllowOverride All

Require all granted

</Directory>

<FilesMatch \.php$>

SetHandler “proxy:unix:/etc/opt/remi/php81/php-fpm.d/www.sock|fcgi://localhost”

</FilesMatch>

</VirtualHost>

Por ultimo reiniciamos el servidor apache

sudo service httpd restart

Instalación Certificado Hostmonster en EC2 – Apache2

Para poder ejecutar este tutorial, debemos tener un dominio en hostmonster, haber adquirido un certificado SSL en hostmonster y haber configurado un redireccionamiento del dominio hacia la ip del servidor externo al que queramos llegar, en este caso en AWS.

Pasos:

Iniciamos sesión en cPanel de Hostmonster y nos dirigimos a la sección Security > SSL/TLS

En esta sección iremos a Certificates (CRT) > Generate, view, upload…


Aquí, bajo el certificado del dominio que queramos aplicar en el servidor externo, daremos click en “install”

De aquí obtendremos, el certificado CRT y la llave

Almacenaremos los certificados en el servidor de destino:

/etc/pki/tls/certs/certificate.crt
/etc/pki/tls/private/certificate.key

Adicional a esto, es necesario instalar el módulo SSL de apache, mediante el siguiente comando:

sudo yum -y install mod_ssl

Una vez instalado, se debe modificar la configuración ssl del apache, misma que se encuentra en:

/etc/httpd/conf.d/ssl.conf

Apuntando las rutas necesarias al certificado y llave obtenidos de hostmonster:

Adicional a esto se debe verificar que la propiedad server name corresponda al dominio que tiene asociado el certificado:

Para finalizar, es necesario reiniciar servicio apache con el siguiente comando:

sudo service httpd restart

Actualizando php.ini en AWS EC2

Problema:

En una instancia de AWS EC2 tengo instalado apache con PHP 7, necesito actualizar una de las configuraciones de PHP (Memoria, tiempo de ejecución, etc).

Actualizo el php.ini, reinicio el servidor apache y los cambios no toman efecto, que debo hacer?

Solución:

1.- Crear un archivo adicional de configuración en el directorio php.d

sudo touch /etc/php.d/30-custom.ini

2.- Editar el archivo con las configuraciones que queremos que tomen efecto

sudo vi /etc/php.d/30-custom.ini

memory_limit = 256M
upload_max_size = 256M
post_max_size = 256M
upload_max_filesize = 256M
max_execution_time = 1000
max_input_time = 1000

3.- Reiniciar el servicio php-fpm

sudo service php-fpm restart

4.- Reiniciar el servicio httpd

sudo service httpd restart

https://forums.aws.amazon.com/thread.jspa?messageID=820299&tstart=0

Notas adicionales:

Los archivos ini adicionales se ejecutan en orden alfabético, por eso el nombre 30-custom.ini

PHP-FPM: Servicio para el manejor de procesos php comunmente utilizado para manejo de alta carga. Ofrece mejoras en el manejo de procesos y monitoreo.

Para más información referirse a https://php-fpm.org/

Es necesario reiniciar este servicio para que los cambios tomen efecto

Antes de ejecuar estos cambios, verifica que estes modificando el archivo php.ini por defecto.

Cambiar configuración de AWS CLI en Windows

Necesito apuntar a una cuenta diferente de amazon para hacer uso de la linea de comandos AWS CLI.

Para esto, una vez creada la cuenta de amazon, accederemos y crearemos un nuevo usuario con acceso a consola mediante IAM (Gestor de Usuarios de AWS)

Panel Inicial de AWS IAM

Una vez que hemos ingresado en el panel, daremos click en Users al lado izquierdo

Usuarios en AWS IAM

A Continuación daremos click en Add User

Creación de Usuario AWS IAM

Una vez definido el usuario pasamos al siguiente paso, permisos.

Permisos AWS IAM

Como queremos darle permiso al usuario para que deministre la linea de comandos, lo agregarmos a un grupo de administradores, en caso de que no exista el grupo de administradores lo crearemos con el botón Create group y le daremos permisos de Administrador.

Creación de Grupo Administrador en AWS IAM

Asociaremos el usuario al grupo, y continuaremos el proceso hasta terminar.

Fin de Creación de Usuario

Por último guardaremos las credenciales del usuario en un lugar seguro.

Una vez que tenemos las credenciales, cambiaremos la configuración que tenemos actualmente de nuestro AWS CLI

Las credenciales se encuentran guardadas en la carpeta .aws dentro del directorio del usuario

dir “%UserProfile%\.aws”

Aqui entraremos al archivo credentials y cambiaremos por las credenciales respectivas

Una vez actualizado, abiremos la linea de comando y ejecutaremos, por ejemplo, el comando:

aws s3 ls

Si todo está correcto deberá listarnos los buckets creados en nuestra cuenta de amazon.

Listado de Buckets