首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS CDK vs AWS Amplify

AWS CDK vs AWS Amplify
EN

Stack Overflow用户
提问于 2020-02-06 10:56:41
回答 3查看 2K关注 0票数 2

我对AWS Amplify和CDK心存疑虑。在Amplify中,我们是否可以创建新环境并将其发布到各自的存储桶中?为什么我们需要CDK?有没有能让CDK更合适的用例?

EN

回答 3

Stack Overflow用户

发布于 2020-02-07 17:04:04

CDK允许您部署(相当于)使用cloudformation手动完成的任何类型的Stack。使用cdk,您将以更快速、更安全的方式创建CloudFormation堆栈。

以JAVA为例,为了创建一个新的Table,您可以使用以下代码来代替处理YAML配置:

代码语言:javascript
复制
 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();
}

为了创建一个新的Lambda (提供了一个已经存在的JAR),您可以使用以下代码来代替处理YAML配置:

代码语言:javascript
复制
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();
}

然后,为了创建让lambda从表中读取的策略:

代码语言:javascript
复制
final Table masterDataTable = CreateMasterDataTable(API_NAME);
final Function siteAggregationNow = CreateSiteAggregationNowFunction();

masterDataTable .grantReadData(siteAggregationNow);

通过这几行代码,您已经创建了一个包含一个DynamoDB表(使用流)和一个从该表读取的Lambda的CloudFormation堆栈。

票数 1
EN

Stack Overflow用户

发布于 2020-03-29 15:49:00

Amplify适用于部署静态站点,具有简单的数据库和Cognito集成,但不适合管理大量环境或更复杂的堆栈。CDK在管理复杂的基础设施部署方面要好得多。这是一个使用CDK部署静态站点的示例。https://github.com/davidsteed/awscdkstaticsite。它通过处理安全头部和证书生成改进了Amplify所能做的事情。

票数 0
EN

Stack Overflow用户

发布于 2021-07-31 00:28:43

你会发现你需要为一个生产应用编写和编辑大量的CloudFormation模板。很快就会变得非常痛苦。

Amplify应该发出CDK代码,这将使我们两全其美。

我最初经常使用Amplify,因为它可以快速引导您,但自从发现CDK以来,CDK是我使用最多的工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60087064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档