AWS CDK против AWS Усиление - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть сомнения относительно AWS Усиления и CDK. В Amplify, если мы можем создать новые среды и опубликовать sh их в соответствующие корзины? Зачем нам нужен CDK? Любой вариант использования, который сделал бы CDK более подходящим?

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Amplify подходит для развертывания статических c сайтов с простой базой данных и интеграцией с Cognito, но не подходит для управления большим количеством сред или более сложными стеками. CDK намного лучше для управления развертыванием сложной инфраструктуры. Это пример того, как вы можете развернуть сайты c с помощью CDK. https://github.com/davidsteed/awscdkstaticsite. Он улучшает то, что можно сделать с помощью Amplify, занимаясь заголовками безопасности и генерацией сертификатов.

0 голосов
/ 07 февраля 2020

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 (которая использует поток) и Лямбда, которая читается из этой таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...