Creación de una instancia de base de datos de PostgreSQL y conexión a ella - Amazon Relational Database Service

Creación de una instancia de base de datos de PostgreSQL y conexión a ella

En este tutorial, se crea una instancia de EC2 y una instancia de base de datos de RDS para PostgreSQL. El tutorial muestra cómo acceder a la instancia de base de datos desde la instancia de EC2 mediante un cliente PostgreSQL estándar. Como práctica recomendada, este tutorial crea una instancia de base de datos privada en una nube privada virtual (VPC). En la mayoría de los casos, otros recursos de la misma VPC, como las instancias de EC2, pueden acceder a la instancia de base de datos, pero los recursos ajenos a la VPC no pueden acceder a ella.

Tras completar el tutorial, habrá una subred pública y una privada en cada zona de disponibilidad de la VPC. En una zona de disponibilidad, la instancia de EC2 está en la subred pública y la instancia de base de datos está en la subred privada.

importante

La creación de una cuenta de AWS no supone ningún costo. No obstante, al completar este tutorial, puede incurrir en costos por los recursos de AWS que utilice. Puede eliminar estos recursos después de completar el tutorial si ya no son necesarios.

El siguiente diagrama muestra la configuración cuando el tutorial se completa.

Instancia de EC2 e instancia de base de datos de PostgreSQL.

Este tutorial le permite crear sus recursos mediante uno de los métodos siguientes:

El primer método usa Creación sencilla para crear una instancia de base de datos PostgreSQL privada con la AWS Management Console. Con Creación sencilla, únicamente debe especificar el tipo de motor de base de datos, el tamaño de la instancia de base de datos y el identificador de instancias de base de datos. Easy create (Creación sencilla) utiliza los ajustes predeterminados para otras opciones de configuración.

Cuando usa Creación estándar, se especifican más opciones de configuración al crear una instancia de base de datos. Estas opciones incluyen la configuración de la disponibilidad, la seguridad, las copias de seguridad y el mantenimiento. Para crear una instancia de base de datos pública, debe utilizar Creación estándar. Para obtener más información, consulte Creación de una instancia de base de datos de Amazon RDS.

Requisitos previos

Antes de empezar, complete los pasos de las siguientes secciones:

Paso 1: crear una instancia de EC2

Cree una instancia de Amazon EC2 que utilicará para conectarse a la base de datos.

