Buat komponen kustom yang menggunakan stream manager - AWS IoT Greengrass

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat komponen kustom yang menggunakan stream manager

Gunakan manajer pengaliran pada komponen Greengrass kustom untuk menyimpan, memproses, dan mengekspor data perangkat IoT. Gunakan prosedur dan contoh di bagian ini untuk membuat resep komponen, artefak, dan aplikasi yang bekerja dengan stream manager. Untuk informasi lebih lanjut tentang cara mengembangkan dan menguji komponen, lihat Buat AWS IoT Greengrass komponen.

Tentukan resep komponen yang menggunakan stream manager

Untuk menggunakan stream manager dalam komponen kustom, Anda harus menentukan komponen aws.greengrass.StreamManager sebagai dependensi. Anda juga harus menyediakan Stream ManagerSDK. Selesaikan tugas-tugas berikut untuk mengunduh dan menggunakan Stream Manager SDK dalam bahasa pilihan Anda.

Stream Manager SDK untuk Java tersedia sebagai JAR file yang dapat Anda gunakan untuk mengkompilasi komponen Anda. Kemudian, Anda dapat membuat aplikasi JAR yang menyertakan Stream ManagerSDK, mendefinisikan aplikasi JAR sebagai artefak komponen, dan menjalankan aplikasi JAR dalam siklus hidup komponen.

Untuk menggunakan Stream Manager SDK untuk Java
  1. Unduh Stream Manager SDK untuk JAR file Java.

  2. Lakukan salah satu hal berikut untuk membuat artefak komponen dari aplikasi Java Anda dan SDK JAR file Stream Manager:

    • Bangun aplikasi Anda sebagai JAR file yang menyertakan Stream Manager SDKJAR, dan jalankan JAR file ini dalam resep komponen Anda.

    • Tentukan Stream Manager SDK JAR sebagai artefak komponen. Tambahkan artefak itu ke classpath ketika Anda menjalankan aplikasi Anda dalam resep komponen Anda.

    Resep komponen Anda mungkin terlihat serupa dengan contoh berikut ini. Komponen ini menjalankan versi modifikasi dari contoh StreamManagerS3.java, di mana StreamManagerS3.jar menyertakan Stream Manager SDKJAR.

    JSON
    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.StreamManagerS3Java", "ComponentVersion": "1.0.0", "ComponentDescription": "Uses stream manager to upload a file to an S3 bucket.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.StreamManager": { "VersionRequirement": "^2.0.0" } }, "Manifests": [ { "Lifecycle": { "run": "java -jar {artifacts:path}/StreamManagerS3.jar" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Java/1.0.0/StreamManagerS3.jar" } ] } ] }
    YAML
    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.StreamManagerS3Java ComponentVersion: 1.0.0 ComponentDescription: Uses stream manager to upload a file to an S3 bucket. ComponentPublisher: Amazon ComponentDependencies: aws.greengrass.StreamManager: VersionRequirement: "^2.0.0" Manifests: - Lifecycle: run: java -jar {artifacts:path}/StreamManagerS3.jar Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Java/1.0.0/StreamManagerS3.jar

    Untuk informasi lebih lanjut tentang cara mengembangkan dan menguji komponen, lihat Buat AWS IoT Greengrass komponen.

Stream Manager SDK untuk Python tersedia sebagai kode sumber yang dapat Anda sertakan dalam komponen Anda. Buat ZIP file Stream ManagerSDK, tentukan ZIP file sebagai artefak komponen, dan instal persyaratan dalam siklus hidup komponen. SDK

