Mostrando entradas con la etiqueta AWS. Mostrar todas las entradas
Mostrando entradas con la etiqueta AWS. Mostrar todas las entradas

jueves, 30 de abril de 2020

[EN] DevOps roadmap

Hello!

Today I come with a roadmap that someone sent me a few days ago. It is a roadmap of what (according to how it is understood by who has drew it) a DevOps should know.



You can more or less agree with what is in it, but it has helped me to get to know some new technologies that could be very interesting to me.

What about you? What do you think? One thing amazing is that you can suggest your changes, but I am not sure they would take them into account. Anyway, I have at least two suggestions, that are
  • HOW COME Debian is not in purple???
  • I know there is no Load Balancing section but they should include it somehow


Source: roadmap.sh
You have a few more interesting roadmaps in that page

viernes, 10 de mayo de 2019

[EN] AWS - An UnauthorizedOperation and encrypted message

Have you ever tried to perform a change from the aws command-line and all you got was an error like

"An error occurred (UnauthorizedOperation) when calling the XXXXXX operation: You are not authorized to perform this operation. Encoded authorization failure message"

and an encrypted string afterwards? Well, don't panic. It's just a "normal" error, but in this case the output is encrypted for security; aws api does so becasue it throws some sensible information and they don't want anyone else but you to get it. 



How to decrypt that info? Easy; you need an allow policy on STS for the action DecodeAuthorizationMessage. If you already got permission, you don't need to create the policy, but if you need to just copy and paste it


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sts:DecodeAuthorizationMessage",
            "Resource": "*"
        }
    ]
}

Once the policy has been applied, you can decrypt the error with

> aws sts decode-authorization-message --encoded-message Error_Message_Encrypted_String --output table

where Error_Message_Encrypted_String would be the message you got.




Hope that helps!

miércoles, 4 de abril de 2018

AWS - Actualizar un certificado SSL externo

Hoy os voy a explicar cómo lo hago yo para actualizar un certificado SSL en AWS, un certificado que se ha comprado fuera. Lo vamos a hacer en tres pasos, que son
  1. Codificar los certificados (pasar a .pem) 
  2. Subirlos a AWS 
  3. Cambiar el viejo por el nuevo
1) Para codificar el certificado nuevo vamos a necesitar
    domain.crt (el certificado que nos habrá enviado el proveedor)
    domain.key
    root.crt (es el Certificado Intermedio del tipo de SSL que hemos tramitado, que nos debería dar también el proveedor, sino mejor se lo pedimos). 
Para hacer la conversión y encriptar los archivos lo hacemos así (desde cualquier linux que tenga el paquete openssl instalado)

> rsa -in domain.key -outform PEM -out domain.key.pem
> x509 -inform PEM -in domain.crt -out domain.crt.pem
> x509 -inform PEM -in root.crt -out root.crt.pem
 
Ya los tienes codificados. Vamos a subirlos.

2)    Subirlos no es complicado, sólo necesitas un usuario IAM con permisos para subirlos. Aquí tienes la documentación de todas las políticas en ACM que necesitas para definir los permisos de tu usuario.

La subida la puedes hacer desde la consola de AWS o desde línea de comandos (habiendo instalado las AWS tools previamente). Desde el directorio donde tienes los certificados codificados, el comando sería este

> aws iam upload-server-certificate --server-certificate-name Nombre_del_Certificado --certificate-body file:/domain.crt.pem --private-key file:/domain.key.pem --certificate-chain file:/domain_2016_ca.crt.pem
 
Cuando este paso se hace bien, el sistema devuelve algo así:

{
    "ServerCertificateMetadata": {
        "ServerCertificateId": "ASCAJKNEFTXTK7XXXXXXX",
        "ServerCertificateName": "domain",
        "Expiration": "2019-07-21T23:59:59Z",
        "Path": "/",
        "Arn": "arn:aws:iam::xxxxxxxx:server-certificate/domain",
        "UploadDate": "2018-01-26T11:16:35.819Z"
    }
}
 
Sencillo, ¿no? El problema es cuando el usuario de AWS no tiene permisos, que hay que dárselos. El error es más del tipo:

A client error (AccessDenied) occurred when calling the UploadServerCertificate operation: User: arn:aws:iam::xxxxxxxx:user/USER is not authorized to perform: iam:UploadServerCertificate on resource: arn:aws:iam::xxxxxxxx:server-certificate/domain
 
En este caso, falta algún permisos; prueba a darle a tu usuario permisos IAMFullAccess y a quitárselos después de importar el certificado.

3)    Cambiar el nuevo certificado : Desde el panel de AWS, entra en EC2 y en el panel de la izquierda busca Load Balancing y justo debajo, Load Balancer. Busca el balanceador al que está asociado el certificado que vamos a actualizar, selecciónalo y vete a la pestaña "Listeners". Selecciona el HTTPS y edítalo. En el campo

Default SSL certificate
escoge el certificado que acabas de subir y guarda. Ya lo has cambiado.

domingo, 4 de febrero de 2018

Cómo volcar una BD SQL Server desde el RDS de AWS a un entorno on-premise (II)

Hola a todos!
En un primer post os estuve explicando cómo podéis hacer un export de una BD SQL Server en el RDS de AWS.

