Я занимаюсь разработкой веб-приложения с использованием java и Spring-boot на AWS Lambda Service. Я проектирую это, чтобы иметь один сервис базы данных. Это будут коллекции классов Entity (таблица) и JPARepositories. Поэтому, если мне нужно внести какие-либо изменения в схему базы данных, мне просто нужно внести изменения только в эту службу.
Другие службы, которые будут доступны через API-шлюз, будут использовать эту службу базы данных в качестве лямбды Уровень.
parent-project
|
|---database-service
|
|---API-service1
|
|---API-service2
...
Проблема в том, что мне нужно создать таблицы до того, как будет развернута любая служба Lambda. Чтобы эти API-сервисы могли их использовать. Один из способов решения этой проблемы - развернуть службу базы данных как функцию Lambda и вызвать функцию, которая вызовет метод, подобный приведенному ниже, для создания всех таблиц.
@SpringBootApplication
public class DatabaseServiceApplication implements CommandLineRunner {
private DynamoDBMapper dynamoDBMapper;
private final AmazonDynamoDB amazonDynamoDB;
public DatabaseServiceApplication(AmazonDynamoDB amazonDynamoDB) {
this.amazonDynamoDB = amazonDynamoDB;
}
public static void main(String[] args) {
SpringApplication.run(DatabaseServiceApplication.class, args);
}
@Override
public void run(String... strings) {
dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB);
CreateTableRequest tableRequest = dynamoDBMapper
.generateCreateTableRequest(Association.class);
tableRequest.setProvisionedThroughput(
new ProvisionedThroughput(1L, 1L));
TableUtils.createTableIfNotExists(amazonDynamoDB, tableRequest);
}
}
Или используйте сценарий для создания таблиц , Я не уверен, что лучше или есть лучший вариант.
Может кто-нибудь подсказать мне, сталкивался ли кто-нибудь с этой проблемой ранее и исправил ли она?