Untuk menggunakan Stream Manager SDK untuk Python
  1. Kloning atau unduh repositori aws-greengrass-stream-manager-sdk-python.

    git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-python.git
  2. Buat ZIP file yang berisi stream_manager folder, yang berisi kode sumber Stream Manager SDK untuk Python. Anda dapat menyediakan ZIP file ini sebagai artefak komponen yang dibuka ritsletingnya oleh perangkat lunak AWS IoT Greengrass Core saat menginstal komponen Anda. Lakukan hal-hal berikut:

    1. Buka folder yang berisi repositori yang Anda kloning atau download pada langkah sebelumnya.

      cd aws-greengrass-stream-manager-sdk-python
    2. Zip stream_manager folder ke dalam ZIP file bernamastream_manager_sdk.zip.

      Linux or Unix
      zip -rv stream_manager_sdk.zip stream_manager
      Windows Command Prompt (CMD)
      tar -acvf stream_manager_sdk.zip stream_manager
      PowerShell
      Compress-Archive stream_manager stream_manager_sdk.zip
    3. Verifikasi bahwa file stream_manager_sdk.zip berisi folder stream_manager dan isinya. Jalankan perintah berikut untuk membuat daftar isi ZIP file.

      Linux or Unix
      unzip -l stream_manager_sdk.zip
      Windows Command Prompt (CMD)
      tar -tf stream_manager_sdk.zip

      Outputnya akan terlihat serupa dengan yang berikut ini:

      Archive: aws-greengrass-stream-manager-sdk-python/stream_manager.zip Length Date Time Name --------- ---------- ----- ---- 0 02-24-2021 20:45 stream_manager/ 913 02-24-2021 20:45 stream_manager/__init__.py 9719 02-24-2021 20:45 stream_manager/utilinternal.py 1412 02-24-2021 20:45 stream_manager/exceptions.py 1004 02-24-2021 20:45 stream_manager/util.py 0 02-24-2021 20:45 stream_manager/data/ 254463 02-24-2021 20:45 stream_manager/data/__init__.py 26515 02-24-2021 20:45 stream_manager/streammanagerclient.py --------- ------- 294026 8 files
  3. Salin SDK artefak Stream Manager ke folder artefak komponen Anda. Selain SDK ZIP file Stream Manager, komponen Anda menggunakan requirements.txt file untuk menginstal dependensi Stream Manager. SDK SDK Ganti ~/greengrass-components dengan jalur ke folder yang Anda gunakan untuk pengembangan lokal.

    Linux or Unix
    cp {stream_manager_sdk.zip,requirements.txt} ~/greengrass-components/artifacts/com.example.StreamManagerS3Python/1.0.0/
    Windows Command Prompt (CMD)
    robocopy . %USERPROFILE%\greengrass-components\artifacts\com.example.StreamManagerS3Python\1.0.0 stream_manager_sdk.zip robocopy . %USERPROFILE%\greengrass-components\artifacts\com.example.StreamManagerS3Python\1.0.0 requirements.txt
    PowerShell
    cp .\stream_manager_sdk.zip,.\requirements.txt ~\greengrass-components\artifacts\com.example.StreamManagerS3Python\1.0.0\
  4. Buat resep komponen Anda. Dalam resep tersebut, lakukan hal berikut:

    1. Tentukan stream_manager_sdk.zip dan requirements.txt sebagai artefak.

    2. Tentukan aplikasi Python Anda sebagai artefak.

    3. Dalam siklus hidup penginstalan, instal SDK persyaratan Stream Manager dari. requirements.txt

    4. Dalam siklus hidup run, tambahkan Stream Manager SDK kePYTHONPATH, dan jalankan aplikasi Python Anda.

    Resep komponen Anda mungkin terlihat serupa dengan contoh berikut ini. Komponen ini menjalankan contoh stream_manager_s3.py.

    JSON
    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.StreamManagerS3Python", "ComponentVersion": "1.0.0", "ComponentDescription": "Uses stream manager to upload a file to an S3 bucket.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.StreamManager": { "VersionRequirement": "^2.0.0" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": "pip3 install --user -r {artifacts:path}/requirements.txt", "run": "export PYTHONPATH=$PYTHONPATH:{artifacts:decompressedPath}/stream_manager_sdk; python3 {artifacts:path}/stream_manager_s3.py" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_sdk.zip", "Unarchive": "ZIP" }, { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_s3.py" }, { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/requirements.txt" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "install": "pip3 install --user -r {artifacts:path}/requirements.txt", "run": "set \"PYTHONPATH=%PYTHONPATH%;{artifacts:decompressedPath}/stream_manager_sdk\" & py -3 {artifacts:path}/stream_manager_s3.py" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_sdk.zip", "Unarchive": "ZIP" }, { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_s3.py" }, { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/requirements.txt" } ] } ] }
    YAML
    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.StreamManagerS3Python ComponentVersion: 1.0.0 ComponentDescription: Uses stream manager to upload a file to an S3 bucket. ComponentPublisher: Amazon ComponentDependencies: aws.greengrass.StreamManager: VersionRequirement: "^2.0.0" Manifests: - Platform: os: linux Lifecycle: install: pip3 install --user -r {artifacts:path}/requirements.txt run: | export PYTHONPATH=$PYTHONPATH:{artifacts:decompressedPath}/stream_manager_sdk python3 {artifacts:path}/stream_manager_s3.py Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_sdk.zip Unarchive: ZIP - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_s3.py - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/requirements.txt - Platform: os: windows Lifecycle: install: pip3 install --user -r {artifacts:path}/requirements.txt run: | set "PYTHONPATH=%PYTHONPATH%;{artifacts:decompressedPath}/stream_manager_sdk" py -3 {artifacts:path}/stream_manager_s3.py Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_sdk.zip Unarchive: ZIP - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_s3.py - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3Python/1.0.0/requirements.txt

    Untuk informasi lebih lanjut tentang cara mengembangkan dan menguji komponen, lihat Buat AWS IoT Greengrass komponen.

Stream Manager SDK untuk JavaScript tersedia sebagai kode sumber yang dapat Anda sertakan dalam komponen Anda. Buat ZIP file dari Stream ManagerSDK, tentukan ZIP file sebagai artefak komponen, dan instal SDK dalam siklus hidup komponen.

Untuk menggunakan Stream Manager SDK untuk JavaScript
  1. Kloning atau unduh repositori aws-greengrass-stream-manager-sdk-js.

    git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-js.git
  2. Buat ZIP file yang berisi aws-greengrass-stream-manager-sdk folder, yang berisi kode sumber Stream Manager SDK untuk JavaScript. Anda dapat menyediakan ZIP file ini sebagai artefak komponen yang dibuka ritsletingnya oleh perangkat lunak AWS IoT Greengrass Core saat menginstal komponen Anda. Lakukan hal-hal berikut:

    1. Buka folder yang berisi repositori yang Anda kloning atau download pada langkah sebelumnya.

      cd aws-greengrass-stream-manager-sdk-js
    2. Zip aws-greengrass-stream-manager-sdk folder ke dalam ZIP file bernamastream-manager-sdk.zip.

      Linux or Unix
      zip -rv stream-manager-sdk.zip aws-greengrass-stream-manager-sdk
      Windows Command Prompt (CMD)
      tar -acvf stream-manager-sdk.zip aws-greengrass-stream-manager-sdk
      PowerShell
      Compress-Archive aws-greengrass-stream-manager-sdk stream-manager-sdk.zip
    3. Verifikasi bahwa file stream-manager-sdk.zip berisi folder aws-greengrass-stream-manager-sdk dan isinya. Jalankan perintah berikut untuk membuat daftar isi ZIP file.

      Linux or Unix
      unzip -l stream-manager-sdk.zip
      Windows Command Prompt (CMD)
      tar -tf stream-manager-sdk.zip

      Outputnya akan terlihat serupa dengan yang berikut ini:

      Archive: stream-manager-sdk.zip Length Date Time Name --------- ---------- ----- ---- 0 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/ 369 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/package.json 1017 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/util.js 8374 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/utilInternal.js 1937 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/exceptions.js 0 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/data/ 353343 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/data/index.js 22599 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/client.js 216 02-24-2021 22:36 aws-greengrass-stream-manager-sdk/index.js --------- ------- 387855 9 files
  3. Salin SDK artefak Stream Manager ke folder artefak komponen Anda. Ganti ~/greengrass-components dengan jalur ke folder yang Anda gunakan untuk pengembangan lokal.

    Linux or Unix
    cp stream-manager-sdk.zip ~/greengrass-components/artifacts/com.example.StreamManagerS3JS/1.0.0/
    Windows Command Prompt (CMD)
    robocopy . %USERPROFILE%\greengrass-components\artifacts\com.example.StreamManagerS3JS\1.0.0 stream-manager-sdk.zip
    PowerShell
    cp .\stream-manager-sdk.zip ~\greengrass-components\artifacts\com.example.StreamManagerS3JS\1.0.0\
  4. Buat resep komponen Anda. Dalam resep tersebut, lakukan hal berikut:

    1. Tentukan stream-manager-sdk.zip sebagai artefak.

    2. Tentukan JavaScript aplikasi Anda sebagai artefak.

    3. Dalam siklus hidup penginstalan, instal Stream Manager SDK dari artefak. stream-manager-sdk.zip npm installPerintah ini membuat node_modules folder yang berisi Stream Manager SDK dan dependensinya.

    4. Dalam siklus hidup run, tambahkan node_modules folder keNODE_PATH, dan jalankan aplikasi Anda. JavaScript

    Resep komponen Anda mungkin terlihat serupa dengan contoh berikut ini. Komponen ini menjalankan contoh StreamManagerS3.

    JSON
    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.StreamManagerS3JS", "ComponentVersion": "1.0.0", "ComponentDescription": "Uses stream manager to upload a file to an S3 bucket.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.StreamManager": { "VersionRequirement": "^2.0.0" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": "npm install {artifacts:decompressedPath}/stream-manager-sdk/aws-greengrass-stream-manager-sdk", "run": "export NODE_PATH=$NODE_PATH:{work:path}/node_modules; node {artifacts:path}/index.js" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3JS/1.0.0/stream-manager-sdk.zip", "Unarchive": "ZIP" }, { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3JS/1.0.0/index.js" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "install": "npm install {artifacts:decompressedPath}/stream-manager-sdk/aws-greengrass-stream-manager-sdk", "run": "set \"NODE_PATH=%NODE_PATH%;{work:path}/node_modules\" & node {artifacts:path}/index.js" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3JS/1.0.0/stream-manager-sdk.zip", "Unarchive": "ZIP" }, { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.StreamManagerS3JS/1.0.0/index.js" } ] } ] }
    YAML
    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.StreamManagerS3JS ComponentVersion: 1.0.0 ComponentDescription: Uses stream manager to upload a file to an S3 bucket. ComponentPublisher: Amazon ComponentDependencies: aws.greengrass.StreamManager: VersionRequirement: "^2.0.0" Manifests: - Platform: os: linux Lifecycle: install: npm install {artifacts:decompressedPath}/stream-manager-sdk/aws-greengrass-stream-manager-sdk run: | export NODE_PATH=$NODE_PATH:{work:path}/node_modules node {artifacts:path}/index.js Artifacts: - URI: s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3JS/1.0.0/stream-manager-sdk.zip Unarchive: ZIP - URI: s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3JS/1.0.0/index.js - Platform: os: windows Lifecycle: install: npm install {artifacts:decompressedPath}/stream-manager-sdk/aws-greengrass-stream-manager-sdk run: | set "NODE_PATH=%NODE_PATH%;{work:path}/node_modules" node {artifacts:path}/index.js Artifacts: - URI: s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3JS/1.0.0/stream-manager-sdk.zip Unarchive: ZIP - URI: s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3JS/1.0.0/index.js

    Untuk informasi lebih lanjut tentang cara mengembangkan dan menguji komponen, lihat Buat AWS IoT Greengrass komponen.

