【每周快报】0416-0422 AWS 服务更新
前言
AWS 于周三宣布「非洲 – 开普敦区域正式启动」,目前支持了大部分的服务,未来也计画在亚洲及欧洲建构更多区域,希望能带给用户更好的体验!
为了帮助用户在做搬迁数据及边缘计算工作能更便利,AWS 这周更新了许多 AWS Snowball 性能,包含改善权限管理、新增支持 AWS System Manager 做自动化处理以及新增了 AWS OpsHub 用于管理 Snowball 的图形界面服务。除此之外,AWS 也对数据库服务做了些服务更新,像是 Amazon Redshift 除了推出 Federated Querying with PostgreSQL Engine,现在也支持 multi-factor authentication(MFA)。另外,Amazon RDS for SQL Server 也新增支持 Multifile Native Backups!本篇文章还会提及许多不同领域的服务改善,包含了AWS Config、AmazonPolly、AWS IoT Event… 等诸多服务。
焦点新闻
添加区域 – Region Africa (Cape Town)
各位是否还记得 2018 年时,Jeff 曾说过要在非洲建立基础设施,从 2015 年 AWS 便开始在非洲建立办事处,2017 将 AWS 骨干网络牵到了非洲成立 Edge Location 边缘节点。
现在非洲 – 开普敦区域正式启动!正式名称为 Africa (Cape Town),缩写为 af-south-1
,为 AWS 第 23 个区域,由三个 AZ 所组成,AZ 可用区的全球数量也来到 73 个!
目前非洲 – 开普敦区域支持大部分的服务,详细请见 Region Table – Africa。
AWS 也承诺构建未来两个亚太区 AWS 区域:印尼和日本;以及两个欧洲区的区域:意大利和西班牙。
更多的区域支持也将带给终端用户更好的使用体验!
AWS Cost Explorer 添加整合 Compute Optimizer
Cost Explorer 是 Billing and Cost Management 服务当中的其中一项功能,需要用户手动启用。启用后,AWS 会提供当月及前三个月的花费分布与服务使用量,接着利用过往信息来预测未来三个月的花费。而 Compute Optimizer 则是透过机器学习分析用户现有架构中的 EC2 资源是不是有充分运用,并提供意见。
Cost Explorer 之前只能根据过去 14 天的最大 CPU 和 Memory 使用率等历史记录,建议用户更好的执行个体类型(Instance Type)选择,例如从 t3.medium 改为 t3.large 以提供更好的体验。
此次更新后,这些建议推荐会从 Compute Optimizer 产生,还会提供不同系列、大小的选择。
参考来源至:AWS Cost Explorer Rightsizing Recommendations Integrates with AWS Compute Optimizer
AWS Snowball 功能和性能更新
随着业务日渐扩大,现有地端的资源及空间可能面临枯竭,许多公司看准云端容易扩展的特性,纷纷投向云端的怀抱,将原本在本地端的工作负载移到云端,但这是一项非常复杂及耗时的大工程,因为目前网络线路的瓶颈,让许多想做数据搬迁的用户打退堂鼓,AWS 提供 Snowball 系列服务帮助用户在做数据搬迁及边缘计算的工作,让你在搬迁过程中更加快速、方便,也能避免信息传输中断的风险。
AWS Snowball 支持 IAM 访问权限管理
AWS Snowball 进行验证时,只会向用户要求密码或是其他凭证,只要能握有相关凭证的人都有权限做存取,这是潜在风险相当高的安全性问题。
为了解决这个问题,现在可以藉由 IAM 来控管用户对 AWS Snowball 存取权限,也就是可以定义谁才能进到 AWS Snowball服务,允许或禁止用户做哪些动作。
AWS OpsHub 用于管理 Snowball 的图形界面服务
用户都要通过 CLI 或 REST API 来操作 Snowball Edge 设备。此次更新后,可以直接通过 AWS OpsHub 在没有网络连接的情况下,部署和管理大量的 Snowball Edge 装置。
在 Windows 或 Mac 上下载安装 AWS OpsHub Application 后,即使没有网络连线,也可以使用。非常适合某些移动和断网连接模式下使用。
参考来源至:Introducing AWS OpsHub for Snow Family, a graphical user interface to manage AWS Snowball devices
图片来源至:AWS Snowball Edge Update – Faster Hardware, OpsHub GUI, IAM, and AWS Systems Manager
AWS Snowball 支持 AWS Systems Manager 做自动化处理
先前 AWS Snowball 需要做日常维护或部署动作时,都必须手动去执行。
此次更新后,使用者可以通过 AWS OpsHub 的 Task Automation 做自动化处理,省下时间及人力成本,假设需要把意外停止运作的 EC2 自动重启,你可以透过 AWS OpsHub 透过 Systems Manager 来实现此功能,如下范例:
首先,需要到 ASW OpsHub Console 中,你会在 Dashboard 中看到 Task (Systems Manager) 选项,点击后选择 Create Task,输入详细讯息后,编辑做自动化脚本配置,json 与 yaml语法都有支持。
{
"description" : "Restart EC2 instance",
"schemaVersion" : "0.3",
"parameters" : {
"Endpoint" : {
"type" : "String",
"description" : "(Required) EC2 Service Endpoint URL"
},
"Id" : {
"type" : "String",
"description" : "(Required) Instance Id"
}
},
"mainSteps" : [ {
"name" : "restartInstance",
"action" : "aws:executeScript",
"description" : "Restart EC2 instance step",
"inputs" : {
"Runtime" : "python3.7",
"Handler" : "restart_instance",
"InputPayload" : {
"Endpoint" : "{{ Endpoint }}",
"Id" : "{{ Id }}"
},
"TimeoutSeconds" : 30,
"Script" : "import boto3\nimport time\ndef restart_instance(payload, context):\n
ec2_endpoint = payload['Endpoint']\n instance_id = payload['Id']\n
ec2 = boto3.resource('ec2', endpoint_url=ec2_endpoint)\n
instance = ec2.Instance(instance_id)\n
if instance.state['Name'] != 'stopped':\n
instance.stop()\n
instance.wait_until_stopped()\n
instance.start()\n
instance.wait_until_running()\n
return {'InstanceState': instance.state}"
}
} ]
}
完成后,按下 Start Task 变成透过 Systems Manager 执行该脚本。
参考来源至:AWS Snowball adds task automation with AWS Systems Manager
Amazon Redshift 推出新功能
Amazon Redshift 正式推出 Federated Querying with PostgreSQL Engine
此次更新之后,用户可以通过 Redshift 同时对 Amazon RDS for PostgreSQL 及 Amazon Aurora PostgreSQL 数据库下 Query 指令来搜索需要的数据,并可以与 BI 工具连接,例如:Tableau 或 Amazon Quicksight,生成分析性表格。
此外,用户可以将原本存放在 RDS 或 Aurora 的数据输入 Redshift,也可以将 S3 里的 PostgreSQL 资料与 Redshift 整合,而不需要复杂的 ETL 转换流程。
如下为 AWS Blog – Build a Simplified ETL and Live Data Query Solution using Redshift Federated Query 使用范例:
- Simplified ETL (集成 S3 里的 PostgreSQL 数据):
透过 federated querying 读取 S3 里的数据后,直接运用 query 指令筛选必要的数据,并与 Redshift table 原本的资料整合。
BEGIN;
CREATE TEMP TABLE staging (LIKE ods.store_sales);
-- replace the following COPY from S3
COPY staging FROM 's3://yourETLbucket/daily_store_sales/'
IAM_ROLE 'arn:aws:iam::<account_id>:role/<s3_reader_role>' DELIMITER '|' COMPUPDATE OFF;
-- with this federated query to load staging data from PostgreSQL source
INSERT INTO staging SELECT * FROM pg.store_sales p
WHERE p.last_updated_date > (SELECT MAX(last_updated_date) FROM ods.store_sales)
DELETE FROM ods.store_sales USING staging s WHERE ods.store_sales.id = s.id;
INSERT INTO ods.store_sales SELECT * FROM staging;
DROP TABLE staging;
COMMIT;
- Querying live operational data (同时访问多个数据库中的数据):
先分别建立多个外部 schema 来读取不同来源的数据库资料。
CREATE EXTERNAL SCHEMA IF NOT EXISTS useast
FROM POSTGRES
DATABASE 'dev'
URI 'us-east-1-aurora-pg-serverless.cluster-samplecluster.us-east-1.rds.amazonaws.com'
PORT 5432
IAM_ROLE 'arn:aws:iam::555566667777:role/MyCombinedRDSFederatedQuery'
SECRET_ARN 'arn:aws:secretsmanager:us-east-1:555566667777:secret:MyEastUSAuroraServerlessCredentials-dXOlEq'
;
CREATE EXTERNAL SCHEMA IF NOT EXISTS uswest
FROM POSTGRES
DATABASE 'dev'
URI 'global-aurora-pg-west-coast-stores-instance-1.samplecluster.us-east-1.rds.amazonaws.com'
PORT 5432
IAM_ROLE 'arn:aws:iam::555566667777:role/MyCombinedRDSFederatedQuery'
SECRET_ARN 'arn:aws:secretsmanager:us-west-1:555566667777:secret:MyWestUSAuroraGlobalDBCredentials-p3sV9m'
;
CREATE EXTERNAL SCHEMA IF NOT EXISTS europe
FROM POSTGRES
DATABASE 'dev'
URI 'eu-west-1-postgres-read-replica.samplecluster.us-east-1.rds.amazonaws.com'
PORT 5432
IAM_ROLE 'arn:aws:iam::555566667777:role/MyCombinedRDSFederatedQuery'
SECRET_ARN 'arn:aws:secretsmanager:eu-west-1:555566667777:secret:MyEuropeRDSPostgresCredentials-mz2u9L'
;
透过建立 View 来统整资料,以方便往后查询可以直接从 View 里面寻找。
CREATE VIEW global_lineitem AS
SELECT 'useast' AS region, * from useast.lineitem
UNION ALL
SELECT 'uswest', * from uswest.lineitem
UNION ALL
SELECT 'europe', * from europe.lineitem
WITH NO SCHEMA BINDING
;
最后找寻符合条件的资料。
dev=# SELECT region, extract(month from l_shipdate) as month,
sum(l_extendedprice * l_quantity) - sum(l_discount) as sales
FROM global_lineitem
WHERE l_shipdate >= '1997-01-01'
AND l_shipdate < '1998-01-01'
AND month < 4
GROUP BY 1, 2
ORDER BY 1, 2
;
region | month | sales
--------+-------+------------------
europe | 1 | 16036160823.3700
europe | 2 | 15089300790.7200
europe | 3 | 16579123912.6700
useast | 1 | 16176034865.7100
useast | 2 | 14624520114.6700
useast | 3 | 16645469098.8600
uswest | 1 | 16800599170.4600
uswest | 2 | 14547930407.7000
uswest | 3 | 16595334825.9200
(9 rows)
参考来源至:Amazon Redshift announces general availability for federated querying
Amazon Redshift 支持 multi-factor authentication (MFA)
如果用户目前已具有 AWS 以外的身份验证机制,例如:公司内部的身份验证系统,可使用 Amazon IAM identity providers and Federation 的方式来登录 AWS Account。不需要另外建立 IAM Users,而是允许用户在登录外部的身份认证机制之后,能够直接使用 AWS account 中的资源。
用户利用 Facebook 或是 Google 账户注册其他网站的会员。此方法就是一种 Identity Providers and Federation 的机制。将用户身份验证的工作交由第三方组织来执行,一旦用户通过验证,视同通过目标网站的身份验证,便可取用该网站的资源。
Redshift Cluster 管理者可以利用第三方验证来登入,并存取 Cluster 里的资源。
此次更新后,当 Redshift 的管理者允许用户利用 Identity provider and federation 的方式来访问 Redshift 中的数据时,同时可以启用 multi-factor authentication (MFA) 功能,要求用户在登入时,需额外提供一组 authentication code,以确认该次存取行为确实为该用户身份。
例如:用户可指定 Virtual MFA device 作为生成认证码的来源,每当用户要登录时,需具有当初绑定设备的认证码,才可以成功登入。此种做法让认证的过程多了一层防护机制,即使用户的密码被窃取,对方也无法轻易取得授权。
参考来源至:Amazon Redshift introduces support for multi-factor authentication
AWS CloudWatch Synthetics 添加支持监控 VPC endpoint
CloudWatch Synthetics 为去年底新出的功能,可以针对用户的 API 或者 Endpoint 进行类似心跳检查的监控,用户可以自定义测试脚本和检查的频率,来确保 API 或 Endpoint 有正常运作。上述功能都仅限于公共端点(Public endpoint),主要目的都是为了确保前端网页的正常运作,但会遇到一个问题,现在许多应用程序虽然看似都是单一画面呈现,背后却可能是由好几个微服务堆起来的,这些功能并不是能够对外公开的,所以从外侧进行单一检查其实并不能够准确知道问题点。
再加上从内部进行监控才能完全解决此问题,因此此次更新后,提供用户监控内部 VPC endpoint 以解决上述问题。
参考来源至:Amazon CloudWatch Synthetics now supports monitoring private endpoints in a VPC
AWS GuardDuty 支持统一管理 AWS Organizations 帐户
当企业在 AWS上增长和扩展工作负载时,同时有可能使用 AWS 的员工会日渐增多,衍生出许多管理层面的问题,例如:管控权限、帐单汇总⋯⋯等,这时候就非常推荐使用 AWS Organizations,但是 这项服务以往无法有效地去防范异常或未经授权的动作,例如:在从未使用过的区域中开了一大堆不必要的服务,而组织内不只一个人拥有这样的权限,那么后续的损失会非常严重,所以必须要自己想办法预防此事发生,此次更新后,AWS GuardDuty 支持 AWS Organizations 解决这个问题,现在你可以通过 Console 或是 API 去操作,指派 AWS Organizations 内的成员为 GuardDuty 管理员,在指定区域中启用GuardDuty,制定在这个区域中组织里所有帐户启用和管理 GuardDuty 的权限,但会分以下两种情形:
- GuardDuty 管理员邀请 同一组织的成员 启用或管理 GuardDuty:
- 通过
Organizations
邀请
- 通过
- GuardDuty 管理员邀请 不属于同一组织的成员 启用或管理 GuardDuty:
- 通过
Invite
邀请
- 通过
注意:每个 GuardDuty 管理帐户最多只能有 5000 个会员帐户。如果会员帐户超过 5000个,将会收到 CloudWatch,,Personal Health Dashboard 的通知,并通过电子邮件发送给主帐户。
参考来源至:Amazon GuardDuty simplifies multi-account threat detection with support for AWS Organizations
Managing GuardDuty Accounts with AWS Organizations
其他服务更新
AWS IoT Event 添加定制信息信息
AWS IoT Events 可以侦测和响应来自 IoT 传感器和应用的事件,例如当皮带卡住时设备的变化,或是动作侦测器利用动作信号来启动灯光和安全摄录影机等应用,在 IoT Events 推出之前,要侦测事件必须建置昂贵 的自定义应用程序来收集数据、套用决策逻辑,然后触发另一个应用程序来针对事件做出反应,此次更新后,可以使用新的表达式来定制化传进来的 Event 的消息,你可以在信息中新增东西或是删除多余的信息,再传给后面的应用程序。
参考来源至:AWS IoT Events adds support for custom actions payloads and custom timers
Amazon EKS 现在支持 Service-Linked Roles
以往用户在创建 EKS Cluster 时,需要一并给予适当的 IAM 权限以支持 EKS 可以与其他 AWS Service 互动。为此,用户需要先手动建立 IAM Role,并将 Trust-relationship 改为 Amazon EKS 服务,再把 Role attach 给 EKS,才能够完成授予权限的动作。
此次更新之后,AWS 为用户省去了自行创建 Role 的流程。当用户第一次使用 EKS Cluster 时,会自动生成能够支持 EKS 运行的 Role。其中包含建立 EC2 Instance 作为运算单位,或是更新 Cluster 所需要的权限等等。
此外,当 AWSServiceRoleForAmazonEKS Role (EKS 的 Service-Linked Roles) 仍处于使用中的状态,用户便不能自行删除这个 Role,以避免意外的操作导致现有的 Cluster 无法运作。
Amazon RDS for SQL Server 现在支持 Multifile Native Backups
Amazon RDS for SQL Server 支持 Native Backup,用户可以将数据库的原始资料导出,生成 .bak
文件,并存放至Amazon S3,作为搬迁、备份、复制测试数据库副本的方法之一。Native Backup 不仅快速,.bak
文件内还包含了 database schemas、stored procedures、triggers,以及其他 database code 在内,也可以一并备份。此外,用户也可以针对单一数据库备份,而非整个 DB instance。
此次更新之后,当用户在做 Native Backup 时,可选择将备份文件切割为多个文件,备份完成后再利用平行上传的方式,传至 S3 储存,加快备份的流程。
- 范例:将备份档案分成 4 个部分。备份完成后,用户会得到 「
backup1-of-4.bak, backup2-of-4.bak, backup3-of-4.bak, and backup4-of-4.bak.
」四个文件,并平行上传至aws_example_bucket
储存桶之中。
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::aws_example_bucket/backup*.bak',
@number_of_files=4;
参考来源至:Amazon RDS for SQL Server now supports Multifile Native Backups
AWS Config 可检测 Secrets Manager 不合规动作
AWS Config 是一款持续监视和记录您的 AWS 资源配置的服务,用户可以利用它侦测不合规的事件发生,这次更新将 Config 可侦测范围再扩大,加入 AWS Secrets Manager,现在你可以利用 Config rule 去建立合规事件的规则,现在 Config Console 中可以看到关于 Secrets Manager 的 AWS 内建 rules:
也可以客制化 rule,完成之后可以选择当异常状况发生时,可以透过 Amazon Simple Notification Service(SNS)(SNS 或 Amazon CloudWatch Events 传送通知,在发生异常状况当下马上进行处理。
参考来源:Track changes to secrets stored in AWS Secrets Manager using AWS Config and AWS Config Rules
Amazon Route 53 添加支持跨局转移域名
Amazon Route 53 为 DNS 服务,用户可以在此服务中注册域名,然而域名是 Region-based 的,倘若想要将域名转移到另一个区域时,需要发 Support 请专员帮忙,也许是因为实在有太多用户有此需求,于是便新增了跨区域移转域名的功能,让用户可以自己处理这个问题,而且此功能是免费的。
参考来源至:Amazon Route 53 supports Domain Name Transfer between AWS accounts
Amazon Polly 推出西班牙播报员的语音风格
Amazon Polly 是一个能够将文字转成语音输出的一项服务,用户可以选择不同的语言或声线作为语音输出的选项,去年七月推出了美国英文(EN-US)的新闻播报员语音风格获得广大的回响,此次更新后,推出了西班牙语的新闻播报员语音风格供用户选择。
Tag:Amazon EKS, Amazon Polly, Amazon RDS for SQL Server, Amazon Redshift, Amazon Route 53, AWS CloudWatch Synthetics, AWS Config, AWS Cost Explorer, AWS GuardDuty, AWS IoT Event, AWS OpsHub, AWS Organizations, AWS Snowball, AWS Systems Manager, AZ, Billing, Cape Town, Compute Optimizer, Dashboard, Federated Querying with PostgreSQL Engine, IAM, Mfa, Multi Factor Authentication, Multifile Native Backups, public endpoint, Redshift Cluster, Region Africa, Secrets Manager, Service-Linked Roles, Simplified ETL, Task Automation, VPC endpoint