Crea componenti personalizzati che utilizzano stream manager - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea componenti personalizzati che utilizzano stream manager

Usa lo stream manager nei componenti Greengrass personalizzati per archiviare, elaborare ed esportare i dati dei dispositivi IoT. Utilizza le procedure e gli esempi di questa sezione per creare ricette di componenti, artefatti e applicazioni che funzionano con Stream Manager. Per ulteriori informazioni su come sviluppare e testare i componenti, vedere. Crea AWS IoT Greengrass componenti

Definisci le ricette dei componenti che utilizzano stream manager

Per utilizzare lo stream manager in un componente personalizzato, è necessario definire il aws.greengrass.StreamManager componente come dipendenza. È inoltre necessario fornire lo Stream ManagerSDK. Completa le seguenti attività per scaricare e utilizzare Stream Manager SDK nella lingua che preferisci.

Lo Stream Manager SDK per Java è disponibile come JAR file che puoi usare per compilare il tuo componente. È quindi possibile creare un'applicazione JAR che includa Stream ManagerSDK, definire l'applicazione JAR come elemento del componente ed eseguire l'applicazione JAR nel ciclo di vita del componente.

Per utilizzare Stream Manager per Java SDK
  1. Scarica il JARfile Stream Manager SDK for Java.

  2. Effettuate una delle seguenti operazioni per creare elementi dei componenti dall'applicazione Java e dal file Stream Manager SDKJAR:

    • Create l'applicazione come JAR file che include Stream Manager SDK JAR ed eseguite questo JAR file nella ricetta del componente.

    • Definite lo Stream Manager SDK JAR come elemento componente. Aggiungi quell'artefatto al classpath quando esegui l'applicazione nella ricetta del componente.

    La ricetta del componente potrebbe essere simile all'esempio seguente. Questo componente esegue una versione modificata dell'esempio StreamManagerS3.java, che StreamManagerS3.jar include 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

    Per ulteriori informazioni su come sviluppare e testare i componenti, vedereCrea AWS IoT Greengrass componenti.

Lo Stream Manager SDK per Python è disponibile come codice sorgente che puoi includere nel tuo componente. Crea un ZIP file di Stream ManagerSDK, definisci il ZIP file come elemento del componente e installa i requisiti SDK del componente nel ciclo di vita del componente.

Per usare lo Stream Manager SDK per Python
  1. Clona o scarica il repository aws-greengrass-stream-manager-sdk-python.

    git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-python.git
  2. Crea un ZIP file che contenga la stream_manager cartella, che contiene il codice sorgente di Stream Manager SDK for Python. Potete fornire questo ZIP file come elemento componente che il software AWS IoT Greengrass Core decomprime quando installa il componente. Esegui questa operazione:

    1. Apri la cartella che contiene il repository che hai clonato o scaricato nel passaggio precedente.

      cd aws-greengrass-stream-manager-sdk-python
    2. Comprimi la stream_manager cartella in un ZIP file denominato. stream_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. Verifica che il stream_manager_sdk.zip file contenga la stream_manager cartella e il suo contenuto. Esegui il comando seguente per elencare il contenuto del ZIP file.

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

      L'output visualizzato dovrebbe essere simile al seguente:

      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. Copia gli SDK artefatti di Stream Manager nella cartella artifacts del componente. Oltre al file Stream Manager, il componente utilizza il SDK ZIP requirements.txt file SDK's per installare le dipendenze dello Stream Manager. SDK Replace (Sostituisci) ~/greengrass-components con il percorso della cartella utilizzata per lo sviluppo locale.

    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. Crea la ricetta del tuo componente. Nella ricetta, procedi come segue:

    1. Definisci stream_manager_sdk.zip e requirements.txt come artefatti.

    2. Definite la vostra applicazione Python come un artefatto.

    3. Nel ciclo di vita dell'installazione, installa i requisiti di Stream Manager da. SDK requirements.txt

    4. Nel ciclo di vita di esecuzione, aggiungi Stream Manager ed SDK esegui PYTHONPATH l'applicazione Python.

    La ricetta del componente potrebbe essere simile all'esempio seguente. Questo componente esegue l'esempio 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

    Per ulteriori informazioni su come sviluppare e testare i componenti, vedereCrea AWS IoT Greengrass componenti.

Stream Manager SDK per JavaScript è disponibile come codice sorgente che puoi includere nel tuo componente. Create un ZIP file di Stream ManagerSDK, definite il ZIP file come elemento del componente e installatelo SDK nel ciclo di vita del componente.

Utilizzare lo Stream Manager per SDK JavaScript
  1. Clona o scarica il repository aws-greengrass-stream-manager-sdk-js.

    git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-js.git
  2. Crea un ZIP file che contenga la aws-greengrass-stream-manager-sdk cartella, che contiene il codice sorgente dello Stream Manager per. SDK JavaScript Potete fornire questo ZIP file come elemento componente che il software AWS IoT Greengrass Core decomprime quando installa il componente. Esegui questa operazione:

    1. Apri la cartella che contiene il repository che hai clonato o scaricato nel passaggio precedente.

      cd aws-greengrass-stream-manager-sdk-js
    2. Comprimi la aws-greengrass-stream-manager-sdk cartella in un ZIP file denominato. stream-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. Verifica che il stream-manager-sdk.zip file contenga la aws-greengrass-stream-manager-sdk cartella e il suo contenuto. Esegui il comando seguente per elencare il contenuto del ZIP file.

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

      L'output visualizzato dovrebbe essere simile al seguente:

      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. Copia l'SDKartefatto Stream Manager nella cartella artifacts del componente. Replace (Sostituisci) ~/greengrass-components con il percorso della cartella utilizzata per lo sviluppo locale.

    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. Crea la ricetta del tuo componente. Nella ricetta, procedi come segue:

    1. Definisci stream-manager-sdk.zip come artefatto.

    2. Definisci la tua JavaScript applicazione come un artefatto.

    3. Nel ciclo di vita dell'installazione, installa Stream Manager SDK dall'artefatto. stream-manager-sdk.zip Questo npm install comando crea una node_modules cartella che contiene lo Stream Manager SDK e le sue dipendenze.

    4. Nel ciclo di vita di esecuzione, aggiungi la node_modules cartella a NODE_PATH ed esegui l'applicazione. JavaScript

    La ricetta del componente potrebbe essere simile all'esempio seguente. Questo componente esegue l'esempio 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

    Per ulteriori informazioni su come sviluppare e testare i componenti, vedereCrea AWS IoT Greengrass componenti.

Connect allo stream manager nel codice dell'applicazione

Per connetterti allo stream manager nella tua applicazione, crea un'istanza di StreamManagerClient da Stream ManagerSDK. Questo client si connette al componente stream manager sulla porta predefinita 8088 o sulla porta specificata. Per ulteriori informazioni su come utilizzare StreamManagerClient dopo aver creato un'istanza, consultaUtilizzalo StreamManagerClient per lavorare con gli stream.

Esempio: Connect allo stream manager con la porta predefinita
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. }
Esempio: Connect a stream manager con una porta non predefinita

Se configuri lo stream manager con una porta diversa da quella predefinita, devi utilizzare la comunicazione tra processi per recuperare la porta dalla configurazione del componente.

Nota

Il parametro port di configurazione contiene il valore specificato STREAM_MANAGER_SERVER_PORT quando si distribuisce lo stream manager.

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.