Hubungkan ke manajer pengaliran dalam kode aplikasi

Untuk terhubung ke manajer streaming di aplikasi Anda, buat instance StreamManagerClient dari Stream ManagerSDK. Klien ini terhubung ke komponen stream manager pada port default 8088, atau port yang Anda tentukan. Untuk informasi lebih lanjut tentang cara menggunakan StreamManagerClient setelah Anda membuat instans, lihat Gunakan StreamManagerClient untuk bekerja dengan aliran.

contoh Contoh: Hubungkan ke manajer pengaliran dengan port default
Java
import com.amazonaws.greengrass.streammanager.client.StreamManagerClient; public class MyStreamManagerComponent { void connectToStreamManagerWithDefaultPort() { StreamManagerClient client = StreamManagerClientFactory.standard().build(); // Use the client. } }
Python
from stream_manager import ( StreamManagerClient ) def connect_to_stream_manager_with_default_port(): client = StreamManagerClient() # Use the client.
JavaScript
const { StreamManagerClient } = require('aws-greengrass-stream-manager-sdk'); function connectToStreamManagerWithDefaultPort() { const client = new StreamManagerClient(); // Use the client. }
contoh Contoh: Hubungkan ke manajer pengaliran dengan port non-default

Jika Anda mengonfigurasi stream manager dengan port selain default, Anda harus menggunakan komunikasi antar proses untuk mengambil port dari konfigurasi komponen.

catatan

Parameter konfigurasi port berisi nilai yang Anda tentukan di STREAM_MANAGER_SERVER_PORT saat Anda menggunakan manajer pengaliran.

Java
void connectToStreamManagerWithCustomPort() { EventStreamRPCConnection eventStreamRpcConnection = IPCUtils.getEventStreamRpcConnection(); GreengrassCoreIPCClient greengrassCoreIPCClient = new GreengrassCoreIPCClient(eventStreamRpcConnection); List<String> keyPath = new ArrayList<>(); keyPath.add("port"); GetConfigurationRequest request = new GetConfigurationRequest(); request.setComponentName("aws.greengrass.StreamManager"); request.setKeyPath(keyPath); GetConfigurationResponse response = greengrassCoreIPCClient.getConfiguration(request, Optional.empty()).getResponse().get(); String port = response.getValue().get("port").toString(); System.out.print("Stream Manager is running on port: " + port); final StreamManagerClientConfig config = StreamManagerClientConfig.builder() .serverInfo(StreamManagerServerInfo.builder().port(Integer.parseInt(port)).build()).build(); StreamManagerClient client = StreamManagerClientFactory.standard().withClientConfig(config).build(); // Use the client. }
Python
import awsiot.greengrasscoreipc from awsiot.greengrasscoreipc.model import ( GetConfigurationRequest ) from stream_manager import ( StreamManagerClient ) TIMEOUT = 10 def connect_to_stream_manager_with_custom_port(): # Use IPC to get the port from the stream manager component configuration. ipc_client = awsiot.greengrasscoreipc.connect() request = GetConfigurationRequest() request.component_name = "aws.greengrass.StreamManager" request.key_path = ["port"] operation = ipc_client.new_get_configuration() operation.activate(request) future_response = operation.get_response() response = future_response.result(TIMEOUT) stream_manager_port = str(response.value["port"]) # Use port to create a stream manager client. stream_client = StreamManagerClient(port=stream_manager_port) # Use the client.