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 SDK do Stream Manager. Conclua as tarefas a seguir para baixar e usar o SDK do Stream Manager no idioma de sua escolha.
O SDK do Stream Manager para Java está disponível como um arquivo JAR que você pode usar para compilar seu componente. Em seguida, você pode criar um aplicativo JAR que inclua o SDK do Stream Manager, definir o JAR do aplicativo como um artefato do componente e executar o JAR do aplicativo no ciclo de vida do componente.
Para usar o SDK do Stream Manager para Java
-
Baixe o arquivo JAR do Stream Manager SDK for Java.
-
Siga um destes procedimentos para criar artefatos de componentes do seu aplicativo Java e do arquivo JAR do SDK do Stream Manager:
-
Crie seu aplicativo como um arquivo JAR que inclua o JAR do SDK do Stream Manager e execute esse arquivo JAR na receita do componente.
-
Defina o JAR do SDK do Stream Manager como um artefato de 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 SDK JAR.
- 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://DOC-EXAMPLE-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://DOC-EXAMPLE-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 SDK do Stream Manager para Python está disponível como código-fonte que você pode incluir em seu componente. Crie um arquivo ZIP do SDK do Stream Manager, defina o arquivo ZIP como um artefato do componente e instale os requisitos do SDK no ciclo de vida do componente.
Para usar o SDK do Stream Manager para Python
-
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
-
Crie um arquivo ZIP que contenha a stream_manager
pasta, que contém o código-fonte do SDK do Stream Manager para Python. Você pode fornecer esse arquivo ZIP como um artefato de componente que o software AWS IoT Greengrass Core descompacta ao instalar seu componente. Faça o seguinte:
-
Abra a pasta que contém o repositório que você clonou ou baixou na etapa anterior.
cd aws-greengrass-stream-manager-sdk-python
-
Compacte a stream_manager
pasta em um arquivo ZIP 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
-
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 arquivo ZIP.
- 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
-
Copie os artefatos do SDK do Stream Manager para a pasta de artefatos do seu componente. Além do arquivo ZIP do SDK do Stream Manager, seu componente usa o arquivo do SDK para instalar as dependências do SDK do Stream Manager. requirements.txt
Substitua ~/greengrass-components pelo
caminho para a pasta que você usa para 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\
-
Crie sua receita de componentes. Na receita, faça o seguinte:
-
Defina stream_manager_sdk.zip
e requirements.txt
como artefatos.
-
Defina seu aplicativo Python como um artefato.
-
No ciclo de vida da instalação, instale os requisitos do SDK do Stream Manager a partir de. requirements.txt
-
No ciclo de vida de execução, anexe o SDK do Stream Manager PYTHONPATH
e execute seu aplicativo 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://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_sdk.zip",
"Unarchive": "ZIP"
},
{
"URI": "s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_s3.py"
},
{
"URI": "s3://DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_sdk.zip",
"Unarchive": "ZIP"
},
{
"URI": "s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_s3.py"
},
{
"URI": "s3://DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_sdk.zip
Unarchive: ZIP
- URI: s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_s3.py
- URI: s3://DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_sdk.zip
Unarchive: ZIP
- URI: s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.StreamManagerS3Python/1.0.0/stream_manager_s3.py
- URI: s3://DOC-EXAMPLE-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 para JavaScript está disponível como código-fonte que você pode incluir em seu componente. Crie um arquivo ZIP do SDK do Stream Manager, defina o arquivo ZIP como um artefato do componente e instale o SDK no ciclo de vida do componente.
Para usar o SDK do Stream Manager para JavaScript
-
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
-
Crie um arquivo ZIP que contenha a aws-greengrass-stream-manager-sdk
pasta, que contém o código-fonte do SDK do Stream Manager para JavaScript. Você pode fornecer esse arquivo ZIP como um artefato de componente que o software AWS IoT Greengrass Core descompacta ao instalar seu componente. Faça o seguinte:
-
Abra a pasta que contém o repositório que você clonou ou baixou na etapa anterior.
cd aws-greengrass-stream-manager-sdk-js
-
Compacte a aws-greengrass-stream-manager-sdk
pasta em um arquivo ZIP 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
-
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 arquivo ZIP.
- 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
-
Copie o artefato do SDK do Stream Manager para a pasta de artefatos do seu componente. Substitua ~/greengrass-components pelo
caminho para a pasta que você usa para 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\
-
Crie sua receita de componentes. Na receita, faça o seguinte:
-
Defina stream-manager-sdk.zip
como um artefato.
-
Defina seu JavaScript aplicativo como um artefato.
-
No ciclo de vida da instalação, instale o SDK do Stream Manager a partir do artefato. stream-manager-sdk.zip
Esse npm
install
comando cria uma node_modules
pasta que contém o SDK do Stream Manager e suas dependências.
-
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://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"
}
]
}
]
}
- 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 SDK do Stream Manager. Esse cliente se conecta ao componente do gerenciador de fluxo em sua porta padrão 8088 ou na porta especificada por você. 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.
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.