SlideShare a Scribd company logo
1 of 45
Download to read offline
AWS Cloud Kata for Start-Ups and Developers
Hong
Kong
Programming the Physical World
with Device Shadows and Rules
Engine
Dickson Yue
Solutions Architect, AWS
AWS Cloud Kata for Start-Ups and Developers
Outline
•  Shadows
•  Rules
•  Sample code
•  Demo
AWS Cloud Kata for Start-Ups and Developers
AWS IoT
AWS Cloud Kata for Start-Ups and Developers
AWS Cloud Kata for Start-Ups and Developers
Interact with with unreliable
connections thing
Device Shadow
AWS Cloud Kata for Start-Ups and Developers
AWS IoT Device Shadows flow
Shadow
Thing
7. Device Shadow confirms state change
1. Device publishes current state
report {light: off}
3. App requests device’s current state
get {light : off}
4. App requests change the state
desire {light : on}5. Device Shadow syncs
updated state
delta {light : on}
6. Device publishes current state
report {light : on}
2. Persist JSON data store
reported {light : off}
desired{light : on}
reported {light : on}
App
AWS Cloud Kata for Start-Ups and Developers
AWS IoT Device Shadow - Simple Yet
{
"state" : {
“desired" : {
"light": “on”
},
"reported" : {
"light" : “off”
},
"delta" : {
"light" : “on”
} },
"version" : 10
}
Device
Report its current state to one or multiple shadows
Retrieve its desired state from shadow
Mobile App
Set the desired state of a device
Get the last reported state of the device
Delete the shadow
Shadow
Shadow reports delta, desired and reported
states along with metadata and version
AWS Cloud Kata for Start-Ups and Developers
DEMO
AWS Cloud Kata for Start-Ups and Developers
AWS Cloud Kata for Start-Ups and Developers
http://bit.ly/iot-plb
AWS Cloud Kata for Start-Ups and Developers
http://bit.ly/iot-plb2
AWS Cloud Kata for Start-Ups and Developers
AWS IoT
Device gateway
reported: {temp:27,
humidity: 80%}
Light
Amazon Alexa
Service
AWS Lambda
Grove
Light Bulb
Shadow
4. Update shadow
desired: {light: off}
Environment
Monitor
3. Switch off the light
2. Update shadow
Switch
1. Sensors update
MQTT
MQTT over the WebSocket
HTTP
Alexa + Lambda
$$ charged by
Prices are based on the number of
messages published to AWS IoT
(Publishing Cost), and the number
of messages delivered by AWS IoT
to devices or applications (Delivery
Cost).
6. Update shadow
reported: {light: off}
AWS Cloud Kata for Start-Ups and Developers
Create a thing
AWSREGION='us-east-1’
THINGSNAME="lightbulb02”
POLICYNAME='smarthome-devices’
aws iot create-thing --thing-name $THINGSNAME --region $AWSREGION >things/thing-$THINGSNAME.json
CERTARN=$(aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile ./certs/
$THINGSNAME-cert.pem --public-key-outfile ./certs/$THINGSNAME-publicKey.pem --private-key-outfile ./
certs/$THINGSNAME-privateKey.pem --output text --query 'certificateArn' --region $AWSREGION)
aws iot attach-thing-principal --thing-name $THINGSNAME --principal $CERTARN --region $AWSREGION
aws iot attach-principal-policy --principal $CERTARN --policy-name $POLICYNAME --region $AWSREGION
aws iot list-thing-principals --thing-name $THINGSNAME --region $AWSREGION
1
2
3
4
AWS Cloud Kata for Start-Ups and Developers
AWS IoT Policy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action":["iot:Publish"],
"Resource": ["arn:aws:iot:us-east-1:123456789012:topic/home/${iot:ClientId} "]
},
{
"Effect": "Allow",
"Action":["iot:Subscribe"],
"Resource": ["arn:aws:iot:us-east-1:123456789012:topic/home/*"]
},
{
"Effect": "Allow",        
"Action": ["iot:Connect"],        
"Resource": ["*"]        
}
]
}
AWS Cloud Kata for Start-Ups and Developers
Load cert and private key
Generate certivate with AWS IoT
certfile="../../certs/grove-cert.pem",
keyfile="../../certs/grove-privateKey.pem",
rootCA="../../certs/root.pem”
Copy the cert through SSH
JITR - Just In Time Certificate Registration
1.  You will register and activate the CA certificate.
2.  Use this certificate to create and sign the certificates you will use per device.
3.  Let the device present the certificate to AWS and then activate it, i.e. through Lambda
4.  Finally, use an AWS Lambda function to notify you when a new certificate is present to AWS.
It can also activate the certificate and handle any registration or initialization.
AWS Cloud Kata for Start-Ups and Developers
Connect through MQTT library
import paho.mqtt.client as mqtt
def init():
global client
try:
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.clientid = clientid
client.tls_set( "../../certs/root.pem",
certfile="../../certs/grove-cert.pem",
keyfile="../../certs/grove-privateKey.pem",
tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None )
client.connect("data.iot.us-east-1.amazonaws.com", 8883, 10)
client.loop_forever()
except:
print "Mqtt Unexpected error:", sys.exc_info()[0]
Do not duplicate your clientid
MQTT Event handler
Cert, Private key, Root CA
AWS Cloud Kata for Start-Ups and Developers
Connect through Python SDK
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
def init():
global client
try:
client = AWSIoTMQTTClient(clientid)
client.configureEndpoint(host, 8883)
client.configureCredentials(rootCAPath, privateKeyPath, certificatePath)
client.configureAutoReconnectBackoffTime(1, 32, 20)
client.configureDrainingFrequency(2) # Draining: 2 Hz
client.configureConnectDisconnectTimeout(10) # 10 sec
client.configureMQTTOperationTimeout(5) # 5 sec
client.connect()
thingLightbulb = client.createShadowHandlerWithName(thingLightbulbName, True)
thingLightbulb.shadowRegisterDeltaCallback(lightbulbShadowCallback_Delta)
except:
print "Unexpected error at init:", sys.exc_info()[0]
Auto reconnection with
progressive backoff
Offline publish queue
AWS Cloud Kata for Start-Ups and Developers
Read sensor data from Grove
try:
[ temp,hum ] = dht(dht_sensor_port,dht_sensor_type)
ppm = grovepi.analogRead(air_sensor)
aq = getairquality(ppm)
loudness = grovepi.analogRead(loudness_sensor)
light = grovepi.analogRead(light_sensor)
state = {
"temp" : temp,
"humidity" : hum,
"lightsensorvalue" : light,
"lightsensorresistance" : resistance,
"ppm" : ppm,
"airquality" : aq,
"loudness" : loudness,
"createdat" : nowstr
}
Extract sensor value
Prepare your message
AWS Cloud Kata for Start-Ups and Developers
Update shadow through MQTT
state = {
"temp" : temp,
"humidity" : hum,
"lightsensorvalue" : light,
"lightsensorresistance" : resistance,
"ppm" : ppm,
"airquality" : aq,
"loudness" : loudness,
"createdat" : nowstr
}
msg = {
"state":{
"reported": state
}
}
topicshadow = "$aws/things/grove/shadow/update"
client.publish(topicshadow,json.dumps(msg),1)
Update shadow through
publish a MQTT message
AWS Cloud Kata for Start-Ups and DevelopersAWS Cloud Kata for Start-Ups and Developers
Connect through JavaScript
AWS Cloud Kata for Start-Ups and Developers
Connect through JavaScript
AWS.config.region = region;
AWS.config.credentials = new AWS.CognitoIdentityCredentials(
{ IdentityPoolId: identityPoolId }
);
credentials.get(
function(err) {
if(err) {var requestUrl = SigV4Utils.getSignedUrl(
'wss', c.AWS.iotEndpoint, '/mqtt', 'iotdata', c.AWS.iotRegion,
credentials.accessKeyId,
credentials.secretAccessKey,
credentials.sessionToken);
initClient(requestUrl);
});
Get credential through
Cognito
With temp access token
Get signed url
AWS Cloud Kata for Start-Ups and Developers
Connect through JavaScript
function initClient(requestUrl) {
var clientId = String(Math.random()).replace('.', '');
var client = new Paho.MQTT.Client(requestUrl, clientId);
mqttClient = client;
var connectOptions = {
onSuccess: function() {
client.subscribe(topiclightbulb);
client.subscribe(topicgrove);
},
useSSL: true, timeout: 3, mqttVersion: 4,
onFailure: function() { console.error('connect failed'); }
};
client.connect(connectOptions);
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
}
Signed url
MQTT Event handler
AWS Cloud Kata for Start-Ups and Developers
Update shadow through MQTT
function updateLightShadow(state) {
lightstate = state;
msg = "{"state": {"desired" : { "light":"" + lightstate + "" }}}";
topicshadow = topiclightbulbUpdate;
console.log(msg);
mqttClient.send(topicshadow, msg);
}
AWS Cloud Kata for Start-Ups and Developers
Button
Control
Click
+
Publish a msg to a topic
+
Rules
+
Trigger Lambda
AWS Cloud Kata for Start-Ups and Developers
AWS Cloud Kata for Start-Ups and Developers
Update shadow through Lambda
var AWS = require('aws-sdk');
var config = {iotendpoint: 'A1OMFFL4UASE1E.iot.us-east-1.amazonaws.com'};
var iotdata = new AWS.IotData({endpoint:config.iotendpoint});
var newstate = reported.light === "on"? "off" : "on";
var state = {
"state" : {
"desired" :{
"light" : newstate
}
}
}
var params = {
payload: JSON.stringify(state),
thingName: thingName
};
iotdata.updateThingShadow(params, function(err, data) {
callback(data);
});
Update shadow through
publish a AWS SDK
Flip the switch
Prepare your state
AWS Cloud Kata for Start-Ups and Developers
Voice
Control
Alexa
+
Skill
+
Lambda
AWS Cloud Kata for Start-Ups and DevelopersAWS Cloud Kata for Start-Ups and Developers
AWS Cloud Kata for Start-Ups and DevelopersAWS Cloud Kata for Start-Ups and Developers
AWS Cloud Kata for Start-Ups and DevelopersAWS Cloud Kata for Start-Ups and Developers
Bind a Lambda function with your skill
AWS Cloud Kata for Start-Ups and Developers
Update shadow through Lambda
if ("AskLightControlIntent" === intentName) {
handleLightControlIntent(intent, session, callback);
}
function handleLightControlIntent(intent, session, callback) {
var switchSlot = intent.slots.Switch;
var sw = "";
if(switchSlot)
sw = switchSlot.value;
speechOutput = "The light is now " + sw +".";
var data = sw=="on" ? LightblubShadow.on : LightblubShadow.off;
var next = function(){
callback(sessionAttributes,
buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession));
}
updateShadow("lightbulb",JSON.stringify(data),next);
Handle the corresponding
intent
AWS Cloud Kata for Start-Ups and Developers
Rules engine
AWS Cloud Kata for Start-Ups and Developers
Extracting the value from messages
•  Filter messages with certain criteria
•  Move messages to other topics
•  Move messages to other systems
•  Transform the payload of messages
•  Predict messages based on trends
•  React based on messages
AWS Cloud Kata for Start-Ups and Developers
But how?
instance
database
?
AWS Cloud Kata for Start-Ups and Developers
But how?
Highly available?
Scalable?
Easy to operate?
Easy to change?
Easy to implement?
instance
database
AWS Cloud Kata for Start-Ups and Developers
Rules Engine
AWS Cloud Kata for Start-Ups and Developers
AWS IoT rules engine
predict,
republish
Amazon Machine
Learning
index
archive,
analyze
Amazon
DynamoDB
AWS
Lambda
Amazon
Redshift
process
AWS Cloud Kata for Start-Ups and Developers
AWS IoT - SQL Reference
SELECT DATA FROM TOPIC WHERE FILTER
•  Like scanning a database table
•  Default source is an MQTT topic
EXAMPLES:
•  FROM mqtt(‘my/topic’)
•  FROM mqtt(‘my/wildcard/+/topic’)
•  FROM (‘my/topic’)
AWS Cloud Kata for Start-Ups and Developers
Rules Engine
•  Familiar SQL syntax
•  SELECT * FROM topic WHERE filter
•  Functions
•  String manipulation (regex support)
•  Mathematical operations
•  Context based helper functions
•  Crypto support
•  UUID, timestamp, rand, etc.
•  Execute Simultaneous Actions
AWS Cloud Kata for Start-Ups and Developers
Secure
Pub/Sub
broker
Rules
Log
{1,2,3,4}
Monitoring DB
{1,2,3,4}
Alarm
{4}
blue/1 {temp:15}
blue/2 {temp:16}
blue/3 {temp:12}
blue/4 {temp:40}
temp = *
temp = select temp, lux
temp > 30
temp = * Search
{1,2,3,4}
AWS Cloud Kata for Start-Ups and Developers
DEMO
AWS Cloud Kata for Start-Ups and Developers
ES Index
PUT awsiot-grove{
"mappings": {
"grove": {
"properties": {
"temp": { "type": "double" },
"humidity": { "type": "double“ },
"lightsensorvalue": { "type": "double“ },
"lightsensorresistance": { "type": "double“ },
"createdat": { "type": "date","format" : "yyyy-MM-dd HH:mm:ss" },
"time": { "type": "date" },
"timestamp": { "type": "date" }
}
}
}
}
AWS Cloud Kata for Start-Ups and Developers
Get Started with AWS IoT Device SDK
C-SDK
(Ideal for embedded
OS)
JavaScript-SDK
(Ideal for Embedded
Linux Platforms)
Arduino Library
(Arduino Yun)
Mobile SDK
(Android and iOS)
Java-SDKPython
AWS Cloud Kata for Start-Ups and Developers
Key take away
•  Program with Shadows
•  Nodejs, Python, JavaScript
•  MQTT library vs AWS SDK
•  Cert vs Cognito
•  Message routing Rules Engine configuration
•  Elasticsearch integration
AWS Cloud Kata for Start-Ups and Developers
Hong
Kong
Thank you

More Related Content

What's hot

Why You Need Automated and Manual Mobile App Testing
Why You Need Automated and Manual Mobile App TestingWhy You Need Automated and Manual Mobile App Testing
Why You Need Automated and Manual Mobile App TestingAmazon Web Services
 
AWS Step Functions - Dev lounge Express Edition.pdf
AWS Step Functions - Dev lounge Express Edition.pdfAWS Step Functions - Dev lounge Express Edition.pdf
AWS Step Functions - Dev lounge Express Edition.pdfAmazon Web Services
 
AWS Innovate 2016 : Opening Keynote - Glenn Gore
AWS Innovate 2016 :  Opening Keynote - Glenn GoreAWS Innovate 2016 :  Opening Keynote - Glenn Gore
AWS Innovate 2016 : Opening Keynote - Glenn GoreAmazon Web Services Korea
 
Keynote @ IoT World Paris
Keynote @ IoT World ParisKeynote @ IoT World Paris
Keynote @ IoT World ParisJulien SIMON
 
善用分析與推播訊息增加及留住用戶
善用分析與推播訊息增加及留住用戶善用分析與推播訊息增加及留住用戶
善用分析與推播訊息增加及留住用戶Amazon Web Services
 
IOT203_Getting Started with AWS IoT
IOT203_Getting Started with AWS IoTIOT203_Getting Started with AWS IoT
IOT203_Getting Started with AWS IoTAmazon Web Services
 
Amazon AWS IoT 利用 AWS IoT 開發智慧家居解決方案
Amazon AWS IoT 利用 AWS IoT 開發智慧家居解決方案Amazon AWS IoT 利用 AWS IoT 開發智慧家居解決方案
Amazon AWS IoT 利用 AWS IoT 開發智慧家居解決方案CAVEDU Education
 
Programming the Physical World with Device Shadows and Rules Engine
Programming the Physical World with Device Shadows and Rules EngineProgramming the Physical World with Device Shadows and Rules Engine
Programming the Physical World with Device Shadows and Rules EngineAmazon Web Services
 
Workshop AWS IoT @ IoT World Paris
Workshop AWS IoT @ IoT World ParisWorkshop AWS IoT @ IoT World Paris
Workshop AWS IoT @ IoT World ParisJulien SIMON
 
AWS Lambda 與 Amazon API Gateway 新功能介紹
AWS Lambda 與 Amazon API Gateway 新功能介紹AWS Lambda 與 Amazon API Gateway 新功能介紹
AWS Lambda 與 Amazon API Gateway 新功能介紹Amazon Web Services
 
Working with microservices and Amazon ECS at Airtime
Working with microservices and Amazon ECS at AirtimeWorking with microservices and Amazon ECS at Airtime
Working with microservices and Amazon ECS at AirtimeAmazon Web Services
 
AWS re:Invent 2016: NEW LAUNCH! Introducing AWS Greengrass (IOT201)
AWS re:Invent 2016: NEW LAUNCH! Introducing AWS Greengrass (IOT201)AWS re:Invent 2016: NEW LAUNCH! Introducing AWS Greengrass (IOT201)
AWS re:Invent 2016: NEW LAUNCH! Introducing AWS Greengrass (IOT201)Amazon Web Services
 
Addressing Amazon Inspector Assessment Findings - September 2016 Webinar Series
Addressing Amazon Inspector Assessment Findings - September 2016 Webinar SeriesAddressing Amazon Inspector Assessment Findings - September 2016 Webinar Series
Addressing Amazon Inspector Assessment Findings - September 2016 Webinar SeriesAmazon Web Services
 
Hands-on with AWS IoT (November 2016)
Hands-on with AWS IoT (November 2016)Hands-on with AWS IoT (November 2016)
Hands-on with AWS IoT (November 2016)Julien SIMON
 

What's hot (20)

Why You Need Automated and Manual Mobile App Testing
Why You Need Automated and Manual Mobile App TestingWhy You Need Automated and Manual Mobile App Testing
Why You Need Automated and Manual Mobile App Testing
 
如何快速開發與測試App
如何快速開發與測試App如何快速開發與測試App
如何快速開發與測試App
 
Internet of Things on AWS
Internet of Things on AWSInternet of Things on AWS
Internet of Things on AWS
 
Getting Started with AWS IoT
Getting Started with AWS IoTGetting Started with AWS IoT
Getting Started with AWS IoT
 
AWS Step Functions - Dev lounge Express Edition.pdf
AWS Step Functions - Dev lounge Express Edition.pdfAWS Step Functions - Dev lounge Express Edition.pdf
AWS Step Functions - Dev lounge Express Edition.pdf
 
AWS Innovate 2016 : Opening Keynote - Glenn Gore
AWS Innovate 2016 :  Opening Keynote - Glenn GoreAWS Innovate 2016 :  Opening Keynote - Glenn Gore
AWS Innovate 2016 : Opening Keynote - Glenn Gore
 
Keynote @ IoT World Paris
Keynote @ IoT World ParisKeynote @ IoT World Paris
Keynote @ IoT World Paris
 
善用分析與推播訊息增加及留住用戶
善用分析與推播訊息增加及留住用戶善用分析與推播訊息增加及留住用戶
善用分析與推播訊息增加及留住用戶
 
iNTRODUCTION TO AWS IOT
iNTRODUCTION TO AWS IOTiNTRODUCTION TO AWS IOT
iNTRODUCTION TO AWS IOT
 
IOT203_Getting Started with AWS IoT
IOT203_Getting Started with AWS IoTIOT203_Getting Started with AWS IoT
IOT203_Getting Started with AWS IoT
 
Amazon AWS IoT 利用 AWS IoT 開發智慧家居解決方案
Amazon AWS IoT 利用 AWS IoT 開發智慧家居解決方案Amazon AWS IoT 利用 AWS IoT 開發智慧家居解決方案
Amazon AWS IoT 利用 AWS IoT 開發智慧家居解決方案
 
Introduction to AWS IoT
Introduction to AWS IoTIntroduction to AWS IoT
Introduction to AWS IoT
 
Getting Started with AWS IoT
Getting Started with AWS IoTGetting Started with AWS IoT
Getting Started with AWS IoT
 
Programming the Physical World with Device Shadows and Rules Engine
Programming the Physical World with Device Shadows and Rules EngineProgramming the Physical World with Device Shadows and Rules Engine
Programming the Physical World with Device Shadows and Rules Engine
 
Workshop AWS IoT @ IoT World Paris
Workshop AWS IoT @ IoT World ParisWorkshop AWS IoT @ IoT World Paris
Workshop AWS IoT @ IoT World Paris
 
AWS Lambda 與 Amazon API Gateway 新功能介紹
AWS Lambda 與 Amazon API Gateway 新功能介紹AWS Lambda 與 Amazon API Gateway 新功能介紹
AWS Lambda 與 Amazon API Gateway 新功能介紹
 
Working with microservices and Amazon ECS at Airtime
Working with microservices and Amazon ECS at AirtimeWorking with microservices and Amazon ECS at Airtime
Working with microservices and Amazon ECS at Airtime
 
AWS re:Invent 2016: NEW LAUNCH! Introducing AWS Greengrass (IOT201)
AWS re:Invent 2016: NEW LAUNCH! Introducing AWS Greengrass (IOT201)AWS re:Invent 2016: NEW LAUNCH! Introducing AWS Greengrass (IOT201)
AWS re:Invent 2016: NEW LAUNCH! Introducing AWS Greengrass (IOT201)
 
Addressing Amazon Inspector Assessment Findings - September 2016 Webinar Series
Addressing Amazon Inspector Assessment Findings - September 2016 Webinar SeriesAddressing Amazon Inspector Assessment Findings - September 2016 Webinar Series
Addressing Amazon Inspector Assessment Findings - September 2016 Webinar Series
 
Hands-on with AWS IoT (November 2016)
Hands-on with AWS IoT (November 2016)Hands-on with AWS IoT (November 2016)
Hands-on with AWS IoT (November 2016)
 

Viewers also liked

Building microservices in python @ pycon2017
Building microservices in python @ pycon2017Building microservices in python @ pycon2017
Building microservices in python @ pycon2017Jonas Cheng
 
初探 AWS 平台上的 Docker 服務
初探 AWS 平台上的 Docker 服務初探 AWS 平台上的 Docker 服務
初探 AWS 平台上的 Docker 服務Amazon Web Services
 
基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅Mason Mei
 
AWS ELB Tips & Best Practices
AWS ELB Tips & Best PracticesAWS ELB Tips & Best Practices
AWS ELB Tips & Best PracticesChinaNetCloud
 
使用 AWS 負載平衡服務讓您的應用程式規模化
使用 AWS 負載平衡服務讓您的應用程式規模化使用 AWS 負載平衡服務讓您的應用程式規模化
使用 AWS 負載平衡服務讓您的應用程式規模化Amazon Web Services
 
(SDD422) Amazon VPC Deep Dive | AWS re:Invent 2014
(SDD422) Amazon VPC Deep Dive | AWS re:Invent 2014(SDD422) Amazon VPC Deep Dive | AWS re:Invent 2014
(SDD422) Amazon VPC Deep Dive | AWS re:Invent 2014Amazon Web Services
 
基于Aws的持续集成、交付和部署 代闻
基于Aws的持续集成、交付和部署 代闻基于Aws的持续集成、交付和部署 代闻
基于Aws的持续集成、交付和部署 代闻Mason Mei
 
AwSome day 分享
AwSome day 分享AwSome day 分享
AwSome day 分享得翔 徐
 
AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得Cliff Chao-kuan Lu
 
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸Amazon Web Services
 
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)Amazon Web Services
 
Ovn vancouver
Ovn vancouverOvn vancouver
Ovn vancouverMason Mei
 
零到千万可扩展架构 AWS Architecture Overview
零到千万可扩展架构 AWS Architecture Overview零到千万可扩展架构 AWS Architecture Overview
零到千万可扩展架构 AWS Architecture OverviewLeon Li
 
Aws summit devops 云端多环境自动化运维和部署
Aws summit devops   云端多环境自动化运维和部署Aws summit devops   云端多环境自动化运维和部署
Aws summit devops 云端多环境自动化运维和部署Leon Li
 
如何規劃與執行大型資料中心遷移和案例分享
如何規劃與執行大型資料中心遷移和案例分享如何規劃與執行大型資料中心遷移和案例分享
如何規劃與執行大型資料中心遷移和案例分享Amazon Web Services
 
Aws容器服务详解
Aws容器服务详解Aws容器服务详解
Aws容器服务详解Leon Li
 
無伺服器架構和Containers on AWS入門
無伺服器架構和Containers on AWS入門 無伺服器架構和Containers on AWS入門
無伺服器架構和Containers on AWS入門 Amazon Web Services
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲ChinaNetCloud
 
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境Amazon Web Services
 

Viewers also liked (20)

Building microservices in python @ pycon2017
Building microservices in python @ pycon2017Building microservices in python @ pycon2017
Building microservices in python @ pycon2017
 
初探 AWS 平台上的 Docker 服務
初探 AWS 平台上的 Docker 服務初探 AWS 平台上的 Docker 服務
初探 AWS 平台上的 Docker 服務
 
基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅
 
AWS ELB Tips & Best Practices
AWS ELB Tips & Best PracticesAWS ELB Tips & Best Practices
AWS ELB Tips & Best Practices
 
使用 AWS 負載平衡服務讓您的應用程式規模化
使用 AWS 負載平衡服務讓您的應用程式規模化使用 AWS 負載平衡服務讓您的應用程式規模化
使用 AWS 負載平衡服務讓您的應用程式規模化
 
(SDD422) Amazon VPC Deep Dive | AWS re:Invent 2014
(SDD422) Amazon VPC Deep Dive | AWS re:Invent 2014(SDD422) Amazon VPC Deep Dive | AWS re:Invent 2014
(SDD422) Amazon VPC Deep Dive | AWS re:Invent 2014
 
基于Aws的持续集成、交付和部署 代闻
基于Aws的持续集成、交付和部署 代闻基于Aws的持续集成、交付和部署 代闻
基于Aws的持续集成、交付和部署 代闻
 
AwSome day 分享
AwSome day 分享AwSome day 分享
AwSome day 分享
 
AWS EC2 and ELB troubleshooting
AWS EC2 and ELB troubleshootingAWS EC2 and ELB troubleshooting
AWS EC2 and ELB troubleshooting
 
AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得
 
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
 
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
 
Ovn vancouver
Ovn vancouverOvn vancouver
Ovn vancouver
 
零到千万可扩展架构 AWS Architecture Overview
零到千万可扩展架构 AWS Architecture Overview零到千万可扩展架构 AWS Architecture Overview
零到千万可扩展架构 AWS Architecture Overview
 
Aws summit devops 云端多环境自动化运维和部署
Aws summit devops   云端多环境自动化运维和部署Aws summit devops   云端多环境自动化运维和部署
Aws summit devops 云端多环境自动化运维和部署
 
如何規劃與執行大型資料中心遷移和案例分享
如何規劃與執行大型資料中心遷移和案例分享如何規劃與執行大型資料中心遷移和案例分享
如何規劃與執行大型資料中心遷移和案例分享
 
Aws容器服务详解
Aws容器服务详解Aws容器服务详解
Aws容器服务详解
 
無伺服器架構和Containers on AWS入門
無伺服器架構和Containers on AWS入門 無伺服器架構和Containers on AWS入門
無伺服器架構和Containers on AWS入門
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
 
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
如何利用 Amazon EMR 及Athena 打造高成本效益的大數據環境
 

Similar to 以Device Shadows與Rules Engine串聯實體世界

(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules
(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules
(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & RulesAmazon Web Services
 
AWS October Webinar Series - Getting Started with AWS IoT
AWS October Webinar Series - Getting Started with AWS IoTAWS October Webinar Series - Getting Started with AWS IoT
AWS October Webinar Series - Getting Started with AWS IoTAmazon Web Services
 
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for DevicesAmazon Web Services
 
AWS IoT 핸즈온 워크샵 - 실습 3. AWS IoT Thing Shadow (김무현 솔루션즈 아키텍트)
AWS IoT 핸즈온 워크샵 - 실습 3. AWS IoT Thing Shadow (김무현 솔루션즈 아키텍트)AWS IoT 핸즈온 워크샵 - 실습 3. AWS IoT Thing Shadow (김무현 솔루션즈 아키텍트)
AWS IoT 핸즈온 워크샵 - 실습 3. AWS IoT Thing Shadow (김무현 솔루션즈 아키텍트)Amazon Web Services Korea
 
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015Amazon Web Services Korea
 
Hands-on with AWS IoT
Hands-on with AWS IoTHands-on with AWS IoT
Hands-on with AWS IoTJulien SIMON
 
AWS IoT - Introduction - Pop-up Loft
AWS IoT - Introduction - Pop-up LoftAWS IoT - Introduction - Pop-up Loft
AWS IoT - Introduction - Pop-up LoftAmazon Web Services
 
Reply Webinar Online - Mastering AWS - IoT Foundations
Reply Webinar Online - Mastering AWS - IoT FoundationsReply Webinar Online - Mastering AWS - IoT Foundations
Reply Webinar Online - Mastering AWS - IoT FoundationsAndrea Mercanti
 
AWS IoT Deep Dive - AWS IoT Web Day
AWS IoT Deep Dive - AWS IoT Web DayAWS IoT Deep Dive - AWS IoT Web Day
AWS IoT Deep Dive - AWS IoT Web DayAWS Germany
 
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivSelf Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivAmazon Web Services
 
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech TalksEssential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech TalksAmazon Web Services
 
Essential Capabilities of an IoT Cloud Platform - April 2017 AWS Online Tech ...
Essential Capabilities of an IoT Cloud Platform - April 2017 AWS Online Tech ...Essential Capabilities of an IoT Cloud Platform - April 2017 AWS Online Tech ...
Essential Capabilities of an IoT Cloud Platform - April 2017 AWS Online Tech ...Amazon Web Services
 
Scalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSScalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSFernando Rodriguez
 
Getting Started with AWS IoT - September 2016 Webinar Series
Getting Started with AWS IoT - September 2016 Webinar SeriesGetting Started with AWS IoT - September 2016 Webinar Series
Getting Started with AWS IoT - September 2016 Webinar SeriesAmazon Web Services
 
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...Amazon Web Services
 

Similar to 以Device Shadows與Rules Engine串聯實體世界 (20)

(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules
(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules
(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules
 
AWS IoT Deep Dive
AWS IoT Deep DiveAWS IoT Deep Dive
AWS IoT Deep Dive
 
AWS October Webinar Series - Getting Started with AWS IoT
AWS October Webinar Series - Getting Started with AWS IoTAWS October Webinar Series - Getting Started with AWS IoT
AWS October Webinar Series - Getting Started with AWS IoT
 
AWS IoT Webinar
AWS IoT WebinarAWS IoT Webinar
AWS IoT Webinar
 
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
 
Deep Dive on AWS IoT
Deep Dive on AWS IoTDeep Dive on AWS IoT
Deep Dive on AWS IoT
 
AWS IoT 핸즈온 워크샵 - 실습 3. AWS IoT Thing Shadow (김무현 솔루션즈 아키텍트)
AWS IoT 핸즈온 워크샵 - 실습 3. AWS IoT Thing Shadow (김무현 솔루션즈 아키텍트)AWS IoT 핸즈온 워크샵 - 실습 3. AWS IoT Thing Shadow (김무현 솔루션즈 아키텍트)
AWS IoT 핸즈온 워크샵 - 실습 3. AWS IoT Thing Shadow (김무현 솔루션즈 아키텍트)
 
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
 
Hands-on with AWS IoT
Hands-on with AWS IoTHands-on with AWS IoT
Hands-on with AWS IoT
 
AWS IoT - Introduction - Pop-up Loft
AWS IoT - Introduction - Pop-up LoftAWS IoT - Introduction - Pop-up Loft
AWS IoT - Introduction - Pop-up Loft
 
Reply Webinar Online - Mastering AWS - IoT Foundations
Reply Webinar Online - Mastering AWS - IoT FoundationsReply Webinar Online - Mastering AWS - IoT Foundations
Reply Webinar Online - Mastering AWS - IoT Foundations
 
AWS IoT Deep Dive - AWS IoT Web Day
AWS IoT Deep Dive - AWS IoT Web DayAWS IoT Deep Dive - AWS IoT Web Day
AWS IoT Deep Dive - AWS IoT Web Day
 
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivSelf Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
 
Connecting to AWS IoT
Connecting to AWS IoTConnecting to AWS IoT
Connecting to AWS IoT
 
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech TalksEssential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
Essential Capabilities of an IoT Cloud Platform - AWS Online Tech Talks
 
Essential Capabilities of an IoT Cloud Platform - April 2017 AWS Online Tech ...
Essential Capabilities of an IoT Cloud Platform - April 2017 AWS Online Tech ...Essential Capabilities of an IoT Cloud Platform - April 2017 AWS Online Tech ...
Essential Capabilities of an IoT Cloud Platform - April 2017 AWS Online Tech ...
 
What Is Happening At The Edge
What Is Happening At The EdgeWhat Is Happening At The Edge
What Is Happening At The Edge
 
Scalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSScalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWS
 
Getting Started with AWS IoT - September 2016 Webinar Series
Getting Started with AWS IoT - September 2016 Webinar SeriesGetting Started with AWS IoT - September 2016 Webinar Series
Getting Started with AWS IoT - September 2016 Webinar Series
 
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
 

More from Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

More from Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Recently uploaded

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

以Device Shadows與Rules Engine串聯實體世界

  • 1. AWS Cloud Kata for Start-Ups and Developers Hong Kong Programming the Physical World with Device Shadows and Rules Engine Dickson Yue Solutions Architect, AWS
  • 2. AWS Cloud Kata for Start-Ups and Developers Outline •  Shadows •  Rules •  Sample code •  Demo
  • 3. AWS Cloud Kata for Start-Ups and Developers AWS IoT
  • 4. AWS Cloud Kata for Start-Ups and Developers
  • 5. AWS Cloud Kata for Start-Ups and Developers Interact with with unreliable connections thing Device Shadow
  • 6. AWS Cloud Kata for Start-Ups and Developers AWS IoT Device Shadows flow Shadow Thing 7. Device Shadow confirms state change 1. Device publishes current state report {light: off} 3. App requests device’s current state get {light : off} 4. App requests change the state desire {light : on}5. Device Shadow syncs updated state delta {light : on} 6. Device publishes current state report {light : on} 2. Persist JSON data store reported {light : off} desired{light : on} reported {light : on} App
  • 7. AWS Cloud Kata for Start-Ups and Developers AWS IoT Device Shadow - Simple Yet { "state" : { “desired" : { "light": “on” }, "reported" : { "light" : “off” }, "delta" : { "light" : “on” } }, "version" : 10 } Device Report its current state to one or multiple shadows Retrieve its desired state from shadow Mobile App Set the desired state of a device Get the last reported state of the device Delete the shadow Shadow Shadow reports delta, desired and reported states along with metadata and version
  • 8. AWS Cloud Kata for Start-Ups and Developers DEMO
  • 9. AWS Cloud Kata for Start-Ups and Developers
  • 10. AWS Cloud Kata for Start-Ups and Developers http://bit.ly/iot-plb
  • 11. AWS Cloud Kata for Start-Ups and Developers http://bit.ly/iot-plb2
  • 12. AWS Cloud Kata for Start-Ups and Developers AWS IoT Device gateway reported: {temp:27, humidity: 80%} Light Amazon Alexa Service AWS Lambda Grove Light Bulb Shadow 4. Update shadow desired: {light: off} Environment Monitor 3. Switch off the light 2. Update shadow Switch 1. Sensors update MQTT MQTT over the WebSocket HTTP Alexa + Lambda $$ charged by Prices are based on the number of messages published to AWS IoT (Publishing Cost), and the number of messages delivered by AWS IoT to devices or applications (Delivery Cost). 6. Update shadow reported: {light: off}
  • 13. AWS Cloud Kata for Start-Ups and Developers Create a thing AWSREGION='us-east-1’ THINGSNAME="lightbulb02” POLICYNAME='smarthome-devices’ aws iot create-thing --thing-name $THINGSNAME --region $AWSREGION >things/thing-$THINGSNAME.json CERTARN=$(aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile ./certs/ $THINGSNAME-cert.pem --public-key-outfile ./certs/$THINGSNAME-publicKey.pem --private-key-outfile ./ certs/$THINGSNAME-privateKey.pem --output text --query 'certificateArn' --region $AWSREGION) aws iot attach-thing-principal --thing-name $THINGSNAME --principal $CERTARN --region $AWSREGION aws iot attach-principal-policy --principal $CERTARN --policy-name $POLICYNAME --region $AWSREGION aws iot list-thing-principals --thing-name $THINGSNAME --region $AWSREGION 1 2 3 4
  • 14. AWS Cloud Kata for Start-Ups and Developers AWS IoT Policy { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action":["iot:Publish"], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/home/${iot:ClientId} "] }, { "Effect": "Allow", "Action":["iot:Subscribe"], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/home/*"] }, { "Effect": "Allow",         "Action": ["iot:Connect"],         "Resource": ["*"]         } ] }
  • 15. AWS Cloud Kata for Start-Ups and Developers Load cert and private key Generate certivate with AWS IoT certfile="../../certs/grove-cert.pem", keyfile="../../certs/grove-privateKey.pem", rootCA="../../certs/root.pem” Copy the cert through SSH JITR - Just In Time Certificate Registration 1.  You will register and activate the CA certificate. 2.  Use this certificate to create and sign the certificates you will use per device. 3.  Let the device present the certificate to AWS and then activate it, i.e. through Lambda 4.  Finally, use an AWS Lambda function to notify you when a new certificate is present to AWS. It can also activate the certificate and handle any registration or initialization.
  • 16. AWS Cloud Kata for Start-Ups and Developers Connect through MQTT library import paho.mqtt.client as mqtt def init(): global client try: client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.clientid = clientid client.tls_set( "../../certs/root.pem", certfile="../../certs/grove-cert.pem", keyfile="../../certs/grove-privateKey.pem", tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None ) client.connect("data.iot.us-east-1.amazonaws.com", 8883, 10) client.loop_forever() except: print "Mqtt Unexpected error:", sys.exc_info()[0] Do not duplicate your clientid MQTT Event handler Cert, Private key, Root CA
  • 17. AWS Cloud Kata for Start-Ups and Developers Connect through Python SDK from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient def init(): global client try: client = AWSIoTMQTTClient(clientid) client.configureEndpoint(host, 8883) client.configureCredentials(rootCAPath, privateKeyPath, certificatePath) client.configureAutoReconnectBackoffTime(1, 32, 20) client.configureDrainingFrequency(2) # Draining: 2 Hz client.configureConnectDisconnectTimeout(10) # 10 sec client.configureMQTTOperationTimeout(5) # 5 sec client.connect() thingLightbulb = client.createShadowHandlerWithName(thingLightbulbName, True) thingLightbulb.shadowRegisterDeltaCallback(lightbulbShadowCallback_Delta) except: print "Unexpected error at init:", sys.exc_info()[0] Auto reconnection with progressive backoff Offline publish queue
  • 18. AWS Cloud Kata for Start-Ups and Developers Read sensor data from Grove try: [ temp,hum ] = dht(dht_sensor_port,dht_sensor_type) ppm = grovepi.analogRead(air_sensor) aq = getairquality(ppm) loudness = grovepi.analogRead(loudness_sensor) light = grovepi.analogRead(light_sensor) state = { "temp" : temp, "humidity" : hum, "lightsensorvalue" : light, "lightsensorresistance" : resistance, "ppm" : ppm, "airquality" : aq, "loudness" : loudness, "createdat" : nowstr } Extract sensor value Prepare your message
  • 19. AWS Cloud Kata for Start-Ups and Developers Update shadow through MQTT state = { "temp" : temp, "humidity" : hum, "lightsensorvalue" : light, "lightsensorresistance" : resistance, "ppm" : ppm, "airquality" : aq, "loudness" : loudness, "createdat" : nowstr } msg = { "state":{ "reported": state } } topicshadow = "$aws/things/grove/shadow/update" client.publish(topicshadow,json.dumps(msg),1) Update shadow through publish a MQTT message
  • 20. AWS Cloud Kata for Start-Ups and DevelopersAWS Cloud Kata for Start-Ups and Developers Connect through JavaScript
  • 21. AWS Cloud Kata for Start-Ups and Developers Connect through JavaScript AWS.config.region = region; AWS.config.credentials = new AWS.CognitoIdentityCredentials( { IdentityPoolId: identityPoolId } ); credentials.get( function(err) { if(err) {var requestUrl = SigV4Utils.getSignedUrl( 'wss', c.AWS.iotEndpoint, '/mqtt', 'iotdata', c.AWS.iotRegion, credentials.accessKeyId, credentials.secretAccessKey, credentials.sessionToken); initClient(requestUrl); }); Get credential through Cognito With temp access token Get signed url
  • 22. AWS Cloud Kata for Start-Ups and Developers Connect through JavaScript function initClient(requestUrl) { var clientId = String(Math.random()).replace('.', ''); var client = new Paho.MQTT.Client(requestUrl, clientId); mqttClient = client; var connectOptions = { onSuccess: function() { client.subscribe(topiclightbulb); client.subscribe(topicgrove); }, useSSL: true, timeout: 3, mqttVersion: 4, onFailure: function() { console.error('connect failed'); } }; client.connect(connectOptions); client.onConnectionLost = onConnectionLost; client.onMessageArrived = onMessageArrived; } Signed url MQTT Event handler
  • 23. AWS Cloud Kata for Start-Ups and Developers Update shadow through MQTT function updateLightShadow(state) { lightstate = state; msg = "{"state": {"desired" : { "light":"" + lightstate + "" }}}"; topicshadow = topiclightbulbUpdate; console.log(msg); mqttClient.send(topicshadow, msg); }
  • 24. AWS Cloud Kata for Start-Ups and Developers Button Control Click + Publish a msg to a topic + Rules + Trigger Lambda
  • 25. AWS Cloud Kata for Start-Ups and Developers
  • 26. AWS Cloud Kata for Start-Ups and Developers Update shadow through Lambda var AWS = require('aws-sdk'); var config = {iotendpoint: 'A1OMFFL4UASE1E.iot.us-east-1.amazonaws.com'}; var iotdata = new AWS.IotData({endpoint:config.iotendpoint}); var newstate = reported.light === "on"? "off" : "on"; var state = { "state" : { "desired" :{ "light" : newstate } } } var params = { payload: JSON.stringify(state), thingName: thingName }; iotdata.updateThingShadow(params, function(err, data) { callback(data); }); Update shadow through publish a AWS SDK Flip the switch Prepare your state
  • 27. AWS Cloud Kata for Start-Ups and Developers Voice Control Alexa + Skill + Lambda
  • 28. AWS Cloud Kata for Start-Ups and DevelopersAWS Cloud Kata for Start-Ups and Developers
  • 29. AWS Cloud Kata for Start-Ups and DevelopersAWS Cloud Kata for Start-Ups and Developers
  • 30. AWS Cloud Kata for Start-Ups and DevelopersAWS Cloud Kata for Start-Ups and Developers Bind a Lambda function with your skill
  • 31. AWS Cloud Kata for Start-Ups and Developers Update shadow through Lambda if ("AskLightControlIntent" === intentName) { handleLightControlIntent(intent, session, callback); } function handleLightControlIntent(intent, session, callback) { var switchSlot = intent.slots.Switch; var sw = ""; if(switchSlot) sw = switchSlot.value; speechOutput = "The light is now " + sw +"."; var data = sw=="on" ? LightblubShadow.on : LightblubShadow.off; var next = function(){ callback(sessionAttributes, buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession)); } updateShadow("lightbulb",JSON.stringify(data),next); Handle the corresponding intent
  • 32. AWS Cloud Kata for Start-Ups and Developers Rules engine
  • 33. AWS Cloud Kata for Start-Ups and Developers Extracting the value from messages •  Filter messages with certain criteria •  Move messages to other topics •  Move messages to other systems •  Transform the payload of messages •  Predict messages based on trends •  React based on messages
  • 34. AWS Cloud Kata for Start-Ups and Developers But how? instance database ?
  • 35. AWS Cloud Kata for Start-Ups and Developers But how? Highly available? Scalable? Easy to operate? Easy to change? Easy to implement? instance database
  • 36. AWS Cloud Kata for Start-Ups and Developers Rules Engine
  • 37. AWS Cloud Kata for Start-Ups and Developers AWS IoT rules engine predict, republish Amazon Machine Learning index archive, analyze Amazon DynamoDB AWS Lambda Amazon Redshift process
  • 38. AWS Cloud Kata for Start-Ups and Developers AWS IoT - SQL Reference SELECT DATA FROM TOPIC WHERE FILTER •  Like scanning a database table •  Default source is an MQTT topic EXAMPLES: •  FROM mqtt(‘my/topic’) •  FROM mqtt(‘my/wildcard/+/topic’) •  FROM (‘my/topic’)
  • 39. AWS Cloud Kata for Start-Ups and Developers Rules Engine •  Familiar SQL syntax •  SELECT * FROM topic WHERE filter •  Functions •  String manipulation (regex support) •  Mathematical operations •  Context based helper functions •  Crypto support •  UUID, timestamp, rand, etc. •  Execute Simultaneous Actions
  • 40. AWS Cloud Kata for Start-Ups and Developers Secure Pub/Sub broker Rules Log {1,2,3,4} Monitoring DB {1,2,3,4} Alarm {4} blue/1 {temp:15} blue/2 {temp:16} blue/3 {temp:12} blue/4 {temp:40} temp = * temp = select temp, lux temp > 30 temp = * Search {1,2,3,4}
  • 41. AWS Cloud Kata for Start-Ups and Developers DEMO
  • 42. AWS Cloud Kata for Start-Ups and Developers ES Index PUT awsiot-grove{ "mappings": { "grove": { "properties": { "temp": { "type": "double" }, "humidity": { "type": "double“ }, "lightsensorvalue": { "type": "double“ }, "lightsensorresistance": { "type": "double“ }, "createdat": { "type": "date","format" : "yyyy-MM-dd HH:mm:ss" }, "time": { "type": "date" }, "timestamp": { "type": "date" } } } } }
  • 43. AWS Cloud Kata for Start-Ups and Developers Get Started with AWS IoT Device SDK C-SDK (Ideal for embedded OS) JavaScript-SDK (Ideal for Embedded Linux Platforms) Arduino Library (Arduino Yun) Mobile SDK (Android and iOS) Java-SDKPython
  • 44. AWS Cloud Kata for Start-Ups and Developers Key take away •  Program with Shadows •  Nodejs, Python, JavaScript •  MQTT library vs AWS SDK •  Cert vs Cognito •  Message routing Rules Engine configuration •  Elasticsearch integration
  • 45. AWS Cloud Kata for Start-Ups and Developers Hong Kong Thank you