备考AWS-Certified-DevloperAssociate笔记

AWS Certified Developer Associate 考试学习笔记

aws考试认证攻略

AWS中国

白皮书

AWS CodeDeploy

CDA英文题库 ( update by 2018年07月17日14:12:58)

官方考试指南 ( update by 2018年07月17日14:15:57)

AWSCDA考试

AWS 各个产品的白皮书!

aws client 安装失败后的修复方法

EBS加密

很专业的博客,必看

AWS的考题 很牛逼 必刷

cloud guru的题

​ AWS Certified Develop - Associate 这门考试着重面向AWS的开发者。考察应试人员对于AWS服务的基础理解,相应的SDK,如何在程序员(代码部署)的角度来利用AWS的各种服务。

​ 首先需要了解AWS基本组件,还需要特别学习非关键型数据库DynamoDBAPI的内容。这门考试着重考察Amazon DynamoDBAmazone Simple Storage Service(S3),Amazon Simple Queue Service (SQS), Amazon Simple Notification Service(SNS)等知识。

AWS考试的费用和时间

具体费用如下:

考试名称 时长 题目数 费用(美金)
AWS Certified Cloud Practitioner 110分钟 70 50
AWS Certified Solutions Architect – Associate 80分钟 55 150
AWS Certified Solutions Architect – Associate (Released February 2018) 130分钟 65 150
AWS Certified Developer – Associate 80分钟 55 150
AWS Certified SysOps Administrator – Associate 80分钟 55 150
AWS Certified Solutions Architect – Professional 170分钟 77 300
AWS Certified DevOps Engineer – Professional 170分钟 77 300
AWS Certified Big Data – Specialty 180分钟 65 300
AWS Certified Advanced Networking – Specialty 180分钟 65 300
AWS Certified Security – Specialty 180分钟 65 300

AWS的主要服务:

  • 计算
    • EC2(Elastic Compute Cloud) — 虚拟云主机服务
    • Lambda—无服务服务
    • Amazon LightSail—VPS服务
  • 存储
    • Amazon S3 — 文件存储服务
  • 数据库
    • Amazon RDS — 关系型数据库
    • Amazon DynamoDB — 非关系型数据库
    • Amazon RedShift — 数据仓库服务
  • 迁移
  • 网络和内容分发
    • VPC — DHCP和基本网络服务
    • AWS Route 53 — DNS服务
    • AWS DirectConnect & VPN — 网络专线和VPN服务
    • AWS CloudFront — CDN服务
  • 管理工具
  • 安全和身份认证
    • Amazon IAM — 认证和身份管理服务
  • 消息管理
    • Amazon SQS — 消息队列服务
    • Amazon SNS — 消息服务(邮箱通知,短息通知)
  • Amazon CloudWatch — 监控服务

以上都是一些比较常见的服务,目前AWS平台林林总总一共有100多个服务。这些服务除了包括基础的计算、网络、存储之外,还有非常多涉及当今的前沿技术,例如大数据分析、机器学习、深度学习、VR、AR等等。

IAM:

什么是 IAM?

###

​ AWS Identity and Access Management 是一种Web服务,用户可以使用IAM控制哪个用户进行身份验证(登录)和授权(具有权限)以使用资源。