En este punto tenemos el backup del SQL en S3; para descargarlo necesitamos acceder a S3 y hacer que el archivo esté disponible desde internet. Para hacerlo, accede al panel de AWS y ve a S3; dentro del bucket tenemos el backup, con el mismo nombre que le has dado al hacer el export. Entra en este archivo y en la pestaña Overview hay un botón para hacerlo público:


También tienes el link externo del archivo. Cópialo y vamos al servidor donde vamos a importar esa base de datos

Recuerda borrar lo que vaya quedando en el bucket para que no se generen gastos no necesarios

Ahora tenemos que descargar e importar la base de datos en el entorno de on-premise. Vamos por partes:

1. Conéctate al servidor desde el que vas a lanzar la restauración, para descargar el backup en local.

2. Descarga el .BAK que hemos generado desde S3. Si ves que no te funciona el enlace por algún motivo, piensa que puedes entrar desde el servidor a la consola de AWS y descargarlo directamente. Ten localizada la descarga; yo la suelo mover a la raiz del disco en el que esté para tenerla controlada.

3. Abre el MS SQL y conecta al motor del SQL

4.Vamos a eliminar la BD. Recuerda avisar a quien sea necesario. Para eliminarla, ponla en modo offline primero para confirmar que no hay ninguna conexión abierta y de errores. Si lo haces con una query será algo así

ALTER DATABASE [database_name] SET OFFLINE WITH ROLLBACK IMMEDIATE
GO

Los corchetes “[“ y “]” no los quites, son parte de la query. Una vez la BD esté offline, podrás eliminarla sin problema.

5. Ahora ya podemos restaurar la BD. Lo vamos a hacer con esta otra query; modifica los campos que sean necesarios

RESTORE DATABASE [database_name] FROM DISK = 'c:\AAAAMMDD_backup.bak'
WITH MOVE 'database_mdf_name' TO 'C:\Program Files\Microsoft SQL
Server\MSSQL11.DEVW2012\MSSQL\DATA
\database_mdf_name.mdf',
MOVE 'database_log_name' TO 'C:\Program Files\Microsoft SQL
Server\MSSQL11.DEVW2012\MSSQL\DATA
\database_mdf_name.ldf
RECOVERY, REPLACE, STATS = 10;

6. Una vez acabe (puede tardar unos 5 o 10 minutos, dependiendo del tamaño), hay que habilitar el acceso a esta base de datos nueva. En Seguridad → Inicios de Sesion, busca el usuario que se utilizaba antes y vete a propiedades


Cuando se abra la ventana de propiedades, vete a Asignación de usuarios en el menú arriba a la izquierda

y selecciona la nueva base de datos en “Usuarios asignados a este inicio de sesión":


Una vez estén asignados, acepta y el backup estará restaurado del todo.

miércoles, 24 de enero de 2018

Cómo volcar una BD SQL Server desde el RDS de AWS a un entorno on-premise (I)

Hola! Hoy os traigo un tutorial algo más elaborado, y el primero (creo) en el que trabajo con AWS. Espero que no sea el único!

Para exportar una BD SQL Server desde AWS a un entorno on-premise, vamos a hacer un export a S3 y desde allí lo descargamos e importamos desde el entorno on premise.

En esta primera parte del tutorial vamos a hacer el export, y en una segunda parte, la importación en destino

Lo que primero vamos a necesitas será un usuario con permisos suficientes para poder exportar el backup y volcarlo en un bucket de S3; después necesitas tener ese bucket. Y por último, tener la opción SQLSERVER_BACKUP_RESTORE añadida a un grupo de opciones en tu instancia RDS.


Si ya tienes un usuario IAM puedes crear y asignarle la política específica para hacer exports/restores RDS o puedes crear un rol y asignarlo. En cualquier caso, la política que tienes que crear debería ser una de las tres definidas aquí.

Para hacer el export del SQLServer nos conectamos a la consola y ejecutamos este comando

exec msdb.dbo.rds_backup_database 
        @source_db_name='database_name',
        @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',
        @kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id',
        @overwrite_S3_backup_file=1,
        @type='differential/FULL';

donde
  • @source_db_name hace referencia a la BD que vas a exportar
  • @s3_arn_to_backup_to hace referncia al bucket donde vas a exportar y al nombre del fichero con que se va a guardar
  • @kms_master_key_arn hace referencia a la encriptación del fichero, y es OPCIONAL
  • @overwrite_S3_backup_file hace referencia a si quieres sobreescribir el fichero en caso de que exista; 1 equivale a Sí y 0 a No. Es OPCIONAL, y por defecto es "1"
  • @type hace referencia al tipo de backup, si es diferencial o completo. Esta opción también es OPCIONAL y por defecto equivale a FULL. Para el backup diferencial se toma como punto de referencia el último backup FULL que se ha hecho. Se puede consultar cuándo se ha hecho con esta query:
select top 1 
database_name
,  backup_start_date
,  backup_finish_date 
from    msdb.dbo.backupset 
where   database_name='database_name'
and     type = 'D' 
order by backup_start_date desc;

Este export no es instantáneo y va a depender sobre todo del tamaño de la BD; para ver su evolución, lo hacemos con esta query:

exec msdb.dbo.rds_task_status @db_name='database_name';
 
Si quisiéramos restaurar la base de datos, la query sería


exec msdb.dbo.rds_restore_database
@restore_db_name=’database_name';
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';


Bien, y hasta aquí la parte de AWS; en el siguiente post os explico cómo lo hago yo para importar el export en un SQL Server.



Gracias!