Para crear una instancia EC2;
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En la esquina superior derecha de la AWS Management Console, elija la Región de AWS en la que desea crear la instancia de EC2.

  3. Elija Panel de EC2 y, a continuación, Lanzar instancia, como se muestra en la siguiente imagen.

    Panel de EC2.

    Se abre la página Lanzar una instancia.

  4. Elija los siguientes ajustes en la página Lanzar una instancia.

    1. En Name and tags (Nombre y etiquetas), en Name (Nombre), introduzca ec2-database-connect.

    2. En Imágenes de aplicaciones y sistema operativo (Imagen de máquina de Amazon), elija Amazon Linux y, a continuación, AMI de Amazon Linux 2023. Mantenga los valores predeterminados para las demás opciones.

      Elija una Amazon Machine Image.
    3. En Instance type (Tipo de instancia), elija t2.micro.

    4. En Key pair (login) [Par de claves (inicio)], elija Key pair name (Nombre de par de claves) para utilizar un par de claves existente. Para crear un nuevo par de claves para la instancia de Amazon EC2, que se muestra a continuación, elija Create new key pair (Crear nuevo par de claves) y, a continuación, utilice la ventana Create key pair (Crear un par de claves).

      Para obtener más información sobre la creación de un nuevo par de claves, consulte Crear un par de claves en la Guía del usuario de Amazon EC2.

    5. En Permitir tráfico de SSH en Configuraciones de red, elija el origen de las conexiones SSH a la instancia de EC2.

      Puede elegir My IP (Mi IP) si la dirección IP que se muestra es correcta para las conexiones SSH. De lo contrario, puede determinar la dirección IP que usará para conectarse a las instancias de EC2 en su VPC mediante Secure Shell (SSH). Para determinar su dirección IP pública, en una ventana o pestaña distinta del navegador, puede utilizar el servicio en https://checkip.amazonaws.com. Un ejemplo de dirección IP es 192.0.2.1/32.

      En muchos casos, puede conectarse a través de un proveedor de servicios de internet (ISP) o protegido por un firewall sin una dirección IP estática. Si es así, asegúrese de identificar el rango de direcciones IP que utilizan los equipos cliente.

      aviso

      Si utiliza 0.0.0.0/0 para el acceso SSH, permita que todas las direcciones IP accedan a sus instancias de EC2 públicas mediante SSH. Este método es aceptable para un periodo de tiempo corto en un entorno de prueba, pero no es seguro en entornos de producción. En entornos de producción, solo debe autorizar una dirección IP específica o un intervalo de direcciones para acceder a sus instancias de EC2 mediante SSH.

      La siguiente imagen muestra un ejemplo de la sección Configuraciones de red.

      Configuraciones de red para una instancia de EC2.
    6. No cambie los valores predeterminados del resto de las secciones.

    7. Revise un resumen de la configuración de su instancia de EC2 en el panel Resumen; cuando haya terminado, elija Lanzar instancia.

  5. En la página Launch Status, que se muestra a continuación, anote el identificador de la nueva instancia de EC2, por ejemplo, i-1234567890abcdef0.

    Identificador de instancia de EC2 en la página Estado de lanzamiento.
  6. Elija el identificador de instancia de EC2 para abrir la lista de instancias de EC2 y, a continuación, seleccione su instancia de EC2.

  7. En la pestaña Detalles, anote los siguientes valores, ya que los necesitará cuando se conecte mediante SSH:

    1. En Resumen de la instancia, anote el valor del DNS IPv4 público.

      Nombre de DNS público de EC2 en la pestaña Detalles de la página Instancias.
    2. En Detalles de la instancia, anote el valor de Nombre del par de claves.

      Nombre de par de claves de EC2 en la pestaña Detalles de la página Instancias.
  8. Espere hasta que el Estado de la instancia de su instancia de EC2 tenga el estado En ejecución antes de continuar.

Paso 2: crear una instancia de base de datos de PostgreSQL

El componente básico de Amazon RDS es la instancia de base de datos. Este es el entorno en el que ejecuta las bases de datos PostgreSQL.

En este ejemplo, utilice la opción Creación sencilla para crear una instancia de base de datos que ejecuta el motor de la base de datos de PostgreSQL con una clase de instancia de base de datos db.t3.micro.

Para crear una instancia de base de datos de PostgreSQL con la opción Easy Create (Creación sencilla)
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En la esquina superior derecha de la consola de Amazon RDS, elija la región de AWS en la que desea crear la instancia de base de datos.

  3. En el panel de navegación, seleccione Databases (Bases de datos).

  4. Seleccione Create database (Crear base de datos) y asegúrese de que la opción Easy Create (Creación sencilla) esté seleccionada.

    Opción Creación sencilla.
  5. En Configuration (Configuración), seleccione PostgreSQL.

  6. En DB instance size (Tamaño de la instancia de base de datos), seleccione Free tier (Capa gratuita).

  7. En DB instance identifier (Identificador de instancia de base de datos), ingrese database-test1.

  8. En Nombre de usuario maestro, introduzca un nombre para el usuario maestro o deje el nombre predeterminado (postgres).

    La página Create database (Crear base de datos) debe ser similar a la siguiente imagen.

    Página Crear base de datos.
  9. Para utilizar una contraseña maestra generada automáticamente para la instancia de base de datos, seleccione Generación automática de contraseña.

    Para introducir la contraseña maestra, asegúrese de desactivar la casilla Generación automática de contraseña y luego introduzca la misma contraseña en Contraseña maestra y Confirmar contraseña.

  10. Para configurar una conexión con la instancia de EC2 que creó anteriormente, abra Configurar conexión a EC2 - (opcional).

    Seleccione Conectarse a un recurso informático de EC2. Elija la instancia de EC2 que ha creado anteriormente.

    Configure la opción de conexión a EC2.
  11. Abra la opción Ver la configuración predeterminada de la creación sencilla.

    Configuración predeterminada de Creación sencilla para RDS para PostgreSQL.

    Puede examinar la configuración predeterminada utilizada con Easy create (Creación sencilla). La columna Editable después de crear la base de datos muestra las opciones que puede cambiar después de crear la base de datos.

    • Si una configuración tiene No en esa columna y desea una configuración diferente, puede usar Creación estándar para crear la instancia de base de datos.

    • Si una configuración tiene en esa columna y desea una configuración diferente, puede utilizar Creación estándar para crear la instancia de base de datos o modificar la instancia de base de datos después de crearla para cambiar la configuración.

  12. Elija Crear base de datos.

    Para consultar la contraseña y el nombre de usuario maestros de la instancia de base de datos, seleccione View credential details (Ver detalles de credenciales).

    Puede utilizar la contraseña y el nombre de usuario que aparecen para conectarse a la instancia de base de datos como el usuario maestro.

    importante

    No puede ver la contraseña de usuario maestro de nuevo. Si no la registra, es posible que tenga que cambiarla.

    Si tiene que cambiar la contraseña de usuario maestro después de que la instancia de base de datos esté disponible, puede modificar la instancia de base de datos para ello. Para obtener más información acerca de la modificación de una instancia de base de datos, consulte Modificación de una instancia de base de datos de Amazon RDS.

  13. En la lista Bases de datos, elija el nombre de la nueva instancia de base de datos de PostgreSQL para ver sus detalles.

    La instancia de base de datos tiene el estado Creando hasta que está lista para usarse.

    Detalles de la instancia de base de datos.

    Cuando el estado cambie a Available (Disponible), podrá conectarse a la instancia de la base de datos. Dependiendo de la clase de instancia de la base de datos y de la cantidad de almacenamiento, es posible que la nueva instancia tarde hasta 20 minutos en estar disponible.

