1.概述
亞馬遜云科技提供了完備的IoT服務(wù)能力,涵蓋設(shè)備服務(wù)、連接和控制服務(wù)以及云端分析服務(wù),是快速構(gòu)建安全可靠、可擴展的 IoT 平臺的常見選擇。Amazon IoT Greengrass 邊緣運行時和云服務(wù),可幫助您在設(shè)備上構(gòu)建、部署和管理 IoT 應(yīng)用。Amazon ECS Anywhere提供的混合云容器服務(wù)。
亞馬遜云科技開發(fā)者社區(qū)為開發(fā)者們提供全球的開發(fā)技術(shù)資源。這里有技術(shù)文檔、開發(fā)案例、技術(shù)專欄、培訓(xùn)視頻、活動與競賽等。幫助中國開發(fā)者對接世界最前沿技術(shù),觀點,和項目,并將中國優(yōu)秀開發(fā)者或技術(shù)推薦給全球云社區(qū)。如果你還沒有關(guān)注/收藏,看到這里請一定不要匆匆劃過,點這里讓它成為你的技術(shù)寶庫! |
本文將提出一種基于 ECS Anywhere 構(gòu)建容器化云邊統(tǒng)一管理的IoT平臺參考架構(gòu),介紹了如何利用 ECS Anywhere 在邊緣設(shè)備上容器化部署 Greengrass,并在 Greengrass 上部署組件,幫助用戶簡化 IoT 設(shè)備管理,從而構(gòu)建云邊一體的 IoT 平臺。
2.ECS Anywhere
Amazon Elastic Container Service (ECS) Anywhere 是亞馬遜云科技自研的容器管理平臺 ECS 的擴展功能,將云端的容器管理能力延伸到本地數(shù)據(jù)中心和邊緣端,是利用容器技術(shù)構(gòu)建云邊一體 IoT 平臺的理想選擇。ECS Anywhere 為用戶提供了一個完全托管的容器編排服務(wù),使客戶能夠使用與目前在 Amazon ECS 中所用的相同 API、集群管理、工作負載計劃、監(jiān)控和部署流水線在本地運行和管理容器化應(yīng)用程序。通過將服務(wù)器或?qū)嵗B接到托管 Amazon ECS 控制平面,客戶可以在自己的基礎(chǔ)設(shè)施上使用 Amazon ECS Anywhere。使用 Amazon ECS Anywhere,客戶可以在任何客戶管理的實例上部署和管理容器化應(yīng)用程序,而無需在本地手動安裝、操作和管理容器編排軟件。
3.IoT Greengrass
Amazon IoT Greengrass 邊緣運行時和云服務(wù),可幫助您在設(shè)備上構(gòu)建、部署和管理 IoT 應(yīng)用。使用 IoT Greengrass 來構(gòu)建軟件,使設(shè)備能夠?qū)ζ渖傻臄?shù)據(jù)進行本地操作,基于機器學(xué)習(xí)模型運行預(yù)測,以及過濾和聚合設(shè)備數(shù)據(jù)??蓪?Amazon 服務(wù)擴展至物理設(shè)備,以便在邊緣側(cè)操作生成的數(shù)據(jù),同時仍可將云用于管理、分析和持久存儲??纱_保設(shè)備不僅可以快速響應(yīng)本地事件,還能在連接不穩(wěn)定時正常運行??梢跃帉懽远x軟件,可在本地設(shè)備上運行的 Amazon Lambda 函數(shù)和容器應(yīng)用。Amazon IoT Greengrass 也可運行在容器中。
4.基于 ECS Anywhere 的 IoT 平臺參考架構(gòu)
在 ECS 中統(tǒng)一管理服務(wù)端和邊緣端的設(shè)備和容器任務(wù),通過 ECS Anywhere 在邊緣端容器中部署 Greengrass 和其他邊緣應(yīng)用,通過云端 IoT 控制臺管理連接 Greengrass,管理 Greengrass 中的組件和應(yīng)用。
5.構(gòu)建步驟
(本文將用一臺 EC2 服務(wù)器模擬邊緣服務(wù)器,操作系統(tǒng)為 ubuntu20,機型為 T3.large ,磁盤 EBS50G。)
使用 ECS Anywhere 在邊緣部署 IoT Greengrass 及應(yīng)用, 具體構(gòu)建步驟如下:
- 部署 ECS Anywhere
- 部署 Greengrass
- 部署應(yīng)用
5.1部署 ECS Anywhere
ECS Anywhere 部署架構(gòu)圖如下所示。
5.1.1 創(chuàng)建 ECS 集群
進入 ECS 服務(wù),點擊創(chuàng)建集群。
選擇 EC2 Linux+ 聯(lián)網(wǎng)模版。
輸入集群名,可以選擇創(chuàng)建空集群或者創(chuàng)建有實例的集群。
如果為非空集群,實例數(shù)量輸入 2,網(wǎng)絡(luò)設(shè)置可選已有 VPC 和子網(wǎng),也可以新建 VPC 。其他設(shè)置默認,點擊創(chuàng)建集群。
5.1.2 注冊邊緣服務(wù)器
進入新創(chuàng)建的 ECS 集群,選擇 ECS 實例子頁簽,點擊注冊 External 實例。
選擇實例數(shù)量,實例角色新建,點擊生成注冊命令。
復(fù)制注冊命令。
以 root 身份運行腳本將在邊緣服務(wù)器上安裝ECS代理和SSM代理。
執(zhí)行完畢后,SSM 代理和 ECS 代理將在邊緣服務(wù)器上運行,在 Amazon 控制臺 ECS 服務(wù)界面的 ECS 示例標簽可以看到注冊成功的外部實例。
5.2 部署 Greengrass
5.2.1創(chuàng)建訪問憑證
SSH登錄到邊緣服務(wù)器,創(chuàng)建 greengrass 容器中訪問 Amazon IoT Core 的訪問憑證
vi /root/.aws/credentials
輸入以下內(nèi)容,其中?<AWS_ACCESS_KEY_ID>
和?<AWS_SECRET_ACCESS_KEY>
需要替換為訪問 AK、SK,如果為臨時憑證還需要替換<AWS_SESSION_TOKEN>
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>
aws_session_token = <AWS_SESSION_TOKEN
5.2.2定義任務(wù)
進入控制臺 ECS 服務(wù)界面,從左側(cè)導(dǎo)航菜單原則任務(wù)定義,選擇創(chuàng)建新任務(wù)定義
進入控制臺 ECS 服務(wù)界面,選擇 EXTERNAL。
選擇創(chuàng)建的任務(wù)角色,網(wǎng)絡(luò)模式選擇主機。
內(nèi)存和 CPU 設(shè)置為 1024。
點擊添加卷。
在彈出頁面中添加 Amazon 訪問憑證的徑/root/.aws/credentials。
點擊添加容器,進入容器添加畫面。
輸入容器名和映像地址 public.ecr.aws/q3k3q7c1/aws-iot-greengrass-v2:latest。
輸入訪問 Amazon 憑證及 PROVISION 環(huán)境變量,值為 true。
設(shè)置存儲掛載點,選擇掛載卷,輸入容器中 Amazon 憑證的掛載路徑 /root/.aws/credentials,完成任務(wù)定義。
也可以通過 JSON 文件配置任務(wù),代碼如下。
{
"requiresCompatibilities": [
"EXTERNAL"
],
"containerDefinitions": [
{
"name": "greengrassv2",
"image": "public.ecr.aws/q3k3q7c1/aws-iot-greengrass-v2:latest",
"resourceRequirements": null,
"essential": true,
"portMappings": [],
"environment": [
{
"name": "AWS_ACCESS_KEY_ID",
"value": "<AWS_ACCESS_KEY_ID>"
},
{
"name": "AWS_SECRET_ACCESS_KEY",
"value": "<AWS_SECRET_ACCESS_KEY>"
},
{
"name": "AWS_SESSION_TOKEN",
"value": "<AWS_SESSION_TOKEN>"
},
{
"name": "AWS_REGION",
"value": "<AWS_REGION>"
},
{
"name": "PROVISION",
"value": "true"
}
],
"environmentFiles": [],
"secrets": null,
"mountPoints": [
{
"sourceVolume": "aws-credentials",
"containerPath": "/root/.aws/credentials",
"readOnly": ""
}
],
"volumesFrom": null,
"hostname": null,
"user": null,
"workingDirectory": null,
"extraHosts": null,
"logConfiguration": null,
"ulimits": null,
"dockerLabels": null,
"dependsOn": null,
"repositoryCredentials": {
"credentialsParameter": ""
}
}
],
"volumes": [
{
"host": {
"sourcePath": "/root/.aws/credentials"
},
"name": "aws-credentials"
}
],
"networkMode": "host",
"memory": "1024",
"cpu": "1024",
"placementConstraints": [],
"family": "greengrassv2",
"taskRoleArn": "arn:aws:iam::804077508687:role/ECSTaskRole",
"executionRoleArn": "arn:aws:iam::804077508687:role/ECSTaskRole",
"tags": []
}
5.2.3 運行任務(wù)
在 ECS 服務(wù)界面的任務(wù)子頁簽中,選擇運行新任務(wù)。
啟動類型選擇 EXTERNAL。
修改環(huán)境變量參數(shù)或保持任務(wù)定義的默認設(shè)置。
啟動任務(wù),可以看到任務(wù)列表里在邊緣服務(wù)器上運行新的 greengrass 任務(wù)。
在 Amazon 控制臺 IOT 的服務(wù)界面中,點擊左側(cè)導(dǎo)航菜單的Greengrass 的核心設(shè)備,可以看到剛才注冊成功的 Greengrass 核心設(shè)備。
5.3 部署示例應(yīng)用
在本地終端,編寫 Greengrass 組建 hello_world.py 腳本如下:
import sys
import datetime
message = "Hello, %s! Current time: %s." % (sys.argv[1], datetime.datetime.now())
message += " Greetings from your first Greengrass component."
# Print the message to stdout.
print(message)
# Append the message to the log file.
with open('/tmp/Greengrass_HelloWorld.log', 'a') as f:
print(message, file=f)
創(chuàng)建一個 S3存儲桶用于存放 Greengrass 組件,存儲桶名為 GREEGRASS-EXAMPLE-BUCKET。
aws s3 mb s3:// GREEGRASS-EXAMPLE-BUCKET
aws s3 cp hello_world.py \
s3://GREEGRASS-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
設(shè)置 IAM 權(quán)限,允許核心設(shè)備的 ECSTaskRole 訪問 S3 存儲桶中的組件對象。
從 Amazon 控制臺進入 IoT 服務(wù)頁面,點擊 Greengrass 設(shè)備的組件,點擊創(chuàng)建組件。
在創(chuàng)建組件頁面中,選擇 JSON 格式,輸入組件配置信息。
配置信息代碼如下:
{
"RecipeFormatVersion": "2020-01-25",
"ComponentName": "com.example.HelloWorld",
"ComponentVersion": "1.0.0",
"ComponentDescription": "My first Greengrass component.",
"ComponentPublisher": "Amazon",
"ComponentConfiguration": {
"DefaultConfiguration": {
"Message": "world"
}
},
"Manifests": [
{
"Platform": {
"os": "linux"
},
"Lifecycle": {
"Run": "python3 -u {artifacts:path}/hello_world.py '{configuration:/Message}'"
},
"Artifacts": [
{
"URI": "s3://GREENGRASS-DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py"
}
]
}
]
}
在 Iot Greengrass 導(dǎo)航菜單,點擊部署,進入部署頁面。
輸入部署名和,目標類型輸入創(chuàng)建的 Greengrass 設(shè)備名,點擊下一步。
選擇已定義的 helloworld 組件,配置策略采用默認,完成部署創(chuàng)建。
部署完成后,可以在 Greengrass 設(shè)置的組件列表中看到已安裝的組件。
SSH 登錄 Greengrass 設(shè)備,進入 Greengrass 容器,通過以下命令可以查看輸出信息。
tail -f /tmp/Greengrass_HelloWorld.log
6. 總結(jié)
本文介紹了基于 ECS Anywhere 的 IoT 平臺參考架構(gòu),利用 ECS Anywhere 在邊緣設(shè)備上容器化部署 Greengrass,并在 Greengrass 上部署組件,而從簡化邊緣設(shè)備管理和應(yīng)用部署,用戶可基于此擴展功能、構(gòu)建基于容器的云邊一體 IoT 平臺。
本篇作者
姜可
亞馬遜云科技資深解決方案架構(gòu)師,負責協(xié)助客戶業(yè)務(wù)系統(tǒng)上云的解決方案架構(gòu)設(shè)計和咨詢,現(xiàn)致力于 DevOps、IoT、機器學(xué)習(xí)相關(guān)領(lǐng)域的研究。在加入亞馬遜云科技之前,曾在金融、制造、政府等行業(yè)耕耘多年,對相關(guān)行業(yè)解決方案和架構(gòu)有很深的理解。文章來源:http://www.zghlxwxcb.cn/news/detail-629191.html
文章來源:https://dev.amazoncloud.cn/column/article/630a1502d4155422a4610a58?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN文章來源地址http://www.zghlxwxcb.cn/news/detail-629191.html
到了這里,關(guān)于使用 Amazon ECS Anywhere 在邊緣部署 Amazon IoT Greengrass的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!