Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

396
Views
Transacciones de DynamoDB: escribir en diferentes tablas con nombres dinámicos

Estoy tratando de usar escrituras transaccionales para DynamoDB en Kotlin.

Caso de uso: quiero escribir dos objetos diferentes en dos tablas diferentes en la misma transacción. Por ejemplo: escriba AClass en la Tabla 1 y escriba BClass en la Tabla 2.

Esto hubiera sido sencillo si los nombres de Table1 y Table2 fueran los mismos para cada escenario.

Sin embargo, estoy usando un marco sin servidor y, según la etapa que se haya especificado,

Table1 puede ser: local-Table1 / dev-Table1 / production-Table1 .

Lo mismo para Table2

Sin embargo, en mi declaración de clase de AClass , si trato de anotar AClass mediante @DynamoDBTable(tableName = "$stage-Table1") , aparece el error Un argumento de anotación debe ser una constante de tiempo de compilación .

Esto significa que el nombre de la tabla debe proporcionarse por separado en el flujo. Para superar esto en los escenarios habituales de escritura/obtención, estaba usando la siguiente configuración:

 private val dynamoDBMapperConfig = DynamoDBMapperConfig.Builder() .withTableNameOverride(DynamoDBMapperConfig.TableNameOverride.withTableNameReplacement(tableName)) .build() mapper.save(t, dynamoDBMapperConfig)

Según la documentación, tendré que hacer lo siguiente:

 TransactionWriteRequest transactionWriteRequest = new TransactionWriteRequest() transactionWriteRequest.addPut(aClassObject) transactionWriteRequest.addPut(bClassObject) mapper.transactionWrite(transactionWriteRequest)

Si los objetos de AClass y BClass se escribieran en la misma tabla, podría haber usado de nuevo un DynamoDBMapperConfig personalizado. Sin embargo, ambos objetos deben escribirse en dos tablas diferentes y, dado que los nombres de las tablas deben resolverse durante el tiempo de ejecución, no puedo proporcionarlos como parte de las anotaciones de clase.

¿Cómo resuelvo esto? (Quiero usar el mapeador de objetos)

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Estoy usando un asignador de DynamoDB personalizado para cambiar el nombre de la tabla en tiempo de ejecución, ya que el nombre de la tabla es diferente en cada entorno.

Mesa:

 @DynamoDBTable(tableName="dummy-table-Name") public class DynamoTable

Asignador personalizado para el nombre de la tabla dinámica :

 DynamoDBMapperConfig.TableNameOverride tableNameOverriderride = new DynamoDBMapperConfig.TableNameOverride("DYNAMIC_TABLE_NAME"); DynamoDBMapperConfig config =new DynamoDBMapperConfig(tableNameOverriderride); DynamoDBMapper mapper =new DynamoDBMapper(client, config);

Realice la operación CRUD utilizando el mapeador anterior:

 DynamoTable dynamoTable = mapper.load(DynamoTable.class, id); mapper.save(dynamoTable);
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!