(Opcional) Crear una VPC, una instancia EC2 y una instancia PostgreSQL mediante AWS CloudFormation

En lugar de utilizar la consola para crear la VPC, la instancia de EC2 y la instancia de PostgreSQL, puede utilizar AWS CloudFormation para aprovisionar recursos de AWS tratando la infraestructura como código. Para ayudarle a organizar sus recursos de AWS en unidades más pequeñas y fáciles de administrar, puede utilizar la funcionalidad de pila anidada de AWS CloudFormation. Para obtener más información, consulte Creación de una pila en la consola AWS CloudFormation y Uso de pilas anidadas.

importante

AWS CloudFormation es gratuito, pero los recursos que CloudFormation crea están activos. Se le facturan las tarifas de uso estándar por estos recursos hasta que los finalice. Los cargos totales serán mínimos. Para obtener información sobre cómo puede minimizar los cargos, consulte Nivel gratuito de AWS.

Para crear sus recursos con la consola AWS CloudFormation, siga estos pasos:

  • Paso 1: Descargar la plantilla de CloudFormation

  • Paso 2: Configurar los recursos mediante CloudFormation

Descargar la plantilla de CloudFormation

Una plantilla de CloudFormation es un archivo de texto con formato JSON o YAML que contiene la información de configuración de los recursos que desea crear en la pila. Esta plantilla también crea una VPC y un host bastión para usted junto con la instancia de RDS.

Para descargar el archivo de plantilla, abra el enlace PostgreSQL CloudFormation template.

En la página de Github, haga clic en el botón Descargar archivo sin procesar para guardar el archivo YAML de la plantilla.

Configurar los recursos mediante CloudFormation

nota

Antes de iniciar este proceso, asegúrese de tener un par de claves para una instancia EC2 en su Cuenta de AWS. Para obtener más información, consulte Pares de claves de Amazon EC2 e instancias Linux.

