

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立使用串流管理員的自訂元件
<a name="use-stream-manager-in-custom-components"></a>

在自訂 Greengrass 元件中使用串流管理員來存放、處理和匯出 IoT 裝置資料。使用本節中的程序和範例來建立與串流管理員搭配使用的元件配方、成品和應用程式。如需如何開發和測試元件的詳細資訊，請參閱 [建立 AWS IoT Greengrass 元件](create-components.md)。

**Topics**
+ [定義使用串流管理員的元件配方](#stream-manager-recipes)
+ [連線至應用程式程式碼中的串流管理員](#connect-to-stream-manager)

## 定義使用串流管理員的元件配方
<a name="stream-manager-recipes"></a>

若要在自訂元件中使用串流管理員，您必須將`aws.greengrass.StreamManager`元件定義為相依性。您也必須提供 Stream Manager SDK。完成下列任務，以您選擇的語言下載和使用 Stream Manager SDK。

### 使用適用於 Java 的 Stream Manager 開發套件
<a name="use-stream-manager-sdk-java"></a>

適用於 Java 的 Stream Manager 開發套件以 JAR 檔案提供，您可以用來編譯元件。然後，您可以建立包含 Stream Manager SDK 的應用程式 JAR、將應用程式 JAR 定義為元件成品，並在元件生命週期中執行應用程式 JAR。

**使用適用於 Java 的 Stream Manager 開發套件**

1. 下載適用於 [Java JAR 的 Stream Manager SDK 檔案](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-java/blob/main/sdk/aws-greengrass-stream-manager-sdk-java.jar)。

1. 執行下列其中一項操作，從 Java 應用程式和 Stream Manager SDK JAR 檔案建立元件成品：
   + 將應用程式建置為包含 Stream Manager SDK JAR 的 JAR 檔案，然後在元件配方中執行此 JAR 檔案。
   + 將 Stream Manager SDK JAR 定義為元件成品。當您在元件配方中執行應用程式時，請將該成品新增至 classpath。

   您的元件配方可能如下所示。此元件會執行 [StreamManagerS3.java](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-java/blob/main/samples/StreamManagerS3/src/main/java/com/amazonaws/greengrass/examples/StreamManagerS3.java) 範例的修改版本，其中 `StreamManagerS3.jar`包含 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://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
   ```

------

   如需如何開發和測試元件的詳細資訊，請參閱 [建立 AWS IoT Greengrass 元件](create-components.md)。

### 使用適用於 Python 的 Stream Manager SDK
<a name="use-stream-manager-sdk-python"></a>

適用於 Python 的 Stream Manager SDK 可作為原始程式碼提供，您可以包含在元件中。建立 Stream Manager SDK 的 ZIP 檔案、將 ZIP 檔案定義為元件成品，並在元件生命週期中安裝 SDK 的需求。

**使用適用於 Python 的 Stream Manager SDK**

1. 複製或下載 [aws-greengrass-stream-manager-sdk-python](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-python) 儲存庫。

   ```
   git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-python.git
   ```

1. 建立包含 `stream_manager` 資料夾的 ZIP 檔案，其中包含適用於 Python 的 Stream Manager SDK 的原始程式碼。您可以提供此 ZIP 檔案做為元件成品，讓 AWS IoT Greengrass Core 軟體在安裝元件時解壓縮。請執行下列操作：

   1. 開啟資料夾，其中包含您在上一個步驟中複製或下載的儲存庫。

      ```
      cd aws-greengrass-stream-manager-sdk-python
      ```

   1. 將`stream_manager`資料夾壓縮至名為 的 ZIP 檔案`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
      ```

------

   1. 確認`stream_manager_sdk.zip`檔案包含 `stream_manager` 資料夾及其內容。執行下列命令來列出 ZIP 檔案的內容。

------
#### [ Linux or Unix ]

      ```
      unzip -l stream_manager_sdk.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      ```
      tar -tf stream_manager_sdk.zip
      ```

------

      輸出應看起來如下列內容。

      ```
      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
      ```

1. 將 Stream Manager SDK 成品複製到元件的成品資料夾。除了 Stream Manager SDK ZIP 檔案，您的元件會使用 SDK `requirements.txt`的檔案來安裝 Stream Manager SDK 的相依性。將 {{\~/greengrass-components}} 取代為您用於本機開發之資料夾的路徑。

------
#### [ 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\
   ```

------

1. 建立您的元件配方。在配方中，執行下列動作：

   1. 將 `stream_manager_sdk.zip`和 `requirements.txt` 定義為成品。

   1. 將 Python 應用程式定義為成品。

   1. 在安裝生命週期中，從 安裝 Stream Manager SDK 需求`requirements.txt`。

   1. 在執行生命週期中，將 Stream Manager SDK 附加至 `PYTHONPATH`，然後執行您的 Python 應用程式。

   您的元件配方可能如下所示。此元件會執行 [stream\_manager\_s3.py ](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-python/blob/main/samples/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
   ```

------

   如需如何開發和測試元件的詳細資訊，請參閱 [建立 AWS IoT Greengrass 元件](create-components.md)。

### 使用適用於 JavaScript 的 Stream Manager SDK
<a name="use-stream-manager-sdk-javascript"></a>

適用於 JavaScript 的 Stream Manager SDK 可作為原始程式碼提供，您可以包含在元件中。建立 Stream Manager SDK 的 ZIP 檔案、將 ZIP 檔案定義為元件成品，並在元件生命週期中安裝 SDK。

**使用適用於 JavaScript 的 Stream Manager SDK**

1. 複製或下載 [aws-greengrass-stream-manager-sdk-js](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-js) 儲存庫。

   ```
   git clone git@github.com:aws-greengrass/aws-greengrass-stream-manager-sdk-js.git
   ```

1. 建立包含 `aws-greengrass-stream-manager-sdk` 資料夾的 ZIP 檔案，其中包含適用於 JavaScript 的 Stream Manager SDK 的原始程式碼。您可以提供此 ZIP 檔案做為元件成品，讓 AWS IoT Greengrass Core 軟體在安裝元件時解壓縮。請執行下列操作：

   1. 開啟資料夾，其中包含您在上一個步驟中複製或下載的儲存庫。

      ```
      cd aws-greengrass-stream-manager-sdk-js
      ```

   1. 將`aws-greengrass-stream-manager-sdk`資料夾壓縮至名為 的 ZIP 檔案`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
      ```

------

   1. 確認`stream-manager-sdk.zip`檔案包含 `aws-greengrass-stream-manager-sdk` 資料夾及其內容。執行下列命令來列出 ZIP 檔案的內容。

------
#### [ Linux or Unix ]

      ```
      unzip -l stream-manager-sdk.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      ```
      tar -tf stream-manager-sdk.zip
      ```

------

      輸出應看起來如下列內容。

      ```
      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
      ```

1. 將 Stream Manager SDK 成品複製到元件的成品資料夾。將 {{\~/greengrass-components}} 取代為您用於本機開發之資料夾的路徑。

------
#### [ 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\
   ```

------

1. 建立您的元件配方。在配方中，執行下列動作：

   1. `stream-manager-sdk.zip` 定義為成品。

   1. 將 JavaScript 應用程式定義為成品。

   1. 在安裝生命週期中，從`stream-manager-sdk.zip`成品安裝 Stream Manager SDK。此`npm install`命令會建立`node_modules`資料夾，其中包含 Stream Manager SDK 及其相依性。

   1. 在執行生命週期中，將 `node_modules` 資料夾附加至 `NODE_PATH`，然後執行 JavaScript 應用程式。

   您的元件配方可能如下所示。此元件會執行 [StreamManagerS3](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-js/blob/main/samples/StreamManagerS3/index.js) 範例。

------
#### [ 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
   ```

------

   如需如何開發和測試元件的詳細資訊，請參閱 [建立 AWS IoT Greengrass 元件](create-components.md)。

## 連線至應用程式程式碼中的串流管理員
<a name="connect-to-stream-manager"></a>

若要連線至應用程式中的串流管理員，`StreamManagerClient`請從串流管理員 SDK 建立 執行個體。此用戶端會連線至其預設連接埠 8088 上的串流管理員元件，或您指定的連接埠。如需建立執行個體`StreamManagerClient`後如何使用 的詳細資訊，請參閱 [使用 StreamManagerClient 搭配串流](work-with-streams.md)。

**Example 範例：使用預設連接埠連線至串流管理員**  

```
import com.amazonaws.greengrass.streammanager.client.StreamManagerClient;

public class MyStreamManagerComponent {

    void connectToStreamManagerWithDefaultPort() {
        StreamManagerClient client = StreamManagerClientFactory.standard().build();
        
        // Use the client.
    }
}
```

```
from stream_manager import (
    StreamManagerClient
)
              
def connect_to_stream_manager_with_default_port():
    client = StreamManagerClient()
    
    # Use the client.
```

```
const {
    StreamManagerClient
} = require('aws-greengrass-stream-manager-sdk');

function connectToStreamManagerWithDefaultPort() {
    const client = new StreamManagerClient();
    
    // Use the client.
}
```

**Example 範例：使用非預設連接埠連線至串流管理員**  
如果您使用預設以外的連接埠設定串流管理員，則必須使用[程序間通訊](interprocess-communication.md)從元件組態擷取連接埠。  
`port` 組態參數包含您在部署串流管理員`STREAM_MANAGER_SERVER_PORT`時在 中指定的值。

```
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.
}
```

```
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.
```