giriiş
Nesnelerin İnterneti (IoT) endüstrisi, son olarak standartlar, arayüzler ve protokollerle uyumlu cihazlara yöneliyor. Rekabetçi kalabilmek için aygıt üreticilerinin yeni özellikler yayınlaması, sistem güncellemeleri yapması ve güvenlik yamalarını zamanında dağıtması gerekir. Yazılım uygulamaları, bu güncellemelerin teslimini yönetmek için uzun süredir otomatikleştirilmiş devamlı tümleştirme ve teslim (CI/CD) işlem hatlarını kullanıyor. Sadece, IoT cihazları için dağıtımları otomatikleştirmek, uzak konumları, aralıklı bağlantıları, ağ bant genişliği ve ölçekleri şeklinde bir takım nedenden dolayı zor olsa gerek.
Bu blog gönderisinde, bir uygulamayı bir IoT aletine devamlı olarak entegre etmek ve dağıtmak için bir CI/ID ardışık düzeni sunuyoruz. İşlem hattı, uygulama dağıtımını otomatikleştirir ve IoT uygulamaları için gösterim süresini azaltır. Ardışık seviye, IoT aygıt operatörleri tarafınca ürün yazılımı güncellemeleri, komut yürütme ve güvenlik yaması dağıtımı şeklinde ölçekte yönetim görevlerini gerçekleştirmek için de kullanılabilir.
Mimariye genel bakış
Mimari, IoT aletinin bağlantısını ve kimlik doğrulamasını işlemek için AWS IoT Core’u kullanır. CI/CD işlem hattı, AWS CodePipeline kullanılarak kurulur. Ardışık seviye, bir AWS CodeCommit deposundan kaynak kodu alır ve derleme ve dağıtım adımları için AWS CodeBuild’i kullanır. AWS IoT Device Management’ın AWS IoT Jobs özelliği, IoT aletine uygulama dağıtımını yönetmek için kullanılır. İşler özelliği, AWS IoT Core’a bağlı bir yada daha çok cihazda uzaktan işlemlerin yürütülmesini sağlar. AWS IoT Device Management, uzak işlemlerin planlanması, tekrardan denenmesi ve durumunun raporlanmasıyla ilgilenir. IoT aleti, AWS IoT’den gelen iş bildirimlerine abone olmaktan mesuldür.
Biçim 1.0 IoT cihazları için CI/CD ardışık düzeni
Önkoşullar
izlenecek yol
Bu izlenecek yolda, bir IoT aletine uygulama dağıtan bir IoT İşi oluşturacak bir CI/CD ardışık düzeni kuracağız. Uygulama, yürütüldükten sonrasında IoT cihazında geçerli vakit damgasına haiz bir dosya oluşturan kolay bir bash betiğidir; 2023-05-0410-48.log.
Bir AWS CodeCommit deposu oluşturun (AWS Konsolu)
- Uygulama kaynak kodunun depolanacağı IoTApplicationRepo şeklinde bir kod havuzu oluşturun (Detaylı talimatlar için bkz. AWS CodeCommit deposu oluşturma).
- Aşağıdaki komutu kullanarak depoyu mahalli makineye getirin:
git clone codecommit://IoTApplicationRepo IoTApplicationRepo
Bir CI/CD işlem hattı oluşturun (AWS Konsolu)
Kaynak, derleme ve devreye alma olmak suretiyle üç aşamalı AWS CodePipeline kullanarak bir CI/CD ardışık düzeni oluşturun.
1. Adım: İşlem hattını oluşturun ve adlandırın
Biçim 1.1 – Ardışık seviye oluşturma
- İçinde Aşama 1: gir ardışık seviye adı. Altında Gelişmiş Ayarlar seçmek hususi konum ve yapıtlar Amazon S3 klasörünü seçin (ön koşullardan).
Biçim 1.2 – AWS Yönetilen Anahtarını Seçin
2. Adım: Kaynak aşamayı oluşturun
- İçinde 2. Adım: Kaynak aşamasını ilave edinaltında Kaynak sağlayıcıseçmek AWS CodeCommit.
- İçinde havuz adıdaha ilkin oluşturulan AWS CodeCommit deposunu seçin, mesela, IoTApplicationRepo. Şube adınagirmek usta. Seçmek Sonraki.
3. Adım: Derleme aşamasını oluşturun
- İçinde 3. Adım: Derleme aşaması ilave edin. İtibaren Yapı sağlayıcıseçmek AWS CodeBuild ve seç Proje Oluştur. Bu yeni bir pencere açacaktır.
Biçim 1.3 – Yapım aşaması
- Altında Derleme projesi oluşturgiriş Proje Adı.
- Ortam altında İşletim sistemi seçmek Amazon Linux 2.
- İçin Emek harcama zamanı(ları)seçmek standart ve için fotoğrafseçme aws/codebuild/amazonlinux2-x86_64-standart:4.0 (yada Amazon Linux 2’nin son olarak görüntüsünü kullanın).
- İçinde Ek yapılandırmaaltında Ortam Değişkenleri. ‘ değişkenini oluşturunKova‘ ve değerin altına eserler grubu adını girin.
- İçinde Yapı özelliği adı – isteğe bağlıgirmek build.yaml.
- Arkasından seçin CodePipeline’a devam et.
- Seçmek Sonraki.
- AWS CodeBuild, otomatikman adlı bir IAM hizmet görevi oluşturur. codebuild-
-hizmet görevi . Yapı yapıtlarını yapı yapıtları grubuna yüklemek için bu rolün ek izinlere ihtiyacı var. - IAM konsolunun Roller merkezine gidin ve bu görevi seçin.
- Seçmek İzin ekle ve seç Satır içi siyaset oluştur
Biçim 1.4 – Satır içi siyaset oluşturun
- İçinde İlke oluşturseçmek JSON ve içinde ne olduğu aşağıdaki politikayla değiştirin ve değiştirin senin_S3_bucket’ineserler grubu adıyla.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::your_S3_bucket/*"
}
]
}
- Seçmek İnceleme Politikası.
- İçinde İlke oluşturgir İsim ve seç İlke oluştur
- Şuraya geri git: Yeni ardışık seviye oluştur.
4. Adım: Dağıtım aşamasını atlayın
- İçinde 4. Adım: Dağıtım aşaması ilave edinseçmek Dağıtım aşamasını atla. Adım 8’de uygulamayı IoT aletine dağıtmak için AWS CodeBuild’i kullanacağız.
Biçim 1.5 – Yerleştirme aşamasını atla
5. Adım: Ardışık Düzeni İnceleyin
- İçinde 5. Adım: Gözden Geçirin sayfasında, ardışık seviye yapılandırmasını gözden geçirin ve peşinden Ardışık seviye oluştur boru hattı oluşturmak için.
- CI/CD ardışık düzeni otomatikman yürütülmeye başlamış olacak, seçin Yürütmeyi durdur -> Durdur, boru hattını durdurmak için. Boru hattı hemen hemen tamamlanmadığı için.
6. Adım: Belirlenen Amazon Identity and Access Management (IAM) rolünü oluşturun
CI/CD işlem hattı, uygulama dosyasını yapının Amazon S3 klasörüne yükleyecektir. Amazon S3 klasör nesneleri özeldir, bu yüzden AWS IoT otomatikman evvelde belirlenmiş URL’ler oluşturacak ve bu da IoT aletine uygulama dosyalarını indirmesi için süre sınırı olan müsaade edecektir (daha çok detay için AWS IoT Device Management belgelerine bakın).
Evvelde belirlenmiş URL’ler oluşturmak için AWS IoT, yapıları yapı grubundan nesneleri indirme izinlerine haiz bir IAM görevi gerektirir.
- IAM konsolunun Roller merkezine gidin ve seçin Rol oluştur.
- İçinde güvenilir varlık seçinaltında Öteki AWS hizmetleri için kullanım örnekleri seçmek nesnelerin internetive seçin Sonraki.
Biçim 1.6 – Kullanım senaristliğini seçin (IoT)
- İçinde İzin ekleseçme Sonraki.
- İçinde Rol ayrıntılarıgir Rol adı ve Seç Rol oluştur.
- Yeni oluşturulan görevi seçin ve İzin ekle -> Satır içi siyaset oluştur
- İçinde İlke oluşturseçmek JSON ve içinde ne olduğu aşağıdaki siyaset ile değiştirin ve senin_S3_bucket’ını değiştir, CI/CD yapıları grup adıyla. Seçmek İnceleme Politikası.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your_S3_bucket/*"
}
]
}
- İçinde İlke oluşturgir İsim ve Seç İlke oluştur
7. Adım: Dağıtım aşamasını oluşturun
- CodePipeline konsoluna gidin, oluşturulan işlem hattını seçin ve Düzenlemek.
- Seçmek Aşama Ekle, Düzenleme: Yapım aşaması.
Biçim 1.7 – Aşama ekle’yi seçin
- S’deetiket adıgirmek Dağıtmak ve Seç Aşama ekle.
- Seçmek Fiil Grubu Ekleiçinde İşlem Adı girmek Dağıtmak ve Fiil Sağlayıcı seçmek AWS CodeBuild.
- Altında Girdi Eseri seçmek BuildArtifact.
- Proje adı’nda şunu seçin: Proje Oluştur.
- Altında Derleme projesi oluşturgiriş Proje Adı.
- Altında Çevre içinde İşletim sistemi seçmek Amazon Linux 2.
- İçin Emek harcama zamanı(ları)seçmek standart ve için fotoğrafseçme aws/codebuild/amazonlinux2-x86_64-standart:4.0 (yada son olarak sürümü).
- İçinde Ek yapılandırmaaltında Ortam Değişkenleri.
- Değişkeni oluştur IOT_ARN ve değerin altına IoT şeyini koyun ARN (önkoşullardan).
- Değişkeni oluştur ROL ve Adım 6’dan ön IAM rolünün ARN’sini girin.
- Son olarak, değişkeni oluşturun KOVA ve CI/CD yapıları grubunun grup adını girin.
- İçinde Yapı özelliği adı – isteğe bağlıkonuşlandırma.yaml’yi girin.
- Seçme CodePipeline’a devam et ve Seç Tamamlamak.
- Seçme Kaydetmek.
8. Adım: Dağıtım aşaması IAM rolüne izinler ilave edin
- AWS CodeBuild dağıtım aşaması, otomatikman codebuild-
-service-role adlı bir IAM hizmet görevi oluşturacaktır. Bu rol, AWS IoT ile etkileşime geçmek için ek izinlere gereksinim duyar. - IAM konsolunun Roller merkezine gidin ve bu görevi seçin.
- Seçmek İzin ekle -> Satır içi siyaset oluştur
- İçinde İlke oluşturseçmek JSON ve içinde ne olduğu aşağıdaki ilke ile değiştirin ve değiştirin:
- Yer değişiklik yapmak presign_role_arn adım 6’daki ön IAM Görevi ARN’sinin URL’si ile.
- Yer değişiklik yapmak bölge Ve hesapAWS bölgesi ve AWS hesap kimliği ile.
- Yer değişiklik yapmak IoT_cihaz_adıIoT aygıt adıyla
- Yer değişiklik yapmak senin_S3_bucket’inCI/CD yapıları grup adıyla.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PassRole",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:PassRole"
],
"Resource": "presign_role_arn"
},
{
"Sid": "IoTJobPermissions",
"Effect": "Allow",
"Action": [
"iot:CreateJob"
],
"Resource": [
"arn:aws:iot:region:account_id:job/iot-device-job*",
"arn:aws:iot:region:account_id:thing/IoT_device_name"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3::: your_S3_bucket/*"
}
]
}
- Seçmek İnceleme Politikası. İçinde İlke oluşturgir İsim ve Seç İlke oluştur
Uygulamayı IoT aletine dağıtın
CI/CD ardışık düzeni tamamlandı. İşlem hattını tetiklemek için depoya dosya yükleyebiliriz.
Dosyaları havuza yükleyin (AWS CLI)
Uygulama kodu dosyası olan depoya dört dosya ilave edin uygulama.shAWS CodeBuild buildspec dosyaları build.yaml ve konuşlandırma.yamlve IoT İş belgesi.
- Mahalli depo dizinine gidin ve aşağıdaki içeriğe haiz application.sh uygulama betik dosyasını oluşturun:
#!/bin/bash
set -x
time_stamp=$(date "+%Y-%m-%d%H-%M")
filename="$time_stamp.log"
touch /home/ubuntu/$filename
sudo chmod a+rw /home/ubuntu/$filename
echo "Installing Firmware Version 1 at $time_stamp" >> /home/ubuntu/$filename
Komut dosyası, dosya adı olarak geçerli vakit damgasıyla yeni bir dosya oluşturur.
- Bir AWS CodeBuild oluşturun build.yaml dosya, aşağıdaki içeriğe haiz:
version: 0.2
phases:
build:
commands:
- echo IoT Application Build started on `date`
- sed -i "s/bucket-name/$bucket/g" deploy_instructions.json
artifacts:
files:
- '*.sh'
- 'deploy.yaml'
- 'deploy_instructions.json'
Oluşturma adımı, Amazon S3 grup adını iş belgesine ekler.
- Aşağıdaki içeriğe haiz bir AWS CodeBuild Deployment.yaml dosyası oluşturun:
version: 0.2
phases:
build:
commands:
- echo "Deploying application to the IoT device"
- time_stamp=$(date +%Y%m%d_%H%M%S)
- aws s3 cp deploy_instructions.json s3://$BUCKET/job/deploy_instructions.json
- aws s3 cp application.sh s3://$BUCKET/binaries/application.sh
- aws iot create-job --job-id iot-device-job$time_stamp --targets $IOT_ARN --document-source s3://$BUCKET/job/deploy_instructions.json --presigned-url-config roleArn=$ROLE,expiresInSec=60
Dağıtım adımı bir AWS IoT İşi oluşturur.
- Bir AWS IoT iş belgesi oluşturun konuşlandırma_instructions.jsonaşağıdaki içeriğe haiz:
{
"version": "1.0",
"steps": [
{
"action": {
"name": "Deploy Application",
"type": "runHandler",
"input": {
"handler": "bash",
"args": [
"wget -O /home/ubuntu/application.sh '${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket-name/binaries/application.sh}' && sudo chmod u+x /home/ubuntu/application.sh && sudo /home/ubuntu/application.sh"
],
"path": "/bin"
},
"runAsUser": "-c"
}
}
]
}
Belge, uygulama komut dosyasını indirmek ve yürütmek için komutlara haizdir.
- Dosyaları depoya yükleyin
git add .
git commit -m “adding files for the IoT application”
git push
Dosya yükleme, CI/CD ardışık düzenini tetikleyecektir. Dağıtım durumu, altındaki AWS IoT konsolundan görülebilir. Uzak işlemleriçinde Meslekler.
Biçim 1.8 – İşler ekranı
Temizlemek
İleride maliyet oluşmasını önlemek için bu izlenecek yolda oluşturulmuş tüm kaynakları silmeyi ihmal etmeyin.
Çözüm
Bu gönderide, IoT cihazları için otomatik uygulama dağıtım kılavuzu sunduk. Bu kılavuz, AWS IoT hizmetleri kesintili bağlantı, kimlik doğrulama ve ölçeklenebilirlik şeklinde dağıtım zorluklarını hallederken, özellikleri geliştirmeye odaklanmanıza olanak tanır. Otomasyon, geliştirme ve kontrol süresinden tutum sağlayarak yeni özelliklerin, güncellemelerin ve güvenlik yamalarının zamanında yayınlanmasına destek sağlar.
Bir sonraki adım, boru hattını kontrol etme ve seyretme şeklinde daha çok aşamayla genişletmek olacaktır. AWS IoT Device Management’ın dağıtımları iyi mi ele almış olduğu hakkında daha çok informasyon için İşler belgelerine bakın.
Yazarlar Hakkında
![]() |
![]() Syed Rehan, Amazon Web Services’ta (AWS) Kıdemli Küresel IoT Siber Güvenlik Uzmanıdır ve AWS IoT Service ekibinde çalışır ve Londra dışındadır. AWS IoT hizmetlerinin benimsenmesini sağlamak için güvenlik uzmanları, geliştiriciler ve karar vericilerle çalışan küresel alan kişi yelpazesini ele alıyor. Siber güvenlik, Nesnelerin İnterneti ve bulut hakkında derinlemesine informasyon sahibi olan Syed, bu rolde, yeni başlayanlardan işletmelere kadar uzanan küresel müşterilerle emek vererek AWS Eco sistemiyle IoT çözümleri oluşturmalarını sağlar. |
Source: aws.amazon.com