【每周快报】0507-0513 AWS 服务更新
前言
AWS 這周為容器用户推出了 CDK for Kubernetes (cdk8s)!以往 Kubernetes 需要通过大量的 YAML 来制定应用程序所使用的资源,现在用户可以通过 cdk8s,以程序语言等来定义 Kubernetes 应用程序,进而跳脱出 YAML 的框架。另外 AWS 还推出了 Amazon Kendra,这是专为企业所推出的搜索服务,可以帮助用户快速找到匹配的索引文件,AWS 预计在年底会支持更多的第三方服务!上述服务外,AWS 也对其他领域的服务做了些更新。包含了AWS Trusted Advisor 现在增加 5 项成本优化检查、EC2 Image Builder 现在支持 AWS CloudFormation、AmazonCodeGuru、AmazonDMS… 等各种领域都有了些改善。
一、焦点新聞
AWS 现在推出 CDK for Kubernetes (cdk8s)
在 CNCF Webinar 对 CNCF community 分享之后,AWS 也宣布 CDK for Kubernetes 正式进入 Alpha 阶段!
Kubernetes 需要通过大量的 YAML 来制定应用程序所使用的资源,例如:如何启用应用程序? 使用多少的 IT 资源?或是 Container 部署的方式、应用程序中 config file 的参数… 等设定。随着应用程序功能的扩大以及开发人员的变换,用户需花费大量的时间来修改 / 复制 / 维护 YAML 文件。
现在用户可以通过 cdk8s 以程序语言如 Python、Typescript… 等来定义 Kubernetes 应用程序,进而跳脱出 YAML 的框架。
CDK for Kubernetes (cdk8s) 具有以下特性:
- 适用于任何 Kubernetes platform:不论用户是使用哪一种 cloud 或是 on-premise 的环境来开发 Kubernetes,都可以使用 cdk8s。
- 以简洁宣告的方式定义应用程序:用户利用 imperative languages 来定义 cdk8s,并由 cdk8s 生成 YAML,进而简化用户需要自行撰写 YAML 的过程。
- 支持通用的语言语言:cdk8s 目前支持 TypeScript、JavaScript 和 Python 来定义应用程序,未来将会加入 Golang、.NET。
- 开源:cdk8s 是开源项目,当你有发现 issues 或是有想要投入功能开发,都欢迎提出 PR!
- 支持任何版本的 Kubernetes APIs 或自定义的资源:用户可引入任何版本的 Kubernetes APIs,也可随时更新或自定义需要的 APIs。
以下为以 L1 方式宣告 SPEC
label = {"app": "hello-k8s-podinfo"}
k8s.Service(self, 'service',
spec=k8s.ServiceSpec(
type='LoadBalancer',
ports=[k8s.ServicePort(port=80, target_port=k8s.IntOrString.from_number(9898))],
selector=label
)
)
k8s.Deployment(self, 'deployment',
spec=k8s.DeploymentSpec(
replicas=2,
selector=k8s.LabelSelector(match_labels=label),
template=k8s.PodTemplateSpec(
metadata=k8s.ObjectMeta(labels=label),
spec=k8s.PodSpec(containers=[
k8s.Container(
name='podinfo',
image='stefanprodan/podinfo',
ports=[k8s.ContainerPort(container_port=9898)]
)
])
)
)
)
以下为以 L2/3 方式宣告 SPEC,以 Construct 的方式一个包一个去实现
DeboredApp(self, 'podinfo',
image='stefanprodan/podinfo',
container_port=9898,
default_replicas=2,
ingress=IngressType.SERVICE_LOADBALANCER
)
编写后可以执行 cdk8s synth
会输出 YAML 文件至当前目录:
$ cdk8s synth
dist/sample.k8s.yaml
apiVersion: v1
kind: Service
metadata:
name: sample-service-6e53cfe1
spec:
ports:
- port: 80
targetPort: 9898
selector:
app: hello-k8s-podinfo
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-deployment-a16265f2
spec:
replicas: 2
selector:
matchLabels:
app: hello-k8s-podinfo
template:
metadata:
labels:
app: hello-k8s-podinfo
spec:
containers:
- image: stefanprodan/podinfo
name: podinfo
ports:
- containerPort: 9898
大幅地减轻编写 YAML 的 workload,以 cdk8s 可以用语言的方式去管理、去宣告要部署什么应用到 K8S Cluster 当中!cdk8s roadmap 也有相关未来开发走向,大家可以持续关注!
Amazon Kendra 正式 GA
Kendra 是 AWS 所推出的企业搜索服务,相信大家一定都曾经发生过明明想找某个档案,也知道那个档案就放在这个储存空间的某处,却始终找不到或是花太多的时间,Kendra 就是用来解决此问题的服务。
Kendra 通过建立索引(index)的方式并搭配机器学习,迅速帮助用户找到匹配的索引文件,先前在 preview 的时候只与 S3、RDS 和 Sharepoint 整合,现在则新增了 Salesforce、Servicenow 和 OneDrive 以满足更多企业客户的需求,而 AWS 也预计在年底支持更多的第三方服务!
除了服务功能面的更新外,还推出了开发者版本(Developer Edition),限制为 4,000 个查询,并只能在 5 个 data source 中最多搜索 1 万个档案,少了企业版(Enterprise Edition)中可扩展 index 查询用量的选项,而且只部署在单个可用区(AZ)上,所以不建议作为生产环境使用。 虽然功能上有些差异,但与企业版的使用费价差近三倍,大幅降低用户在开发、测试的成本!
当前 Amazon Kendra 可在 US East(N. Virginia)、US West(Oregon)以及 Europe(Ireland)等区域中使用。
AWS EC2 提供新的 Instance Type
EC2 提供许多的 Instance Type,如果想加强运算能力、内存强化、储存优化或一般用途等,可以从中选择适合的 Instance Type。
此次更新后,新增采用 Arm 型 AWS Graviton 2 处理器的 Amazon EC2 M6g InstanceType,在价格、性能上优于新 x86 型的 AmazonEC2 M5 InstanceType,适合用在应用程序服务器、微服务、游戏服务器、中小型数据库及快取服务。
以下整理 M6g Instance Type 特点:
- 采用 AWS Graviton 2 处理器-采用 64 位 Arm Neoverse 核心,效能和容量都大幅超越第一代 AWS Graviton 处理器,提供 7 倍的处理效能、4 4 倍的运算核心数、2 2 倍的快取空间,以及5倍处理速度的内存。相较于第一代 AWS Graviton 处理器,AWS Graviton 2 处理器具备常态性 256 位 DRAM 加密和快 50% 的核心加解密效能。
- Amazon EC2 M6g Instance 建立在 AWS Nitro System上-提供高效率、弹性及安全的云端服务,具备独立的租用模式、私有网络,以及快速地本机储存。这些执行个体最高支持 19 Gbps Elastic Block Store (EBS) 带宽及最高 25 Gbps 网络带宽。
更多详细消息,可参照 AWS Instance Types。
參考來源至:Amazon EC2 M6g instances powered by AWS Graviton2 processors are now generally available
二、其他服务更新
AWS Single Sign On (SSO) 支持零停机时间更新 x.509 证书
为了要确认 IdP(身份提供商)及服务提供商之间共享信息的真实性及完整性,会使用 x.509 证书作为确认的媒介,但证书可能因为过期、意外遭到盗用等原因,必须要定期更新 x.509 证书,确保用户可以利用 SAML 的 SSO 登入应用程序。
以往 IdP 更新证书时,可能会出现停机时间,中断身份验证服务,此次更新后,可以直接更新证书,且不会出现服务停机时间!让管理人员更加容易、顺畅执行,亦不影响用户体验。
参考来源至:AWS Single Sign-On supports zero-downtime external IdP certificate rotation
AWS Trusted Advisor 添加 5 项成本优化检查
AWS Trusted Advisor 是针对成本优化、性能、安全性、容错能力及服务限制等面向,提供实时最佳实践的建议,此次更新新增以下 5 个成本优化的检查项目:
- Saving Plan: 检查用户对 EC2、Fargate 及 Lambda 等使用状况,提供 Saving Plan 的购买建议,让用户可以选择更多划算的购买选项。
- Amazon ElastiCache Reserved Node: 根据 ElastiCache 的使用情况,提供 Reserved Node 建议。
- Amazon RedShift Reserved Node: 根据RedShift 的使用情况,提供 Reserved Node 建议。
- Amazon Elasticsearch 預買 Instance: 根据 Elasticsearch 的使用情况,提供 RI Instance 的建议。
- Amazon Relational Database Service(RDS) 根据 RDS 的使用情况,提供 RI DB Instance 的建议。
Saving Plan、Reserved Insatnce (RI) 和 Reserved Node 皆为透过一年或三年期的约定折扣方式,向 AWS 担保预留资源,有需要时一定取用得到预留资源启用相关服务,如 EC2、RDS、Fatgate、Lambda、ElastiCache、ElasticSearch… 等,根据选定服务、资源用量及约定时长会有不同的折扣,比起 On-Demand 随需价格,提供约 50% ~ 75% 折扣的优惠。
AWS Trusted Advisor 会依据 AWS Support Plan 级别不同而提供广度不同的项目改善建议,本次更新需要 Business 或是 Enterprise 级别。
EC2 Image Builder 现在支持 AWS CloudFormation
此次更新后,用户可以利用 CloudFormation Template 部署 EC2 Image Builder。 当需要更新 EC2 Image Builder 时,不在需要手动使用 EC2 Image Builder console、CLI,、CLI 或 APIs 来操作,而是可以通过 CloudFormation 自动化修正即部署。
参考来源至:EC2 Image Builder now includes support for AWS CloudFormation
AWS Direct Connect 现在支持监控 virtual interfaces (VIFs) 的 CloudWatch Metrics
以往使用 Direct Connect 的用户只能看到 Direct Connect Dedicated connections 的连接状态、流量吞吐量。此次更新后,用户现在可通过 CloudWatch Metrics 来检视每个 VIFs 的流量状态。例如:可以监控进出此 VIF 的 bitrate,或是封包进出的速率等等,帮助用户得到更多信息。
参考来源至:Enhanced monitoring capabilities for AWS Direct Connect
Amazon EC2 推出两项更新
Amazon EC2 High Memory Instance 支持更高用于 EBS 存储的网络带宽
此次更新后,具有 6 TB 以上内存的 Amazon EC2 High Memory Instance 将提供 38 Gbps 的专用储存带宽及额外的 100 Gbps 网络频宽,相当于提升高达 2 倍的储存频宽。而6TB、9TB、9 TB 及 12TB Instance 更是提升高达 4 倍的网络带宽。 用户可借此提升 Insatnce 运行的效率,同时加快应用程序的备份和还原流程。
Amazon EC2 High Memory Instance 现在可购买 1 年期的 Reserved Instances
原先 EC2EC2 High Memory Instance 仅提供的3年保留购买选项,此次更新后,用户也可以购买 1 年期保留购买选项,让用户在 EC2 Instance 使用和采购方面将有更大的弹性。
Amazon CodeGuru 推出两项更新
Amazon CodeGuru 是 AWS 推出自动执行代码审查并提供应用程序效能建议的服务。藉由找到耗费资源的代码,改善应用程序效能。CodeGuru 用Amazon 库中的数十万个项目训练机器学习模型,而程式库包含成千上万 Amazon 开发人员在数十年间对程序码进行审查与应用程序分析的应用程序分析的经验。
CodeGuru 是 Reviewer 和 Profiler 组成,Reviewer 主要是在审查代码阶段给予建议,标记可能有问题的法代码。 而 Profiler 则会通过代理程序在程序的运行,寻找会耗费大量资源的程序法并给予建议
Amazon CodeGuru Profiler 支持 -javaagent
执行 Profiler
以往,Amazon CodeGuru Profiler 的设定需要在应用程序添加依赖套件或添加代码。在这次更新之后,用户仅需通过指令即可启动代理程序在应用程序的运行。而不需要再对应用重新编译或修改代码,也不需将代理程序加入应用程序所编译成的 jar 中,因此不用担心与 Amazon SDK 所提供的版本有兼容性的问题。
在使用前须配置应用程序权限,然后下载 .jar 文件并通过以下 -javaagent
的命令执行代理。
-javaagent:AmazonCodeGuruJavaProfiler-1.0.jar=groupName=profiling-group-name
例如:
java -javaagent:AmazonCodeGuruJavaProfiler-1.0.jar = groupName = profiling-group-name -jar MyApplication.jar
参考来源至:Amazon CodeGuru announces -javaagent switch to start Profiler
Amazon CodeGuru Reviewer 支持对 Bitbucket 提供代码建议
在这次更新后,Amazon CodeGuru Reviewer 可以通过用户对 Bitbucket的pull/push 请求,对 Bitbucket 中的程式码进行分析并提供建议。而用户只需要在使用 CodeGuru Reviewer 时选则 Bitbucket 作为储存库,并利用 Bitbucket 的凭证与 AWS CodeStar 连接,即可取得 CodeGuru Reviewer 对 Bitbucket 的建议。
参考来源至:Amazon CodeGuru Reviewer announces support for Bitbucket repositories and enhancements
Amazon DMS 现在支持在数据转换的过程中以表达式制定额外的转换方式
此次更新后,在 Amazon DMS 转换及复写数据时,用户可建立 SQLite 为基础的表达式,制定复写过程中需执行的动作,例如:在目标数据表新增一栏用以汇总来自两个以上来源栏位的资料;或在目标数据表新增一栏来记录各个字段更新/删除的状态或是更动的时间戳记。
- 范例:以下的 rule 将两个现有字段内的值合并,分别为
FIRST_NAME
和LAST_NAME
,合并至名为ITEM
表中的FULL_NAME
字段。而FULL_NAME
字段的数据类型为 string,并限制最长 50 个字符。
{
"rules": [
{
"rule-type": "selection",can
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "Test",
"table-name": "%"
},
"rule-action": "include"
},
{
"rule-type": "transformation",
"rule-id": "2",
"rule-name": "2",
"rule-action": "add-column",
"rule-target": "column",
"object-locator": {
"schema-name": "Test",
"table-name": "ITEM"
},
"value": "FULL_NAME",
"expression": "$FIRST_NAME||'_'||$LAST_NAME”,
"data-type": {
"type": "string",
"length": 50
}
}
]
}
更多范例可参考 Amazon DMS Documentation – Replicating Source Table Headers Using Expressions。
参考来源至:AWS Database Migration Service Now Supports Expression-Based Data Transformations
Tag:Amazon CodeGuru, Amazon CodeGuru Profiler, Amazon CodeGuru Reviewer, Amazon DMS, Amazon EC2, Amazon EC2 High Memory Instance, Amazon Kendra, AWS, AWS CloudFormation, AWS Direct Connect, AWS EC2, AWS Single Sign-On, AWS Trusted Advisor, Bitbucket, CDK for Kubernetes, cdk8s, CloudWatch Metrics, EBS, EC2 Image Builder, GA, Instance Type, Profiler, Reserved Instances, SSO, VIFs, virtual interfaces, x.509