Crie componentes personalizados que usam o gerenciador de fluxo - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie componentes personalizados que usam o gerenciador de fluxo

Use o gerenciador de streams em componentes personalizados do Greengrass para armazenar, processar e exportar dados de dispositivos de IoT. Use os procedimentos e exemplos desta seção para criar receitas de componentes, artefatos e aplicativos que funcionem com o gerenciador de fluxo. Para obter mais informações sobre como desenvolver e testar componentes, consulteCrie AWS IoT Greengrass componentes.

Defina receitas de componentes que usam o gerenciador de fluxo

Para usar o stream manager em um componente personalizado, você deve definir o aws.greengrass.StreamManager componente como uma dependência. Você também deve fornecer o Stream ManagerSDK. Conclua as tarefas a seguir para baixar e usar o Stream Manager SDK no idioma de sua escolha.

O Stream Manager SDK for Java está disponível como um JAR arquivo que você pode usar para compilar seu componente. Em seguida, você pode criar um aplicativo JAR que inclua o Stream ManagerSDK, definir o aplicativo JAR como um artefato de componente e executá-lo JAR no ciclo de vida do componente.

Para usar o Stream Manager SDK para Java
  1. Baixe o JARarquivo Stream Manager SDK para Java.

  2. Siga um destes procedimentos para criar artefatos de componentes a partir do seu aplicativo Java e do SDK JAR arquivo Stream Manager:

    • Crie seu aplicativo como um JAR arquivo que inclua o Stream Manager SDK JAR e execute esse JAR arquivo em sua receita de componentes.

    • Defina o Stream Manager SDK JAR como um artefato componente. Adicione esse artefato ao classpath ao executar seu aplicativo na receita do componente.

    Sua receita de componente pode ser parecida com o exemplo a seguir. Esse componente executa uma versão modificada do exemplo StreamManagerS3.java, que StreamManagerS3.jar inclui o 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

    Para obter mais informações sobre como desenvolver e testar componentes, consulteCrie AWS IoT Greengrass componentes.

O Stream Manager SDK para Python está disponível como código-fonte que você pode incluir em seu componente. Crie um ZIP arquivo do Stream ManagerSDK, defina o ZIP arquivo como um artefato de componente e instale os requisitos no ciclo SDK de vida do componente.

Para usar o Stream Manager SDK para Python
  1. Clone ou baixe o repositório aws-greengrass-stream-manager-sdk-python.

    git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-python.git
  2. Crie um ZIP arquivo que contenha a stream_manager pasta, que contém o código-fonte do Stream Manager SDK para Python. Você pode fornecer esse ZIP arquivo como um artefato de componente que o software AWS IoT Greengrass Core descompacta ao instalar seu componente. Faça o seguinte:

    1. Abra a pasta que contém o repositório que você clonou ou baixou na etapa anterior.

      cd aws-greengrass-stream-manager-sdk-python
    2. Compacte a stream_manager pasta em um ZIP arquivo chamadostream_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. Verifique se o stream_manager_sdk.zip arquivo contém a stream_manager pasta e seu conteúdo. Execute o comando a seguir para listar o conteúdo do ZIP arquivo.

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

      A saída deve ser semelhante à seguinte.

      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. Copie os SDK artefatos do Stream Manager para a pasta de artefatos do seu componente. Além do SDK ZIP arquivo Stream Manager, seu componente usa o requirements.txt arquivo SDK's para instalar as dependências do Stream ManagerSDK. Substituir ~/greengrass-components com o caminho para a pasta que você usa para o desenvolvimento local.

    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. Crie sua receita de componentes. Na receita, faça o seguinte:

    1. Defina stream_manager_sdk.zip e requirements.txt como artefatos.

    2. Defina seu aplicativo Python como um artefato.

    3. No ciclo de vida da instalação, instale os SDK requisitos do Stream Manager a partir de. requirements.txt

    4. No ciclo de vida de execução, anexe o Stream Manager SDK e execute seu aplicativo PYTHONPATH Python.

    Sua receita de componente pode ser parecida com o exemplo a seguir. Esse componente executa o exemplo 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

    Para obter mais informações sobre como desenvolver e testar componentes, consulteCrie AWS IoT Greengrass componentes.

O Stream Manager SDK for JavaScript está disponível como código-fonte que você pode incluir em seu componente. Crie um ZIP arquivo do Stream ManagerSDK, defina o ZIP arquivo como um artefato de componente e instale-o SDK no ciclo de vida do componente.

Para usar o Stream Manager SDK para JavaScript
  1. Clone ou baixe o repositório aws-greengrass-stream-manager-sdk-js.

    git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-js.git
  2. Crie um ZIP arquivo que contenha a aws-greengrass-stream-manager-sdk pasta, que contém o código-fonte do Stream Manager SDK for JavaScript. Você pode fornecer esse ZIP arquivo como um artefato de componente que o software AWS IoT Greengrass Core descompacta ao instalar seu componente. Faça o seguinte:

    1. Abra a pasta que contém o repositório que você clonou ou baixou na etapa anterior.

      cd aws-greengrass-stream-manager-sdk-js
    2. Compacte a aws-greengrass-stream-manager-sdk pasta em um ZIP arquivo chamadostream-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. Verifique se o stream-manager-sdk.zip arquivo contém a aws-greengrass-stream-manager-sdk pasta e seu conteúdo. Execute o comando a seguir para listar o conteúdo do ZIP arquivo.

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

      A saída deve ser semelhante à seguinte.

      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. Copie o SDK artefato do Stream Manager para a pasta de artefatos do seu componente. Substituir ~/greengrass-components com o caminho para a pasta que você usa para o desenvolvimento local.

    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. Crie sua receita de componentes. Na receita, faça o seguinte:

    1. Defina stream-manager-sdk.zip como um artefato.

    2. Defina seu JavaScript aplicativo como um artefato.

    3. No ciclo de vida da instalação, instale o Stream Manager a SDK partir do stream-manager-sdk.zip artefato. Esse npm install comando cria uma node_modules pasta que contém o Stream Manager SDK e suas dependências.

    4. No ciclo de vida de execução, anexe a node_modules pasta e execute seu NODE_PATH aplicativo. JavaScript

    Sua receita de componente pode ser parecida com o exemplo a seguir. Esse componente executa o exemplo do 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

    Para obter mais informações sobre como desenvolver e testar componentes, consulteCrie AWS IoT Greengrass componentes.

Conecte-se ao gerenciador de streaming no código do aplicativo

Para se conectar ao gerenciador de streams em seu aplicativo, crie uma instância StreamManagerClient do Stream ManagerSDK. Esse cliente se conecta ao componente do gerenciador de fluxo em sua porta padrão 8088 ou na porta que você especificar. Para obter mais informações sobre como usar StreamManagerClient depois de criar uma instância, consulteUse StreamManagerClient para trabalhar com streams.

exemplo Exemplo: Conecte-se ao gerenciador de streams com a porta padrão
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. }
exemplo Exemplo: Conecte-se ao gerenciador de streaming com porta não padrão

Se você configurar o stream manager com uma porta diferente da padrão, deverá usar a comunicação entre processos para recuperar a porta da configuração do componente.

nota

O parâmetro port de configuração contém o valor que você especifica STREAM_MANAGER_SERVER_PORT ao implantar o gerenciador de fluxo.

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.