es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasar valores dinámicamente en archivos Python.

Tengo dos archivos de Python. Un archivo está trabajando con AWS CDK y crea un recurso de tabla DynamoDB. El segundo archivo ejecuta una función donde se agregan elementos a la tabla y está fuera del paquete CDK. Actualmente tengo el nombre de la tabla codificado en el método de agregar elementos. Me gustaría llegar a un estado en el que el nombre de la tabla se lea desde el CDK. Soy nuevo en Python, por lo que se agradecerá cualquier consejo. A continuación se muestra el código que he preparado hasta ahora:

Primer archivo de Python

from aws_cdk import (
core as cdk,
aws_dynamodb as dynamodb
)
from aws_cdk import core

class CdkStack(cdk.Stack):

def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:
    super().__init__(scope, construct_id, **kwargs)

    currentDate= date.today()
    table_name= 'DynamoTableToPassInOtherFile'
    dynamodbTable= dynamodb.Table(self,id='dynamodbTable',table_name=table_name,partition_key=dynamodb.Attribute(name='id',type=dynamodb.AttributeType.STRING))

Segundo archivo de Python

def write_to_dynamo_db(self, json):
dynamodb_response = dynamodb_client.put_item(
TableName= “DynamoTableToReadFromOtherFile”,
Item={
‘id’:{‘S’: self.id},
‘formatted_date’: {‘S’: json},
},
ReturnValues=’ALL_OLD’,
ReturnConsumedCapacity=’INDEXES’,
)
return dynamodb_response

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el estado deseado, puede utilizar el método cdk.Fn.importValue para importar el nombre de la tabla desde el primer archivo. En el primer archivo, puede agregar una salida a la pila que exportará el nombre de la tabla. Luego, en el segundo archivo, puede utilizar el método cdk.Fn.importValue para importar el nombre de la tabla desde el primer archivo.

    Primer archivo de Python

    from aws_cdk import (
    core as cdk,
    aws_dynamodb as dynamodb
    )
    from aws_cdk import core
    
    
    class CdkStack(cdk.Stack):
    
        def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:
            super().__init__(scope, construct_id, **kwargs)
    
            fecha_actual= date.today()
            nombre_tabla= 'TablaDynamoParaPasarenOtroArchivo'
            tabla_dynamodb= dynamodb.Table(self,id='tabla_dynamodb',table_name=nombre_tabla,partition_key=dynamodb.Attribute(name='id',type=dynamodb.AttributeType.STRING))
            cdk.CfnOutput(self, "NombreTabla", value=nombre_tabla)
    

    Segundo archivo de Python

    def escribir_en_dynamodb(self, json):
        nombre_tabla = cdk.Fn.importValue("NombreTabla")
        respuesta_dynamodb = dynamodb_client.put_item(
                    TableName= nombre_tabla,
                    Item={
                        'id':{'S': self.id},
                        'fecha_formateada': {'S': json},
                        },
                    ReturnValues='ALL_OLD',
                    ReturnConsumedCapacity='INDEXES',
                )
        return respuesta_dynamodb
    

Comments are closed.