首次登陆时使用的是对账户中所有AWS服务和资源有完全访问权限的单点登陆身份(AWS 账户 根用户

使用 根用户 的最佳实践,仅将其用于创建您的首个 IAM 用户

主题

​ AWS Identity and Access Management (IAM) is a web service that helps you securely control access to AWS resources. You use IAM to control who is authenticated (signed in) and authorized (has permissions) to use resources.

​ IAM使用了MFA多重验证。可以采用此设置增强安全性,用户不仅需要提供使用账户的所需的密码或者使用秘钥访问,还必须提供特殊配置的设备的代码。

IAM 功能

IAM提供的功能:

1.共享AWS账户访问权限

​ 可以开一个账户给别人,并使用IAM赋予相应的权限,这样就不需要登陆根账户了。

2.精细权限

​ IAM的控制粒度很细,具体到了资源。可以使用IAM授权某些用户完全访问EC2,S3,DynamoDB,Amazon Redshift和其他AWS服务。也可以授权用户仅有某些实例的只读访问权限,或者只能看到账单信息而无其他权限。

3.可以使用IAM控制在 EC2上运行的应用程序可访问哪些其他资源:

​ 用户可使用IAM安全地为EC2实例上运行的应用程序提供凭证,这些凭证标明了这个实例有哪些访问其他资源的权限。示例包括S3 BUCKET 和 DynamoDB 表。

4.多重验证(MFA Multi-factor authentication

​ 用户可以向账户和各个用户添加双重身份验证。MFA会多一层经过特殊配置的设备的代码的验证。(疑问:账户,和用户的关系)

5.联合身份

​ 用户可以允许 在其他位置获得密码(在企业网络中或通过Internet 身体提供商)的用户获取AWS账户的临时访问权限。

6.实现保证的身份信息

​ 用户可使用 AWS CloudTrail,使用后会受到操作日志,内容是账户中的资源请求的人员的信息,基于IAM。

7.PCI DSS合规性

​ IAM 支持由商家或服务提供商处理、存储和传输信用卡数据,而且已经验证符合支付卡行业 (PCI) 数据安全标准 (DSS)。有关 PCI DSS 的更多信息,包括如何请求 AWS PCI Compliance Package 的副本,请参阅 PCI DSS 第 1 级

8.IAM与其他AWS服务的集成

​ 有关使用 IAM 的 AWS 服务的列表,请参阅使用 IAM 的 AWS 服务

9.最终一致性:

​ IAM使用分布式计算最终一致性。IAM 通过复制 Amazon 在全球的数据中心内多个服务器上的数据实现高可用性。但是更改必须夸IAM复制,这需要时间。

此类更改包括创建或更新用户、组、角色或策略。
在应用程序的关键、高可用性代码路径中,我们不建议进行此类 IAM 更改。
而应在不常运行的、单独的初始化或设置例程中进行 IAM 更改。

​ 在生产工作流程依赖这些更改之前,请务必验证更改已传播。有关更多信息,请参阅 我所做的更改可能不会立即可见

X.免费使用

​ IAM和 AWS STS 是免费提供的功能。


访问 IAM

您可以通过以下任何方式使用 AWS Identity and Access Management。

1. AWS 管理控制台(页面)

​ 控制台是用于管理 IAM 和 AWS 资源的基于浏览器的界面。有关通过控制台访问 IAM 的更多信息,请参阅 IAM 控制台和登录页面。有关指导您使用控制台的教程,请参阅创建您的第一个 IAM 管理员用户和组

2. AWS 命令行工具(AWS Client)

​ 您可以使用 AWS 命令行工具,在系统的命令行中发出命令以执行 IAM 和 AWS 任务。与控制台相比,使用命令行更快、更方便。如果要构建执行 AWS 任务的脚本,命令行工具也会十分有用。

3. AWS SDK

​ JavaSDK

4. IAM HTTPS API

​ 您可以使用 IAM HTTPS API (可让您直接向服务发布 HTTPS 请求) 以编程方式访问 IAM 和 AWS。

使用 HTTPS API 时,必须添加代码,才能使用您的凭证对请求进行数字化签名。

​ 有关更多信息,请参阅通过提出 HTTP 查询请求来调用 APIIAM API 参考

IAM的工作方式

在创建用户之前,您应该了解 IAM 的工作方式。IAM 提供了控制您的账户的身份验证和授权所需的基础设施。IAM 基础设施包含以下元素:

主题

 IAM 简ä"‹å›¾è¡¨

#####


IAM JSON 策略评估逻辑:

主题

策略评估基础知识

​ AWS收到请求时,先根据ACCESSKEY 和 AccesssecretKey 来验证该请求。

​ 由AWS账户根用户创建的请求可以访问该账户中的资源。

IAM跨账户访问


2018年08月06 自己账号拿来玩玩

首先 要设置IAM角色

什么是 IAM 角色?

IAM 角色是向您信任的实体授予权限的安全方法。以下为实体示例:

  • 其他账户中的 IAM 用户
  • 在需要对 AWS 资源执行操作的 EC2 实例上运行的应用程序代码
  • 一个需要对您账户中的资源进行操作以提供其功能的 AWS 服务
  • 公司目录中将联合身份与 SAML 一起使用的用户

IAM 角色颁发短期有效的密钥,使其成为更安全的授予访问权限的方法。

其他资源:

SQS

概览

问:什么是 Amazon SQS?

Amazon Simple Queue Service (Amazon SQS) 是一款 Web 服务,让您能够访问那些存储待处理消息的消息队列借助 Amazon SQS,您能够快速构建可在任何计算机上运行的消息队列应用程序。

Amazon SQS 可以提供可靠并且高度可扩展的托管队列,用于存储在计算机之间传输的消息。借助 Amazon SQS,您可以在不同的分布式应用程序组件之间移动数据同时既不会丢失消息,也不需要各个组件始终处于可用状态。(这句话说明了异步吧)

Amazon SQS 可帮助您构建组件相互解耦的分布式应用程序,而且这些应用程序可与 Amazon Elastic Compute Cloud (Amazon EC2) 及其他 AWS 基础设施 Web 服务紧密配合。 (整合的很好

问:Amazon SQS 有哪些功能?

由于 Amazon SQS 高度可扩展,您可以按使用量付费。您可以从较小规模开始,然后随着业务需要逐步扩大应用程序的规模,而不会牺牲性能或可靠性。借助 Amazon SQS,您可以专注于构建稳健而复杂的基于消息的应用程序,不必再担心消息的存储和管理问题。 (可扩展性强,可以从小开始,专注于业务,消息的存储和管理交给AWS负责)

某些具体用途如下:

  • 将 Amazon SQS 与其他 AWS 服务集成,让应用程序更加灵活、更加可靠。
  • 使用 Amazon SQS 创建工作队列,其中每条消息都是一项等待处理的任务。让一台或多台计算机从消息队列中读取任务然后加以处理。(一台或多台,重点哈,一个消息队列可以给多个应用去处理)

  • 构建微服务架构并使用消息队列来连接微服务

  • 重要业务事件的通知保存在 Amazon SQS 消息队列中。每个事件在消息队列中均有一条对应的消息,需要知晓该事件的应用程序可以读取和处理对应的消息。

问:Amazon SQS 相对于自主或打包式消息队列系统有哪些优势?

自行构建软件来管理消息队列或者使用商用或开源消息队列系统在前期需要花费大量的时间进行开发和配置,与其相比,使用 Amazon SQS 具有若干优势。

其他方案需要持续进行硬件维护,并会占用系统管理资源。如果需要冗余消息存储以确保在出现硬件故障时不会丢失消息,那么这些系统的配置和管理将更为复杂。 (首先需要占据资源,这个资源既是硬件,也是人力,并且配置和管理会比使用SQS服务复杂很多)

相反,Amazon SQS 不需要管理开销,而且基本不需要配置Amazon SQS 可以大规模处理工作,每天处理数十亿条消息。您可以在不进行任何配置的情况下增加或减少向 Amazon SQS 发送的流量。此外,Amazon SQS 还可以实现极高的消息持久性,让您和您的利益相关者更加放心。

(可处理规模大,可实现极高消息持久性,伸缩性强,无管理开销,不需要配置)

问:Amazon SQS 与 Amazon SNS 有何不同? (这是自家服务的对比了)

Amazon Simple Queue Service (SQS) 和 Amazon SNS 都是 AWS 中的消息收发服务,但为开发人员提供了不同的优势。Amazon SNS 允许应用程序通过“推送”机制向多个订阅者发送时间关键型消息,并且无需定期检查或“轮询”更新。Amazon SQS 是供分布式应用程序使用的消息队列服务,它通过轮询模式交换消息,可用于解耦收发组件。Amazon SQS 使分布式应用程序组件可以灵活地收发消息,并且不要求每个组件同时可用。

一种常见的模式是使用 SNS 将消息发布到 Amazon SQS 队列,进而以可靠的方式将消息异步发送到一个或多个系统组件。有关更多详情,请参阅什么是 Pub/Sub 消息收发?

问:Amazon SQS 与 Amazon MQ 有何不同?

Amazon MQ、Amazon SQS 和 Amazon SNS 都是消息收发服务,适用于从初创公司到大型企业的任何规模的企业。如果您正在使用现有应用程序中的消息收发功能,想要快速轻松地将消息收发功能移至云中,我们建议您考虑使用 Amazon MQ。它支持行业标准 API 和协议,因此,您可以从任何基于标准的消息代理切换到 Amazon MQ,且无需重新编写您应用程序中的消息收发代码如果您要在云中构建全新的应用程序,我们建议您考虑使用 Amazon SQS 和 Amazon SNSAmazon SQS 和 SNS 是轻型的、完全托管的消息队列和主题服务,可以几乎无限地进行扩展,并可提供易于使用的简单 API。您可以使用 Amazon SQS 和 SNS 分离和扩展微服务、分布式系统和无服务器应用程序,以及提高可靠性。

问:Amazon SQS 是否提供消息排序功能? (sqs有一个FIFO队列确保消息收发顺序一致)

是的。FIFO (先进先出) 队列可准确保持消息的发送和接收顺序。果您使用 FIFO 队列,就无需在消息中加入排队信息。有关更多信息,请参阅 Amazon SQS 开发人员指南中的 FIFO 队列逻辑

标准队列提供宽松的 FIFO 功能,会尽可能保持消息顺序。但是,由于标准队列使用高度分布式架构来实现大规模扩展,因此并不能确保接收消息时严格遵循消息发送的顺序。

问:Amazon SQS 是否能确保传送消息?

标准队列提供至少一次传送,因此每条消息至少会传送一次。

FIFO 队列提供严格一次处理,因此每条消息仅传送一次,并且在使用器处理并删除它之前始终可用。队列本身不会引入重复消息。 (FIFO队列每条消息只传送一次)

EC2:

Available Device Names

The following table lists the available device names for Linux instances. The number of volumes that you can attach to your instance is determined by the operating system. For more information, see Instance Volume Limits.

Virtualization Type Available Reserved for Root Recommended for EBS Volumes Instance Store Volumes NVMe Volumes
Paravirtual /dev/sd[a-z]/dev/sd[a-z][1-15]/dev/hd[a-z]/dev/hd[a-z][1-15] /dev/sda1 /dev/sd[f-p]/dev/sd[f-p][1-6] /dev/sd[b-e]/dev/sd[b-y] (hs1.8xlarge) Not available
HVM /dev/sd[a-z]/dev/xvd[b-c][a-z] Differs by AMI/dev/sda1 or /dev/xvda /dev/sd[f-p] /dev/sd[b-e]/dev/sd[b-h] (h1.16xlarge)/dev/sd[b-y] (d2.8xlarge)/dev/sd[b-y] (hs1.8xlarge)/dev/sd[b-i] (i2.8xlarge) /dev/nvme[0-26]n1 *

IAM的具体策略

DYNAMODB的键的策略,大量考点

2018年07月31日16:44:41 Q 131

1
2
3
4
5
Amazon Simple Notification Service (Amazon SNS) is a fast, flexible, and fully managed push messaging service.
Amazon SNS can deliver notifications by SMS text message or email to the Amazon Simple Queue Service (SQS) queues
or to any HTTP endpoint. The user can select one the following transports as part of the subscription requests: “HTTP”,
“HTTPS”,”Email”, “Email-JSON”, “SQS”, “and SMS”.
http://aws.amazon.com/sns/faqs/

一个EC2实例无法被访问到可能是因为没有配安全组。

SQS不是FIFO的,所以需要自己加入排序信息

DynamoDB的键值对策略。

CloudFormation的概念:Stack

1
2
3
EC2的root ebs都可以被卸下来挂到别的机器上

If an Amazon EBS volume is the root device of an instance, it cannot be detached unless the instance is in the stopped

Elastic BeanStack设计的时候就考虑到了多实例同时部署的情况。

当RDS选择多AZ部署的时候RDS的AZ属性是不能选的,由AWS自动加载。

DynamoDB没有TableSize的限制。因为本身就是NOSQL的呗

1
2
3
4
5
Q186

如果查看一个EBS卷的信息用api查不到的话,那么说明这个卷可能没有挂载。

When a user creates an EBS volume and attaches it as a device, it is required to mount the device. If the device/volume is not mounted it will not be available in the listing. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html
1
2
3
4
5
6
7
Q187
RDS 安全组的初始状态是:Authorizing

When the user makes any changes to the RDS security group the rule status will be authorizing for some time until the
changes are applied to all instances that the group is connected with. Once the changes are propagated the rule status
will change to authorized.
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithSecurityGroups.html
1
2
3
4
5
6
7
8
9
Q188
WAF中 the coordination logic in a workflow 叫Decider

Explanation:
In Amazon SWF, the coordination logic in a workflow is contained in a software program called a decider. The decider
schedules activity tasks, provides input data to the activity workers, processes events that arrive while the workflow is in
progress, and ultimately ends (or closes) the workflow when the objective has been completed.

http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-intro-to-swf.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Q191

需求:部署一个webServer和一个 app server在同一台EC2上,这台ec2在一个VPC的同一个公网下的子网中,如何将2个应用设置2个单独的IP 以及单独的安全组。

A:Launch a VPC instance with two network interfaces. Assign a separate security group and elastic IP to them.

考点:单个VPC内多IP部署



Explanation:
If you need to host multiple websites(with different IPs) on a single EC2 instance, the following is the suggested method
from AWS:
– Launch a VPC instance with two network interfaces
– Assign elastic IPs from VPC EIP pool to those interfaces (Because, when the user has attached more than one network
interface with an instance, AWS cannot assign public IPs to them)
– Assign separate Security Groups if separate Security Groups are needed
This scenario also helps for operating network appliances, such as firewalls or load balancers that have multiple private
IP addresses for each network interface.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/MultipleIP.html
1
2
3
4
5
6
7
8
9
10
11
Q192  SQS的队列名称限制
Regarding Amazon SQS, are there restrictions on the names of Amazon SQS queues?

Yes. Queue names are limited to 80 characters and queue names must be unique within an AWS account

80字节,账号内不能重复。

Explanation:
Queue names are limited to 80 characters. Alphanumeric characters plus hyphens (-) and underscores (_) are allowed.
Queue names must be unique within an AWS account. After you delete a queue, you can reuse the queue name.
https://aws.amazon.com/sqs/faqs/
1
2
3
4
5
6
7
8
9
10
11
12
Q193 CIDR网段划分(关于网络的题看起来总是很懵逼)

Q:Doug has created a VPC with CIDR 10.201.0.0/16 in his AWS account. In this VPC he has created a public subnet with CIDR block 10.201.31.0/24. While launching a new EC2 from the console, he is not able to assign the private IP address 10.201.31.6 to this instance. Which is the most likely reason for this issue?

A:Private address IP 10.201.31.6 is currently assigned to another interface.

Explanation:
In Amazon VPC, you can assign any Private IP address to your instance as long as it is:
Part of the associated subnet’s IP address range
Not reserved by Amazon for IP networking purposes
Not currently assigned to another interface
http://aws.amazon.com/vpc/faqs/
1
2
Q194 SQS的数量限制?
无限制。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Q195 EC2实例怎样更新IP

Use the ec2-net-utils package which will configure an additional network interface and update the routing table

Explanation:
A Virtual Private Cloud (VPC) is a virtual network dedicated to the user’s AWS account. It enables the user to launch
AWS resources into a virtual network that the user has defined. With VPC the user can specify multiple private IP
addresses for his instances. The number of network interfaces and private IP addresses that a user can specify for an
instance depends on the instance type. This scenario helps when the user wants to host multiple websites on a single
EC2 instance. After the user has assigned a secondary private IP address to his instance, he needs to configure the
operating system on that instance to recognize the secondary private IP address. For AWS Linux, the ec2-net-utils
package can take care of this step. It configures additional network interfaces that the user can attach while the instance
is running, refreshes secondary IP addresses during DHCP lease renewal, and updates the related routing rules.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/MultipleIP.html
1
2
3
4
5
6
7
8
9
10
11
Q196 SQS怎样保证顺序?

无法保证 按发送顺序接受sqs消息

AWS cannot guarantee that you will receive messages in the exact order you sent them

Explanation:
Amazon SQS makes a best effort to preserve order in messages, but due to the distributed nature of the queue, AWS
cannot guarantee that you will receive messages in the exact order you sent them. You typically place sequencing
information or timestamps in your messages so that you can reorder them upon receipt.
https://aws.amazon.com/items/1343?externalID=1343
1
2
3
4
5
6
7
8
9
10
11
Q197 DynamoDB 吞吐量超过你的上限时会怎样

400异常,无法请求到。

requests above your provisioned capacity will be throttled and you will receive 400 error codes.

Explanation:
Speaking about DynamoDB, if your application performs more reads/second or writes/second than your table’s
provisioned throughput capacity allows, requests above your provisioned capacity will be throttled and you will receive
400 error codes.
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html
1
2
Q199 删除SQS的时候如果里面有消费者没有收到的消息怎么办?
照样删,AWS不管你的SQS中是否有消费者未收到的消息。
1
2
Q200如果一个S3没有版本的话 对象的版本信息是啥?
NULL
1
2
3
4
5
6
7
RDS不支持的特性是什么?
高负载自动扩容。

支持的是什么?
自动备份
自动更新
故障自动检测和恢复

需求:拿到主账号的AccessKey和SecretKey之后获取其子账号(关联账号)的Key

关于AWS Organization的核心概念:

组织:一系列aws账户,可以将其整理为一个层次结构并进行集中管理。

AWS账户:AWS账户是AWS资源的容器。可以在AWS账户中创建和管理AWS 资源,且AWS 账户汇提供访问和计费管理等功能。

主账户:创建组织的aws账户。主账户承担付款人的职责,并负责支付其组织者内所有账户产生的全部费用。主账户不能更改。

成员账户:组织中除主账户以外的 AWS 账户,是组织的一部分。组织的管理员刻意创建成员账户,也可以邀请账户加入该组织。还可以对成员账户应用策略,一个成语账户一次只能属于一个组织。

管理根(administrator root):管理根是 AWS 账户的起始点。管理根是组织层次结构中最顶层的容器。 在 root下,可以创建 OU 对账户进行逻辑分组,并将这些 OU 整理到最能满足业务需求的层次结构中。

组织单元(OU):OU 是组织内的一组 AWS账户。 OU 还可以包含允许您创建层次结构的其他 OU 。例如,在一个部门 OU 中,您可以将属于不同团队的账户归组到团队级别的不同 OU。除直接指定给这些团队级 OU 的所有控制外,它们还会继承父 OU 的策略。

Elastic Beanstalk

问:什么是 AWS Elastic Beanstalk?

AWS Elastic Beanstalk 让开发人员能够更加轻松地在 AWS 云中快速部署和管理应用程序。开发人员只需上传应用程序,Elastic Beanstalk 将自动处理容量预配置、负载均衡、Auto Scaling 和应用程序运行状况监控的部署细节。

问:哪些用户应该使用 AWS Elastic Beanstalk?

希望在 AWS 云中快速部署和管理应用程序的用户。无需熟悉云计算即可使用该服务。AWS Elastic Beanstalk 支持 Java、.NET、PHP、Node.js、Python、Ruby、Go 和 Docker Web 应用程序。

问:AWS Elastic Beanstalk 支持哪些语言和开发堆栈?

AWS Elastic Beanstalk 支持以下语言和开发堆栈:

适用于 Jave 应用程序的 Apache Tomcat

适用于 PHP 应用程序的 Apache HTTP Server

适用于 Python 应用程序的 Apache HTTP Server

Node.js 应用程序的 Nginx 或 Apache HTTP 服务器

适用于 Ruby 应用程序的 Passenger 或 Puma

适用于 .NET 应用程序的 Microsoft IIS 7.5、8.0 和 8.5

Java SE

Docker

问:AWS Elastic Beanstalk 支持哪种应用程序?

AWS Elastic Beanstalk 支持 Java、.NET、PHP、Node.js、Python、Ruby、Go 以及 Docker,是 Web 应用程序的理想之选。不过,鉴于 Elastic Beanstalk 为开放式架构,也可使用 Elastic Beanstalk 来部署非 Web 应用程序。预计将来还会支持其他应用程序类型和编程语言。请参阅支持的平台,了解更多信息。


SWF

一般性问题

问:什么是 Amazon SWF?
Amazon Simple Workflow Service (SWF) 是能够轻松协调各分布式应用程序组件中任务的网络服务Amazon SWF 能够以协调任务的方式来设计适用于各种使用案例的应用程序,包括媒体处理Web 应用程序后端业务处理工作流及分析管道。任务代表调用应用程序中的各种步骤,这一操作可通过可执行代码、Web 服务调用、人工操作和脚本来执行。

任务协调包括根据应用程序的逻辑流管理执行任务的依赖性调度及并发性。使用 Amazon SWF,开发人员可全面控制流程步骤实施及协调推动各步骤的任务,而不用担心跟踪进度和保存状态等底层复杂的工作。Amazon SWF 还提供 AWS Flow Framework,以帮助开发人员在开发应用程序过程中使用异步编程。使用 Amazon SWF,开发人员可受益于编程的简易性,并能够改进其应用程序的资源利用率、延迟及吞吐量。

问:以协调任务的方式设计应用程序有哪些好处? Amazon SWF 可帮助我做些什么?
在 Amazon SWF 中,任务即代表调用应用程序中的逻辑步骤任务由工作程序来处理,即与 Amazon SWF 交互以获取任务、处理任务并返回任务结果的程序。 工作程序执行应用程序处理步骤。您可以用不同的编程语言来构建工作程序,甚至可以重新使用现有的组件来快速创建工作程序。例如,您可以使用云服务、企业应用程序、旧式系统甚至简单的脚步来执行工作程序。通过独立控制处理每类任务的工作程序数量,可以有效控制应用程序的吞吐量。

要协调各工作程序中的应用程序执行,您可以用所选的编程语言编写一个“决策程序”。分开处理步骤及其协调,即可以控制方式管理应用程序,并使您能够灵活地独立部署、运行、扩展和更新它们。您可以选择在(例如 Amazon EC2 或 Lambda)中部署工作程序和决策程序,也可以在企业防火墙后的机器上部署。由于工作程序和决策程序的解耦,您的业务逻辑可以为动态的,所以能快速更新应用程序来适应新的要求。例如,您可以删除、跳过或重试任务,并可通过更改决策程序,轻松地创建新的应用程序流。

在执行工作程序和决策程序前,您需要关注差异化的应用程序逻辑,因为它们与执行实际的处理步骤及协调它们息息相关。Amazon SWF 可处理底层的细节,例如任务分配前存储任务、监控分配的任务以及完成时提供一致的信息。使用 Amazon SWF,还可通过 API 和控制台在每个任务级别持续监控。

问:Amazon SWF 可以用来做什么?
使用分布式组件构建应用程序时,可使用 Amazon SWF 解决出现的多项挑战。例如,您可以使用 Amazon SWF 和附送的 AWS Flow Framework 执行以下操作:

  • 使用简单的编程结构以异步程序形式编写用来提取细节的应用程序,例如启动任务以远程运行及跟踪程序的运行时状态。
  • 保存应用程序的执行状态(例如,已完成哪些步骤、正在运行哪些步骤等)。您不必非要使用数据库。定制系统或专用解决方案来保存执行状态。
  • 各应用程序组件之间的工作流通信和管理。使用 Amazon SWF,您无需设计消息发送协议,也不必担心任务丢失和重复。
  • 集中协调应用程序中的步骤。协调逻辑不必分布于不同的组件,可以封装在单一程序中。
  • 将各种程序和组件集成到应用程序中,包括旧式系统和第三方云服务。通过允许应用程序在任何位置、以任何组合形式灵活部署应用程序组件,Amazon SWF 可帮助您逐步将应用程序组件从私有数据中心迁移到公共云基础设施,而不会中断应用程序可用性或性能。
  • 自动执行工作流,包括长时间运行的人工任务(例如,批准、审核、调查等)Amazon SWF 能够可靠地跟踪运行长达数天或数月的处理步骤的状态。
  • 基于 Amazon SWF 构建应用程序层,以支持特定于最终用户的域的语言。由于 Amazon SWF 允许您完全灵活地选择编程语言,所以您可以方便地为特殊语言(如 XPDL)构建编译程序及构建定制的用户界面(包括建模工具)。
  • 详细审查跟踪并查看应用程序运行的所有实例。您也可以使用 Amazon SWF 提供的 API 将其查看功能加到自己的用户界面。

客户已使用 Amazon SWF 来构建应用程序,用于视频解码社交商务基础设施预配置MapReduce 管道、业务流程管理及其他一些使用案例。想要了解更多有关使用案例的详细信息,请参阅“哪些使用案例可通过 SWF 解决?”要查看客户现在如何使用 Amazon,请阅读我们的案例研究。

问:Amazon SWF 相对于自主解决方案及现有的工作流产品有哪些好处?
在分布式环境中构建解决方案来协调任务时,开发人员必须考虑一些变量。推进处理步骤的任务可能要长时间运行,也可能出现故障、超时或需要重新启动。它们完成时的吞吐量和延迟通常各不相同。在这些情况下,跟踪和查看任务不仅非常困难,而且工作毫无差别。随着应用程序和任务增加,开发人员将面临难以解决的分布式系统问题。例如,他们必须确保每个任务只分配一次,在存在意外故障和中断的情况下可靠地跟踪结果。使用 Amazon SWF,开发人员可以专注于其存在差异的应用程序逻辑,即处理任务和协调任务的方式。

现有的工作流产品通常会强迫开发人员学习专门的语言,托管昂贵的数据库,并会放弃任务执行控制。这些专门语言使得表达复杂应用程序变得困难,而且不能灵活、快速应用更改。而 Amazon SWF 是基于云的服务,允许使用常见的编程语言,并让开发人员控制在哪里处理任务。**Amazon SWF 对于分布式应用程序采用松散耦合的模型,可以灵活地进行变更

问:什么是工作程序和决策程序?
在 Amazon SWF 中,通过构建工作程序和决策程序实施应用程序,它们将直接与服务通信。工作程序的作用是与 Amazon SWF 交互来获取任务、处理收到的任务及返回结果。决策程序是根据应用程序逻辑控制任务顺序、并发性及调度等协调工作的程序。工作程序和决策程序可以在云基础设施(例如 Amazon EC2)中运行,也可以在防火墙后的机器中运行。Amazon SWF 负责执行工作程序和决策程序之间的交互。它允许决策程序统一查看任务的进度并持续启动新任务。同时,Amazon SWF 可存储任务,在就绪后将它们分配给工作程序,并监控其进度。确保每个任务只分配一次,永远不会重复。因为 Amazon SWF 可持久保存应用程序的状态,所以工作程序和决策程序不必跟踪执行状态。它们可以独立运行,并快速扩展。请参阅 Amazon SWF 详细信息页面的功能部分,了解使用 Amazon SWF 构建应用程序的详细步骤信息。

在 Amazon SWF 中,您可以并行运行一些工作流。每个运行是指工作流执行或一项执行任务。执行任务具有唯一的名称标识。您可以使用 Amazon SWF 管理控制台(或查看 API)来查看整体执行情况,并深入给定的执行任务查看任务级的详细信息。

SWF的决策示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"decisionType" : "ScheduleActivityTask",
"scheduleActivityTaskDecisionAttributes" : {
"activityType" : {
"name" : "activityVerify",
"version" : "1.0"
},
"activityId" : "verification-27",
"control" : "digital music",
"input" : "5634-0056-4367-0923,12/12,437",
"scheduleToCloseTimeout" : "900",
"taskList" : {
"name": "specialTaskList"
},
"scheduleToStartTimeout" : "300",
"startToCloseTimeout" : "600",
"heartbeatTimeout" : "120"
}
}

https://docs.aws.amazon.com/zh_cn/amazonswf/latest/developerguide/swf-dev-actors.html#swf-dev-actors-activities

战报:

85%分通过AWS Certified Solutions Architect Associate考试

本战报来自群友“拉斯”,他于2018年8月3日通过**助理级解决方案架构师(旧版)**考试,恭喜!以下为战报原文

先发下成绩:

Overall Score: 85%

Topic Level Scoring:
\1. Designing highly available, cost-efficient, fault-tolerant, scalable systems: 89%
\2. Implementation/Deployment: 60%
\3. Data Security: 77%
\4. Troubleshooting: 100%

备考过程:

我是6月底开始准备考试的,完全听一个旧同事的推荐,新工作环境里也没有同事懂,基本属于孤军奋战,上下班路上看看official guide以及FAQ,另外晚上会每天刷briefmenow上的SAA题库,小茶的群里也会看看大家交流下考经,不过鉴于考中文的同学比较多,对于英文的考经属于比较迷的状态,心里也有点忐忑。

后来刷了acloud上面的题目,发现official guide里的内容太旧,并没有完全覆盖真正的范围,考前一个星期强力复习了 ALB,API Gateway,lambda三个方向的FAQ以及重点,最后证明这个选择是正确的,实际考试中有25%以上的题目同这三个或多或少相关

考试过程:
我是在香港参加的SAA考试,考点在观塘,考场管理比较松散,旁边还有个舞蹈室会有一定杂音,所以考试也发了隔音耳机,过程比较顺利,考场还会给你开一部同步的standby机器,以防你考试过程中踢到机箱,比较人性化的准备。

每道题都要commit,提交需要等待几秒时间,最后考完还有8道关于考场的问题需要顺带回答,考了40分钟就出来了,只要复习的好,考试不会太花什么时间。

考经重点:

希望考英文旧版的同学一定注意

  1. 没有大段的情景题和论述题,最长的题目不超过三行,你网上看到那种八九行的题目都是SAP的,不需要额外花时间准备,不过时间充裕可以看,理解下how & why,不过SAA不会考。
  2. 光看official guide,绝对不够,一定要看ALB,API Gateway,lambda三个新特性,别人总结也好,官方文档也好,最起码要知道这三个东西的优点是什么,有什么特殊的特性,不然如果基础准备的不好很有可能擦边不过。这一点我在目前所有的英文考经里都没有看人提到过,略坑。另外常规的那些重点每个都会考,这点我不赘述了,唯一提下dynamodb,出现了很多次。
  3. 如果时间够,建议刷acloudguru的题库而不是briefmenow的,我亲测briefmenow的命中率并不高,可能10%左右。
  4. 英文好的同学,强烈建议jayendrapatil的blog,时间够看完他的全部题目,必过,对于新特性他也有快速提升的小文章,还有cheatsheet帮你总结每个大项的考点。

希望我的经验可以帮到之后冲刺英文旧版的同学,最后几天大家加油!


分享到:
0%