CDK позволяет вам развернуть (вполне) любой тип стека, который вы должны делать вручную с облачной информацией. Используя cdk
, вы создадите стек CloudFormation более быстро и более безопасно.
Пример в JAVA, чтобы создать новую таблицу, вы можете использовать вместо этого следующий код сделки с конфигурацией YAML:
private Table CreateMasterDataTable(String TABLE_NAME) {
return Table.Builder.create(this, TABLE_NAME + "_MasterDataTable")
.tableName(TABLE_NAME.concat("_gvr-bic-masterdata"))
.partitionKey(Attribute.builder().type(AttributeType.STRING).name("siteId").build())
.removalPolicy(RemovalPolicy.RETAIN)
.stream(StreamViewType.NEW_AND_OLD_IMAGES)
.readCapacity(5)
.writeCapacity(5)
.build();
}
Чтобы создать новую лямбду (при условии наличия уже существующего JAR), вы можете использовать следующий код вместо сделки с конфигурацией YAML:
private Function CreateSiteAggregationNowFunction() {
Map<String, String> env = new HashMap<>();
env.put(Constants.LAMBDA_KEY_ENV, API_NAME);
return Function.Builder.create(this, API_NAME + "_SiteAggregationNow")
.code(Code.fromAsset(Constants.LAMBDA_PATH_SITE_NOW))
.handler("it.fabricalab.gvr.bic.DeviceLoader::handleRequest")
.timeout(Duration.seconds(30))
.environment(env)
.functionName(API_NAME.concat("_SiteAggregationNow"))
.runtime(Runtime.JAVA_8)
.retryAttempts(Constants.LAMBDA_RETRY_FALLBACK)
.memorySize(512)
.build();
}
Затем, чтобы создать политику, позволяющую лямбде читать из таблицы:
final Table masterDataTable = CreateMasterDataTable(API_NAME);
final Function siteAggregationNow = CreateSiteAggregationNowFunction();
masterDataTable .grantReadData(siteAggregationNow);
С этими несколькими строками вы создали стек CloudFormation с таблицей DynamoDB (которая использует поток) и Лямбда, которая читается из этой таблицы.