Al utilizar la plantilla de AWS CloudFormation, debe seleccionar los parámetros correctos para asegurarse de que los recursos se crean correctamente. Siga los pasos que se indican a continuación:

  1. Inicie sesión en la AWS Management Console y abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. Elija Crear pila.

  3. En la sección Especificar la plantilla, seleccione Cargar un archivo de plantilla desde el ordenador y Siguiente.

  4. En la página Especificar detalles de la pila, introduzca los siguientes parámetros:

    1. Ponga el nombre de pila en PostgreSQLTestStack.

    2. En Parámetros, defina las zonas de disponibilidad seleccionando tres zonas de disponibilidad.

    3. En Configuración de host bastión de Linux, en Nombre de la clave, seleccione un par de claves para iniciar sesión en su instancia de EC2.

    4. En los ajustes de Configuración de host bastión de Linux, ponga el rango de IP permitido en su dirección IP. Para conectarse a las instancias de EC2 de su VPC mediante Secure Shell (SSH), determine su dirección IP pública mediante el servicio en https://checkip.amazonaws.com. Un ejemplo de dirección IP es 192.0.2.1/32.

      aviso

      Si utiliza 0.0.0.0/0 para el acceso SSH, permita que todas las direcciones IP accedan a sus instancias de EC2 públicas mediante SSH. Este método es aceptable para un periodo de tiempo corto en un entorno de prueba, pero no es seguro en entornos de producción. En entornos de producción, solo debe autorizar una dirección IP específica o un intervalo de direcciones para acceder a sus instancias de EC2 mediante SSH.

    5. En Configuración general de la base de datos, ponga la Clase de instancia de base de datos en db.t3.micro.

    6. Ponga el Nombre de la base de datos en database-test1.

    7. En Nombre de usuario maestro, introduzca un nombre para el usuario maestro.

    8. Ponga Administrar contraseña de usuario maestro de base de datos con Secrets Manager en false para este tutorial.

    9. En Contraseña de base de datos, ponga la contraseña que desee. Recuerde esta contraseña para poder ver los pasos adicionales del tutorial.

    10. En Configuración de almacenamiento de base de datos, ponga el Tipo de almacenamiento de base de datos en gp2.

    11. En la Configuración de supervisión de base de datos, ponga Habilitar RDS Performance Insights en falso.

    12. Deje el resto de la configuración con los valores predeterminados. Haga clic en Siguiente para continuar.

  5. En la página Configurar opciones de pila, deje todas las opciones predeterminadas. Haga clic en Siguiente para continuar.

  6. En la página Revisar la pila, seleccione Enviar después de comprobar las opciones de base de datos y de host bastión de Linux.

Una vez finalizado el proceso de creación de la pila, visualice las pilas con los nombres BastionStack y RDSNS para anotar la información que necesita para conectarse a la base de datos. Para obtener más información, consulte Viewing AWS CloudFormation stack data and resources on the AWS Management Console.

Paso 3: conectarse a la instancia de base de datos de PostgreSQL

Puede conectarse a la instancia de base de datos mediante pgadmin o psql. En este ejemplo, se explica cómo conectarse a una instancia de base de datos de PostgreSQL mediante el cliente de línea de comandos psql.

Para conectarse a una instancia de base de datos de PostgreSQL mediante psql
  1. Busque el punto de enlace (nombre de DNS) y el número de puerto de la instancia de base de datos.

    1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

    2. En la esquina superior derecha de la consola de Amazon RDS, elija la Región de AWS de la instancia de base de datos.

    3. En el panel de navegación, seleccione Databases (Bases de datos).

    4. Seleccione el nombre de la instancia de base de datos de PostgreSQL para mostrar sus detalles.

    5. En la pestaña Connectivity & security (Conectividad y seguridad), copie el punto de enlace. También anote el número de puerto. Necesita el punto de enlace y el número de puerto para conectarse a la instancia de base de datos.

      Conéctese a una instancia de base de datos de PostgreSQL.
  2. Conéctese a la instancia de EC2 que ha creado anteriormente siguiendo los pasos que se indican en Conexión con la instancia de Linux en la Guía del usuario de Amazon EC2.

    Le recomendamos que se conecte a la instancia de EC2 mediante SSH. Si la utilidad de cliente SSH está instalada en Windows, Linux o Mac, puede conectarse a la instancia con el siguiente formato de comando:

    ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name

    Por ejemplo, suponga que ec2-database-connect-key-pair.pem está almacenado en /dir1 en Linux y que el DNS IPv4 público de su instancia de EC2 es ec2-12-345-678-90.compute-1.amazonaws.com. Su comando SSH tendría el siguiente aspecto:

    ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
  3. Obtenga las correcciones de errores y las actualizaciones de seguridad más recientes actualizando el software en su instancia de EC2. Para ello, utilice el siguiente comando.

    nota

    La opción -y instala las actualizaciones sin necesidad de confirmación. Para examinar las actualizaciones antes de la instalación, omita esta opción.

    sudo dnf update -y
  4. Para instalar el cliente de línea de comandos psql desde PostgreSQL en Amazon Linux 2023, ejecute el siguiente comando:

    sudo dnf install postgresql15
  5. Conéctese a la instancia de base de datos de PostgreSQL. Por ejemplo, escriba el siguiente comando en el símbolo del sistema de un equipo cliente. Esta acción le permite conectarse a la instancia de base de datos de PostgreSQL mediante el cliente psql.

    Sustituya el punto de conexión de la instancia de base de datos (nombre DNS) por endpoint, sustituya el nombre de la base de datos --dbname a la que quiera conectarse por postgres y sustituya el nombre de usuario maestro que utilizó por postgres. Proporcione la contraseña maestra que utilizó cuando se le solicite una contraseña.

    psql --host=endpoint --port=5432 --dbname=postgres --username=postgres

    Una vez especificada la contraseña del usuario, debería ver un resultado similar al siguiente:

    psql (14.3, server 14.6) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. postgres=>

    Para obtener más información acerca de cómo conectarse a la instancia de base de datos de PostgreSQL, consulte Conexión a una instancia de base de datos que ejecuta el motor de base de datos de PostgreSQL. Si no puede conectarse a la instancia de base de datos, consulte Solución de problemas de conexiones a la instancia de RDS for PostgreSQL.

    Por motivos de seguridad, se recomienda utilizar conexiones cifradas. Utilice solo una conexión PostgreSQL sin cifrar cuando el cliente y el servidor están en la misma VPC y la red es de confianza. Para obtener información sobre el uso de de conexiones cifradas, consulte Conectar con una instancia de base de datos PostgreSQL a través de SSL.

  6. Ejecutar comandos SQL.

    Por ejemplo, el siguiente comando de SQL muestra la fecha y la hora actuales:

    SELECT CURRENT_TIMESTAMP;

