title: AWS之Qwiklab
subtitle: 4. Qwiklab'实验-Amazon DynamoDB, Amazon Redshift, Elasticsearch Service'
date: 2018-09-22 12:29:20
Introduction to Amazon DynamoDB
知识梳理
1. 定义与作用
首先,Amazon DynamoDB是非关系型数据库(NoSQL),NoSQL 是一个术语,用于描述高度可用的、可扩展的并且已针对高性能进行优化的非关系数据库系统。有别于关系模型,NoSQL 数据库 (如 DynamoDB) 使用替代模型进行数据管理,例如键-值对或文档存储。
2. 工作原理
https://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/HowItWorks.html
3. Python和Amazon DynamoDB
https://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/GettingStarted.Python.html
创建表Movies
from __future__ import print_function # Python 2/3 compatibility
import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-west-2', endpoint_url="http://localhost:8000")
table = dynamodb.create_table(
TableName='Movies',
KeySchema=[
{
'AttributeName': 'year',
'KeyType': 'HASH' #Partition key
},
{
'AttributeName': 'title',
'KeyType': 'RANGE' #Sort key
}
],
AttributeDefinitions=[
{
'AttributeName': 'year',
'AttributeType': 'N'
},
{
'AttributeName': 'title',
'AttributeType': 'S'
},
],
ProvisionedThroughput={
'ReadCapacityUnits': 10,
'WriteCapacityUnits': 10
}
)
print("Table status:", table.table_status)
Introduction to Amazon Redshift
Users表
CREATE TABLE users (
userid INTEGER NOT NULL,
username CHAR(8),
firstname VARCHAR(30),
lastname VARCHAR(30),
city VARCHAR(30),
state CHAR(2),
email VARCHAR(100),
phone CHAR(14),
likesports BOOLEAN,
liketheatre BOOLEAN,
likeconcerts BOOLEAN,
likejazz BOOLEAN,
likeclassical BOOLEAN,
likeopera BOOLEAN,
likerock BOOLEAN,
likevegas BOOLEAN,
likebroadway BOOLEAN,
likemusicals BOOLEAN
);
数据查询
查询表的行数
SELECT COUNT(*) FROM users;
查询俄亥俄州(OH)的用户喜欢体育不喜欢歌剧的情况,列表按其名字排序
SELECT userid, firstname, lastname, city, state
FROM users
WHERE likesports AND NOT likeopera AND state = 'OH'
ORDER BY firstname;
查询显示热爱Jazz的用户所居住的十大城市
SELECT
city,
COUNT(*) AS count
FROM users
WHERE likejazz
GROUP BY city
ORDER BY count DESC
LIMIT 10;
Introduction to Amazon Elasticsearch Service
Amazon Elasticsearch Service简介
知识梳理
1. 定义与作用
Amazon Elasticsearch Service (Amazon ES) 是一种托管服务, 可以轻松地在AWS云中部署,操作和扩展Elasticsearch。Elasticsearch是一种流行的开源搜索和分析引擎,用于日志分析,实时应用程序监控,点击流分析和文本搜索等用例。
您可以在几分钟内从AWS管理控制台设置和配置AmazonElasticsearchService
Cluster.
Amazon ES为您的群集配置了所有资源并启动它。AmazonES自动检测并替换故障节点,从而减少与自我管理基础架构相关的开销。设置AmazonES群集没有前期成本,您只需为您使用的服务资源付费。
AmazonES提供托管服务的以下好处:
- 通过API进行简单的集群扩展
- 自愈簇
- 按需提供高可用性
- 用于数据持久性的自动集群快照
- 安全
- 集群监控
AmazonES包含与Kibana的内置集成,并支持与Logstash的集成。Logstash是一个开源数据管道,可帮助您处理日志和其他事件数据,并将其加载到Elasticsearch中。Kibana是一个开源分析和可视化平台,可帮助您更好地了解Elasticsearch中的数据。
2. Amazon Elasticsearch Service 的组件
AmazonES包含以下组件:
域:AmazonES域包含Elasticsearch Service Cluster(硬件和软件)以及提供负载平衡,安全性,监控等的其他硬件和软件。该域由AmazonES的服务说点公开,其名称必须符合以下条件:
- 唯一标识AWS账户中的域
- 以字母或数字开头
- 包含至少三个字符,但不超过28个字符
- 仅包含小写字符az,数字0-9和连字符(-)
群集:运行Elasticsearch Service所需的一个或多个数据节点,可选的专用主节占和存储的集合。
节点:Elasticsearch Service集群中的单个实例,能够识别和处理或转发消息到其他节点。
存储:AmazonES支持两种不同的存储类型:实例存储或弹性块存储(EBS),可以是通用(SSD),配置IOPS(SSD)或磁性。
3. 相关服务
Amazon ES通常与以下服务起使用:
AWS Cloud Trail
使用AWS CloudTrail求取您帐户的Amazon ES API调用和相关事件的历史记录。CloudTrail是一种Web服务,可记录来自您帐户的API调用,并将生成的日志文件传递到您的Amazon S3存储桶。您还可以使用CloudTrail限踪对AWS资源所做的更改。
Amazon CloudWatch
Elasticsearch Service域会自动将指标发送到Amazon CloudWatch,以便您可以收集和分析性能统计信息。您可以使用AWS CLL或AWS开发工具向监控这些指标。您还可以轻松地将CloudWatchLogs日志组订阅到Amazon ES域,以将该日志组中的数据加载到AmazonES中。
Amazon Kinesis
Amazon Kinesis是一种托管服务,可以弹性扩展,实现大规模流数据的实时处理。AmazonES提供Lambda示例代码以与Kinesis集成。
Amazon S3
Amazon Simple Storage Service (Amazon S3) 是Internet的存储. 您可以随时使用AmazonS3在Web上的任何位置存储和检索任意数量的数据。
Amazon ES提供Lambda示例代码以与S3集成。
AWS身份和访问管理(IAM)
AWS身份和访问管理(IAM)是一种Web服务,可用于管理AWS中的用户和用户权限。使用IAM为您的Amazon ES域创建基于用户或基于IP的访问策略。
域访问策略-允许对域进行公开访问:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"es:*"
],
"Resource": "arn:aws:es:us-west-2:563924657756:domain/mydomain/*"
}
]
}