Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cree componentes personalizados que usen el administrador de transmisiones
Utilice el administrador de flujos en los componentes personalizados de Greengrass para almacenar, procesar y exportar datos de dispositivos de IoT. Utilice los procedimientos y ejemplos de esta sección para crear recetas de componentes, artefactos y aplicaciones que funcionen con Stream Manager. Para obtener más información sobre cómo desarrollar y probar componentes, consulteCrear AWS IoT Greengrass componentes.
Defina las recetas de componentes que utilizan el administrador de flujos
Para usar el administrador de flujos en un componente personalizado, debe definir el aws.greengrass.StreamManager
componente como una dependencia. También debe proporcionar el Stream ManagerSDK. Complete las siguientes tareas para descargar y usar el Stream Manager SDK en el idioma que prefiera.
El Stream Manager SDK para Java está disponible como un JAR archivo que puede utilizar para compilar el componente. A continuación, puede crear una aplicación JAR que incluya el Stream ManagerSDK, definir la aplicación JAR como un artefacto componente y ejecutar la aplicación durante el ciclo JAR de vida del componente.
Para usar el Stream Manager SDK para Java
-
Descargue el JARarchivo Stream Manager SDK para Java.
-
Realice una de las siguientes acciones para crear artefactos componentes a partir de la aplicación Java y el SDK JAR archivo de Stream Manager:
-
Cree su aplicación como un JAR archivo que incluya el Stream Manager SDK JAR y ejecútelo JAR en su receta de componentes.
-
Defina el Stream Manager SDK JAR como un artefacto componente. Añada ese artefacto a la ruta de clases cuando ejecute la aplicación en la receta de su componente.
La receta de su componente podría parecerse a la del siguiente ejemplo. Este componente ejecuta una versión modificada del ejemplo de StreamManagerS3.java, que StreamManagerS3.jar
incluye el 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 obtener más información sobre cómo desarrollar y probar componentes, consulteCrear AWS IoT Greengrass componentes.
El Stream Manager SDK para Python está disponible como código fuente que puede incluir en su componente. Cree un ZIP archivo del Stream ManagerSDK, defina el ZIP archivo como un artefacto componente e instale los requisitos SDK del mismo en el ciclo de vida del componente.
Para usar el Stream Manager SDK para Python
-
Clona o descarga el repositorio aws-greengrass-stream-manager-sdk-python.
git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-python.git
-
Cree un ZIP archivo que contenga la stream_manager
carpeta, que contiene el código fuente de Stream Manager SDK para Python. Puede proporcionar este ZIP archivo como un artefacto componente que el software AWS IoT Greengrass principal descomprima al instalar el componente. Haga lo siguiente:
-
Abra la carpeta que contiene el repositorio que clonó o descargó en el paso anterior.
cd aws-greengrass-stream-manager-sdk-python
-
Comprima la stream_manager
carpeta en un ZIP archivo con el nombrestream_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
-
Compruebe que el stream_manager_sdk.zip
archivo contiene la stream_manager
carpeta y su contenido. Ejecute el siguiente comando para ver el contenido del ZIP archivo.
- Linux or Unix
-
unzip -l stream_manager_sdk.zip
- Windows Command Prompt (CMD)
-
tar -tf stream_manager_sdk.zip
El resultado de debería parecerse al siguiente.
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 los SDK artefactos de Stream Manager a la carpeta de artefactos de su componente. Además del SDK ZIP archivo de Stream Manager, su componente utiliza el SDK requirements.txt
archivo para instalar las dependencias de Stream ManagerSDK. Reemplazar ~/greengrass-components
con la ruta a la carpeta que utilizas para el desarrollo 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\
-
Cree la receta de sus componentes. En la receta, haga lo siguiente:
-
Defina stream_manager_sdk.zip
y requirements.txt
como artefactos.
-
Defina su aplicación de Python como un artefacto.
-
En el ciclo de vida de la instalación, instale los SDK requisitos de Stream Manager desderequirements.txt
.
-
En el ciclo de vida de ejecución, añada el Stream Manager SDK a PYTHONPATH
la aplicación Python y ejecútela.
La receta de tus componentes podría parecerse a la del siguiente ejemplo. Este componente ejecuta el ejemplo 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 obtener más información sobre cómo desarrollar y probar componentes, consulteCrear AWS IoT Greengrass componentes.
El Stream Manager SDK for JavaScript está disponible como código fuente que puede incluir en su componente. Cree un ZIP archivo del Stream ManagerSDK, defina el ZIP archivo como un artefacto de un componente e instálelo SDK en el ciclo de vida del componente.
Para usar el Stream Manager SDK para JavaScript
-
Clona o descarga el repositorio aws-greengrass-stream-manager-sdk-js.
git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-js.git
-
Cree un ZIP archivo que contenga la aws-greengrass-stream-manager-sdk
carpeta, que contiene el código fuente del Stream Manager de. SDK JavaScript Puede proporcionar este ZIP archivo como un artefacto componente que el software AWS IoT Greengrass principal descomprimirá al instalar el componente. Haga lo siguiente:
-
Abra la carpeta que contiene el repositorio que clonó o descargó en el paso anterior.
cd aws-greengrass-stream-manager-sdk-js
-
Comprima la aws-greengrass-stream-manager-sdk
carpeta en un ZIP archivo con el nombrestream-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
-
Compruebe que el stream-manager-sdk.zip
archivo contiene la aws-greengrass-stream-manager-sdk
carpeta y su contenido. Ejecute el siguiente comando para ver el contenido del ZIP archivo.
- Linux or Unix
-
unzip -l stream-manager-sdk.zip
- Windows Command Prompt (CMD)
-
tar -tf stream-manager-sdk.zip
El resultado de debería parecerse al siguiente.
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
-
Copia el SDK artefacto de Stream Manager a la carpeta de artefactos de tu componente. Reemplazar ~/greengrass-components
con la ruta a la carpeta que utilizas para el desarrollo 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\
-
Cree la receta de sus componentes. En la receta, haga lo siguiente:
-
Definir stream-manager-sdk.zip
como un artefacto.
-
Defina su JavaScript aplicación como un artefacto.
-
En el ciclo de vida de la instalación, instala el Stream Manager SDK desde el stream-manager-sdk.zip
artefacto. Este npm
install
comando crea una node_modules
carpeta que contiene el Stream Manager SDK y sus dependencias.
-
En el ciclo de vida de ejecución, añada la node_modules
carpeta a NODE_PATH
la aplicación y JavaScript ejecútela.
La receta de sus componentes podría parecerse a la del siguiente ejemplo. Este componente ejecuta el ejemplo de 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 obtener más información sobre cómo desarrollar y probar componentes, consulteCrear AWS IoT Greengrass componentes.
Conéctese al administrador de transmisiones en el código de la aplicación
Para conectarse al administrador de transmisiones de su aplicación, cree una instancia de StreamManagerClient
desde el administrador de transmisionesSDK. Este cliente se conecta al componente del administrador de transmisiones en su puerto predeterminado 8088 o en el puerto que usted especifique. Para obtener más información sobre cómo utilizarla StreamManagerClient
después de crear una instancia, consulteSe usa StreamManagerClient para trabajar con transmisiones.
ejemplo Ejemplo: Conectarse al administrador de transmisiones con el puerto predeterminado
- 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.
}
ejemplo Ejemplo: Conectarse al administrador de transmisiones con un puerto no predeterminado
Si configura el administrador de transmisiones con un puerto que no sea el predeterminado, debe utilizar la comunicación entre procesos para recuperar el puerto de la configuración del componente.
El parámetro de port
configuración contiene el valor que se especifica STREAM_MANAGER_SERVER_PORT
al implementar 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.