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
-
Baixe o JARarquivo Stream Manager SDK para Java.
-
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
-
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 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:
-
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 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
-
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
-
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\
-
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 SDK requisitos do Stream Manager a partir de. requirements.txt
-
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
-
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 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:
-
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 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
-
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
-
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\
-
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 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.
-
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.
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.