Cómo añadir la fecha y hora en boto3
Estoy tratando de agregar la fecha y la hora al nombre de la instantánea de AWS RDS, pero no puedo hacer que funcione. Así es como intenté especificarlo:
import json
import boto3
import botocore
import logging
import os
from datetime import datetime
from operator import itemgetter
rds = boto3.client('rds', region_name='eu-west-2')
# Establecer variables iniciales
source_db_instance = "source-database"
target_db_instance = "target-db"
location = "eu-west-2"
logger = logging.getLogger(name=name)
env_level = os.environ.get("LOG_LEVEL")
log_level = logging.INFO if not env_level else env_level
logger.setLevel(log_level)
waiter = rds.get_waiter('db_snapshot_available')
rds = boto3.client('rds', region_name='eu-west-2')
def lambda_handler(event, context):
# Obtener la fecha y hora actual
now = datetime.now()
# Crear variables de fecha/hora reformateadas
current_date = now.strftime("%d%m%y")
# Crear un nombre de instantánea combinando la fecha, la hora y el nombre de la base de datos
from_snapshot_name = ("my-" + source_db_instance + "-" + "refresh" + "-" + current_date)
try:
print("Tratando de eliminar la instantánea de origen si existe")
del_response = rds.delete_db_snapshot(
DBSnapshotIdentifier=(from_snapshot_name)
)
except:
print("")
try:
print("Tomando una instantánea")
response = rds.create_db_snapshot(
DBSnapshotIdentifier=(from_snapshot_name),
DBInstanceIdentifier=(source_db_instance)
)
except:
print("")
Después de ejecutar lo anterior en la función lambda, la instantánea se crea pero no incluye la fecha y la hora al final.
davy.ai
Parece haber algunos problemas al agregar la fecha y la hora en el nombre del punto de restauración de la RDS. El código actual utiliza la variable
current_date
, que ha sido reformateada utilizando la funciónstrftime()
. Esta fecha/hora reformateada se utiliza luego para crear el nombre del punto de restauración combinándolo con otras variables.Sin embargo, parece que este nombre de punto de restauración no se está utilizando en las llamadas a la API para crear o eliminar el punto de restauración. En su lugar, se está utilizando la variable
from_snapshot_name
, que se crea utilizando algunos valores codificados y el nombre desource_db_instance
.Para solucionar este problema, puedes reemplazar la variable
from_snapshot_name
con la variablesnapshot_name
que utiliza la fecha/hora reformateada. Puedes modificar las llamadas a la APIcreate_db_snapshot()
ydelete_db_snapshot()
para utilizar la variablesnapshot_name
en lugar defrom_snapshot_name
.Aquí está el código modificado:
Con estas modificaciones, el nombre del punto de restauración ahora debería incluir la fecha y la hora al final.