Paso 4: eliminar la instancia de EC2 y la instancia de base de datos

Después de conectarse y explorar la instancia de EC2 de muestra y la instancia de base de datos que creó, elimínelas para que no le sigan cobrando por ellas.

Si ha utilizado AWS CloudFormation para crear recursos, omita este paso y vaya al siguiente.

Para eliminar la instancia de EC2
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, seleccione Instances (Instancia[s]).

  3. Seleccione la instancia de EC2 y elija Estado de la instancia y Terminar instancia.

  4. Cuando se le indique que confirme, elija Terminar.

Para obtener más información sobre la eliminación de una instancia de EC2, consulte Terminar la instancia en la Guía del usuario de Amazon EC2.

Para eliminar una instancia de base de datos sin instantánea de base de datos final
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación, seleccione Databases (Bases de datos).

  3. Elija la instancia de base de datos que desea eliminar.

  4. En Actions (Acciones), elija Delete (Eliminar).

  5. Desactive Crear la instantánea final y Conservar copias de seguridad automatizadas.

  6. Complete la confirmación y seleccione Eliminar.

(Opcional) Eliminar la instancia de EC2 y la instancia de base de datos creadas con CloudFormation

Si ha utilizado AWS CloudFormation para crear recursos, elimine la pila de CloudFormation después de conectarse a la instancia de EC2 y a la instancia de base de datos de muestra y de explorarlas; de este modo, ya no se le cobrará por ellas.

Para eliminar los recursos de CloudFormation
  1. Abra la consola de AWS CloudFormation.

  2. En la página Pilas de la consola de CloudFormation, seleccione la pila raíz (la pila sin el nombre VPCStack, BastionStack o RDSNS).

  3. Elija Eliminar.

  4. Cuando se le pida confirmación, seleccione Eliminar pila.

Para obtener información sobre cómo eliminar una pila en CloudFormation, consulte Eliminación de una pila en la consola de AWS CloudFormation, en la Guía del usuario de AWS CloudFormation.

(Opcional) Conecte la instancia de base de datos a una función de Lambda

También puede conectar la instancia de base de datos de RDS para PostgreSQL a un recurso de computación sin servidor de Lambda. Las funciones de Lambda permiten ejecutar código sin aprovisionar ni administrar la infraestructura. Una función de Lambda también permite responder automáticamente a las solicitudes de ejecución de código a cualquier escala, desde una docena de eventos al día hasta cientos de eventos por segundo. Para obtener más información, consulte Conexión automática de una función de Lambda y una instancia de base de datos.