Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Créez des composants personnalisés qui utilisent le gestionnaire de flux
Utilisez le gestionnaire de flux dans les composants Greengrass personnalisés pour stocker, traiter et exporter les données des appareils IoT. Utilisez les procédures et les exemples de cette section pour créer des recettes de composants, des artefacts et des applications compatibles avec le gestionnaire de flux. Pour plus d'informations sur la manière de développer et de tester des composants, consultezCréation de AWS IoT Greengrass composants.
Définissez des recettes de composants utilisant le gestionnaire de flux
Pour utiliser le gestionnaire de flux dans un composant personnalisé, vous devez définir le aws.greengrass.StreamManager
composant en tant que dépendance. Vous devez également fournir le SDK Stream Manager. Effectuez les tâches suivantes pour télécharger et utiliser le SDK Stream Manager dans la langue de votre choix.
Le SDK Stream Manager pour Java est disponible sous forme de fichier JAR que vous pouvez utiliser pour compiler votre composant. Vous pouvez ensuite créer un fichier JAR d'application qui inclut le SDK Stream Manager, définir le fichier JAR d'application en tant qu'artefact de composant et exécuter le fichier JAR d'application dans le cycle de vie du composant.
Pour utiliser le SDK Stream Manager pour Java
-
Téléchargez le fichier JAR du SDK Stream Manager pour Java.
-
Procédez de l'une des manières suivantes pour créer des artefacts de composants à partir de votre application Java et du fichier JAR du SDK Stream Manager :
-
Créez votre application sous la forme d'un fichier JAR incluant le JAR du SDK Stream Manager, et exécutez ce fichier JAR dans votre recette de composant.
-
Définissez le JAR du SDK Stream Manager en tant qu'artefact de composant. Ajoutez cet artefact au chemin de classe lorsque vous exécutez votre application dans votre recette de composant.
La recette de vos composants peut ressembler à l'exemple suivant. Ce composant exécute une version modifiée de l'exemple StreamManagerS3.java, qui StreamManagerS3.jar
inclut le JAR du SDK Stream Manager.
- 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
Pour plus d'informations sur la manière de développer et de tester des composants, consultezCréation de AWS IoT Greengrass composants.
Le SDK Stream Manager pour Python est disponible sous forme de code source que vous pouvez inclure dans votre composant. Créez un fichier ZIP du SDK Stream Manager, définissez le fichier ZIP en tant qu'artefact de composant et installez les exigences du SDK dans le cycle de vie du composant.
Pour utiliser le SDK Stream Manager pour Python
-
Clonez ou téléchargez le dépôt aws-greengrass-stream-manager-sdk-python.
git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-python.git
-
Créez un fichier ZIP contenant le stream_manager
dossier contenant le code source du SDK Stream Manager pour Python. Vous pouvez fournir ce fichier ZIP sous forme d'artefact de composant que le logiciel AWS IoT Greengrass Core décompresse lors de l'installation de votre composant. Procédez comme suit :
-
Ouvrez le dossier qui contient le référentiel que vous avez cloné ou téléchargé à l'étape précédente.
cd aws-greengrass-stream-manager-sdk-python
-
Compressez le stream_manager
dossier dans un fichier ZIP nommé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
-
Vérifiez que le stream_manager_sdk.zip
fichier contient le stream_manager
dossier et son contenu. Exécutez la commande suivante pour répertorier le contenu du fichier ZIP.
- Linux or Unix
-
unzip -l stream_manager_sdk.zip
- Windows Command Prompt (CMD)
-
tar -tf stream_manager_sdk.zip
La sortie doit ressembler à ce qui suit :
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
-
Copiez les artefacts du SDK Stream Manager dans le dossier des artefacts de votre composant. Outre le fichier ZIP du SDK Stream Manager, votre composant utilise le requirements.txt
fichier du SDK pour installer les dépendances du SDK Stream Manager. Remplacez ~/greengrass-components
par le chemin d'accès au dossier que vous utilisez pour le développement 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\
-
Créez votre recette de composants. Dans la recette, procédez comme suit :
-
Définissez stream_manager_sdk.zip
et requirements.txt
en tant qu'artefacts.
-
Définissez votre application Python comme un artefact.
-
Au cours du cycle de vie d'installation, installez les exigences du SDK Stream Manager à partir derequirements.txt
.
-
Au cours du cycle de vie d'exécution, ajoutez le SDK Stream Manager à votre PYTHONPATH
application Python et exécutez-la.
La recette de vos composants peut ressembler à l'exemple suivant. Ce composant exécute l'exemple 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
Pour plus d'informations sur la manière de développer et de tester des composants, consultezCréation de AWS IoT Greengrass composants.
Le SDK Stream Manager pour JavaScript est disponible sous forme de code source que vous pouvez inclure dans votre composant. Créez un fichier ZIP du SDK Stream Manager, définissez le fichier ZIP en tant qu'artefact de composant et installez le SDK dans le cycle de vie du composant.
Pour utiliser le SDK Stream Manager pour JavaScript
-
Clonez ou téléchargez le dépôt aws-greengrass-stream-manager-sdk-js.
git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-js.git
-
Créez un fichier ZIP contenant le aws-greengrass-stream-manager-sdk
dossier contenant le code source du SDK Stream Manager pour JavaScript. Vous pouvez fournir ce fichier ZIP sous forme d'artefact de composant que le logiciel AWS IoT Greengrass Core décompresse lors de l'installation de votre composant. Procédez comme suit :
-
Ouvrez le dossier qui contient le référentiel que vous avez cloné ou téléchargé à l'étape précédente.
cd aws-greengrass-stream-manager-sdk-js
-
Compressez le aws-greengrass-stream-manager-sdk
dossier dans un fichier ZIP nommé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
-
Vérifiez que le stream-manager-sdk.zip
fichier contient le aws-greengrass-stream-manager-sdk
dossier et son contenu. Exécutez la commande suivante pour répertorier le contenu du fichier ZIP.
- Linux or Unix
-
unzip -l stream-manager-sdk.zip
- Windows Command Prompt (CMD)
-
tar -tf stream-manager-sdk.zip
La sortie doit ressembler à ce qui suit :
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
-
Copiez l'artefact du SDK Stream Manager dans le dossier des artefacts de votre composant. Remplacez ~/greengrass-components
par le chemin d'accès au dossier que vous utilisez pour le développement 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\
-
Créez votre recette de composants. Dans la recette, procédez comme suit :
-
stream-manager-sdk.zip
Définissez-le comme un artefact.
-
Définissez votre JavaScript application comme un artefact.
-
Au cours du cycle de vie de l'installation, installez le SDK Stream Manager à partir de l'stream-manager-sdk.zip
artefact. Cette npm
install
commande crée un node_modules
dossier contenant le SDK Stream Manager et ses dépendances.
-
Dans le cycle de vie d'exécution, ajoutez le node_modules
dossier et exécutez votre JavaScript application. NODE_PATH
La recette de vos composants peut ressembler à l'exemple suivant. Ce composant exécute l'exemple 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
Pour plus d'informations sur la manière de développer et de tester des composants, consultezCréation de AWS IoT Greengrass composants.
Connectez-vous au gestionnaire de flux dans le code de l'application
Pour vous connecter au gestionnaire de flux dans votre application, créez une instance de StreamManagerClient
depuis le SDK de Stream Manager. Ce client se connecte au composant du gestionnaire de flux sur son port par défaut 8088, ou sur le port que vous spécifiez. Pour plus d'informations sur la façon de l'utiliser StreamManagerClient
après avoir créé une instance, consultez StreamManagerClient À utiliser pour travailler avec des flux.
Exemple : Connexion au gestionnaire de flux avec le port par défaut
- 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.
}
Exemple : Connexion au gestionnaire de flux avec un port autre que le port par défaut
Si vous configurez le gestionnaire de flux avec un port autre que le port par défaut, vous devez utiliser la communication interprocessus pour récupérer le port depuis la configuration du composant.
Le paramètre port
de configuration contient la valeur que vous spécifiez STREAM_MANAGER_SERVER_PORT
lorsque vous déployez le gestionnaire de flux.
- 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.