CDK介绍
1.什么是CDK?
CDK,与使用 YAML(或 JSON)的声明式方法相比,CDK 允许您命令式声明基础设施。主要语言为 TypeScript,同时也支持另外几种语言。
2.为什么要使用 CDK?
增强基础设施,为了操作awk的接口,对awk的实例等进行操作
3.route53是干啥的? Route 53 是一种具有很高可用性和可扩展性的域名系统 (DNS) Web 服务。您可以使用 Route 53 以任意组合执行三个主要功能:域注册、DNS 路由和运行状况检查。如果选择使用 Route 53 来执行所有这三种功能:
- 1)域名注册
- 2)将 Internet 流量路由到您的域的资源
- 3)检查资源的运行状况
如何使用route53
1.安装route53
代码语言:javascript复制## 方法一:python官方源安装
pip3 install aws-cdk.aws-route53
## 方法二:阿里云镜像源安装
pip3 install aws-cdk.aws-route53 -i https://mirrors.aliyun.com/pypi/simple/
## 方法三:使用pycharm直接安装
2.添加托管区域
- 添加公共托管区域
## 导入aws_route53别名为route53
import aws_cdk.aws_route53 as route53
## 使用route53的PublicHostedZone方法来添加公共托管区域
route53.PublicHostedZone(self, "HostedZone",
## zone_name制定区域名
zone_name="fully.qualified.domain.com"
)
- 添加私有托管区域
使用PrivateHostedZone
添加私有托管区域
enableDnsHostnames
和enableDnsSupport
必须已为正在为专用托管区域配置的专有网络。
## 导入ec2实例方法
import aws_cdk.aws_ec2 as ec2
## 导入route53方法
import aws_cdk.aws_route53 as route53
## 实例化vpc
vpc = ec2.Vpc(self, "VPC")
## 实例化私有区域
zone = route53.PrivateHostedZone(self, "HostedZone",
zone_name="fully.qualified.domain.com",
vpc=vpc
)
注意:可以使用zone.addVpc()
添加额外的VPC。
3.添加记录
- 为区域添加TXT记录
## 导入route53
import aws_cdk.aws_route53 as route53
## 使用TxtRecord方法
route53.TxtRecord(self, "TXTRecord",
zone=my_zone,
record_name="_foo",
# 如果名称以“.”结尾,则按原样使用;
# 如果它以“.”结尾,后跟区域名称,则会自动添加一个结尾“.”;
# 否则,将自动添加“.”、区域名称和尾随的“.”。
# 如果未指定,则默认为区域根目录。
## 值
values=["Bar!", "Baz?"],
## ttl刷新时间
ttl=Duration.minutes(90)
)
- 为区域添加一个A记录
## 导入route53
import aws_cdk.aws_route53 as route53
## 使用ARecord方法,添加A记录
route53.ARecord(self, "ARecord",
## 指定zone名
zone=my_zone,
## 指定目标主机
target=route53.RecordTarget.from_ip_addresses("1.2.3.4", "5.6.7.8")
)
- 添加指向cloudfront分布的aaaa记录
## 导入route53
import aws_cdk.aws_route53 as route53
## 导入target
import aws_cdk.aws_route53_targets as targets
## 使用AaaaRecord方法添加aaaa记录
route53.AaaaRecord(self, "Alias",
zone=my_zone,
## 指定目标
target=route53.RecordTarget.from_alias(targets.CloudFrontTarget(distribution))
)
结构可用于A、AAAA、CAA、CNAME、MX、NS、SRV和TXT记录。
使用CaaAmazonRecord
构造轻松限制证书颁发机构,只允许向Amazon颁发域证书。
4.将记录添加到现有托管区域
- 如果知道托管区域的ID和名称,可以直接导入
zone = HostedZone.from_hosted_zone_attributes(self, "MyZone",
zone_name="example.com",
hosted_zone_id="ZOJJZC49E0EPZ"
)
- 如果不知道托管区域的ID和名称,则需要使用
HostedZone.fromLookup
发现并导入
HostedZone.from_lookup(self, "MyZone",
domain_name="example.com"
)