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
-
Scarica il JARfile Stream Manager SDK for Java.
-
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
-
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
-
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:
-
Apri la cartella che contiene il repository che hai clonato o scaricato nel passaggio precedente.
cd aws-greengrass-stream-manager-sdk-python
-
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
-
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
-
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\
-
Crea la ricetta del tuo componente. Nella ricetta, procedi come segue:
-
Definisci stream_manager_sdk.zip
e requirements.txt
come artefatti.
-
Definite la vostra applicazione Python come un artefatto.
-
Nel ciclo di vita dell'installazione, installa i requisiti di Stream Manager da. SDK requirements.txt
-
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
-
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
-
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:
-
Apri la cartella che contiene il repository che hai clonato o scaricato nel passaggio precedente.
cd aws-greengrass-stream-manager-sdk-js
-
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
-
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
-
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\
-
Crea la ricetta del tuo componente. Nella ricetta, procedi come segue:
-
Definisci stream-manager-sdk.zip
come artefatto.
-
Definisci la tua JavaScript applicazione come un artefatto.
-
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.
-
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.
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.