gpt4 book ai didi

aws-cdk - AWS CDK 高级构造与低级构造之间的区别

转载 作者:行者123 更新时间:2023-12-05 01:36:34 26 4
gpt4 key购买 nike

我是 CDK 的新手,需要了解高级构造与低级构造之间的区别。谁能用简单的话解释一下:)

热烈的问候。

最佳答案

CDK 旨在让任何人都能轻松创建具有预配置默认值的组件。这意味着您可以(使用更高级别的构造)使用默认值创建资源,并获得 AWS(以及整个社区)的批准。

例如,使用 CDK,如果您要使用 Lower Level Constructs 创建 S3 存储桶,则必须完全按照定义 CloudFormation 模板的方式来定义资源,这意味着您选择选项并为这些选项设置值选项。

如果您要使用低级资源 (L1),这就是 CloudFormation 模板的样子:

CDK Python(L1 构造):

s3.CfnBucket(self, 's3_bucket_l1')

CloudFormation 模板:

s3bucketl1:
Type: AWS::S3::Bucket

如果您要使用高级构造 (L2) 创建相同的资源,CDK 会向它创建的资源添加一些默认值,下面是使用 L2 资源的相同示例:

CDK Python(L2 构造):

s3.Bucket(self, 's3_bucket_l2')

CloudFormation 模板:

s3bucketl249651147:
Type: AWS::S3::Bucket
UpdateReplacePolicy: Retain
DeletionPolicy: Retain

同样的扩展,如果我要将 PublicAccessBlockConfiguration 添加到这些 S3 存储桶,L2 构造将以更少的代码行执行相同的操作:

CDK Python(L1 构造):

s3.CfnBucket(
self,
's3_bucket_l1',
public_access_block_configuration=s3.CfnBucket.PublicAccessBlockConfigurationProperty(
block_public_acls=True,
block_public_policy=True,
ignore_public_acls=True,
restrict_public_buckets=True
)
)

CloudFormation 模板:

s3bucketl1:
Type: AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true

CDK Python(L2 构造):

s3.Bucket(
self,
's3_bucket_l2',
block_public_access=s3.BlockPublicAccess.BLOCK_ALL
)

CloudFormation 模板:

  s3bucketl249651147:
Type: AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
UpdateReplacePolicy: Retain
DeletionPolicy: Retain

这只是使用 S3 作为资源的一个示例。对于 Lambda 函数,事情变得非常有趣。使用 L2 构造,只需几行代码,您就可以创建一个 Lambda 函数,CDK 还会生成一个具有默认权限的 IAM 角色。如果您要对 L1 构造执行相同的操作,则必须同时定义 Lambda 构造和 IAM 角色构造以生成 CloudFormation 模板。

本质上,这两种构造都创建了 CloudFormation 模板,但更高级别的构造为用户提供了强大的方法,可以使用更少的代码使用预配置的默认值创建 AWS 资源。

关于aws-cdk - AWS CDK 高级构造与低级构造之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61884631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com