

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ストリームマネージャーを使用するカスタムコンポーネントを作成する
<a name="use-stream-manager-in-custom-components"></a>

IoT デバイスデータを保存、処理、エクスポートするため、カスタム Greengrass コンポーネントのストリームマネージャーを使用します。このセクションの手順と例を使用して、ストリームマネージャーと連携するコンポーネントレシピ、アーティファクト、アプリケーションを作成します。コンポーネントを開発してテストする方法の詳細については、「[AWS IoT Greengrass コンポーネントを作成する](create-components.md)」を参照してください。

**Topics**
+ [ストリームマネージャーを使用するコンポーネントレシピの定義](#stream-manager-recipes)
+ [アプリケーションコードでストリームマネージャーに接続](#connect-to-stream-manager)

## ストリームマネージャーを使用するコンポーネントレシピの定義
<a name="stream-manager-recipes"></a>

カスタムコンポーネントでストリームマネージャーを使用するには、`aws.greengrass.StreamManager` コンポーネントを従属関係として定義する必要があります。ストリームマネージャー SDK も提供する必要があります。ストリームマネージャー SDK を任意の言語でダウンロードして使用するには、次のタスクを実行してください。

### Java 用ストリームマネージャー SDK の使用
<a name="use-stream-manager-sdk-java"></a>

Java 用ストリームマネージャー SDK は、コンポーネントのコンパイルに利用可能な JAR ファイルとして利用できます。次に、ストリームマネージャー SDK を含むアプリケーション JAR を作成し、アプリケーション JAR をコンポーネントアーティファクトとして定義して、コンポーネントのライフサイクルでアプリケーション JAR を実行できます。

**Java 用ストリームマネージャー SDK を使用するには**

1. [Java JAR ファイル用ストリームマネージャー SDK](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-java/blob/main/sdk/aws-greengrass-stream-manager-sdk-java.jar) をダウンロードします。

1. Java アプリケーションと ストリームマネージャー SDK JAR ファイルからコンポーネントアーティファクトを作成するため、次のいずれかを実行します:
   + ストリームマネージャー SDK JAR を含む JAR ファイルとしてアプリケーションを構築し、この JAR ファイルをコンポーネントレシピで実行します。
   + ストリームマネージャー SDK JAR をコンポーネントアーティファクトとして定義します。コンポーネントレシピでアプリケーションを実行するとき、そのアーティファクトをクラスパスに追加します。

   コンポーネントレシピは、次の例のようになります。このコンポーネントは、修正された [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` にストリームマネージャー 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 用ストリームマネージャー SDK を使用
<a name="use-stream-manager-sdk-python"></a>

Python 用ストリームマネージャー SDK は、コンポーネントに含めることが可能なソースコードとして利用できます。ストリームマネージャー SDK の ZIP ファイルを作成し、コンポーネントアーティファクトとして ZIP ファイルを定義して、コンポーネントのライフサイクルに SDK の要件をインストールします。

**Python 用ストリームマネージャー 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. Python 用ストリームマネージャー SDK のソースコードが含まれる `stream_manager` フォルダを含む ZIP ファイルを作成します。この ZIP ファイルは、 AWS IoT Greengrass Core ソフトウェアがコンポーネントのインストール時に解凍するコンポーネントアーティファクトとして提供できます。以下の操作を実行します。

   1. 前のステップでクローンまたはダウンロードしたリポジトリを含むフォルダを開きます。

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

   1. `stream_manager_sdk.zip` という名前の ZIP ファイルに `stream_manager` フォルダを圧縮します。

------
#### [ 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. ストリームマネージャー SDK アーティファクトをコンポーネントのアーティファクトフォルダにコピーします。ストリームマネージャー SDK ZIP ファイルに加えて、コンポーネントは SDK の `requirements.txt` ファイルを使用して、ストリームマネージャー 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. インストールライフサイクルで、ストリームマネージャー SDK の要件を `requirements.txt` からインストールします。

   1. 実行ライフサイクルで、ストリームマネージャー 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 用ストリームマネージャー SDK の使用
<a name="use-stream-manager-sdk-javascript"></a>

JavaScript 用ストリームマネージャー SDK は、コンポーネントに含めることが可能なソースコードとして利用できます。ストリームマネージャー SDK の ZIP ファイルを作成し、コンポーネントアーティファクトとして ZIP ファイルを定義して、コンポーネントのライフサイクルに SDK をインストールします。

**JavaScript 用ストリームマネージャー 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. JavaScript 用ストリームマネージャー SDK のソースコードが含まれる `aws-greengrass-stream-manager-sdk` フォルダを含む ZIP ファイルを作成します。この ZIP ファイルは、 AWS IoT Greengrass Core ソフトウェアがコンポーネントのインストール時に解凍するコンポーネントアーティファクトとして提供できます。以下の操作を実行します。

   1. 前のステップでクローンまたはダウンロードしたリポジトリを含むフォルダを開きます。

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

   1. `stream-manager-sdk.zip` という名前の ZIP ファイルに `aws-greengrass-stream-manager-sdk` フォルダを圧縮します。

------
#### [ 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. ストリームマネージャー 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` アーティファクトからストリームマネージャー SDK をインストールします。この `npm install` コマンドは、ストリームマネージャー SDK とその従属関係を含む `node_modules` フォルダを作成します。

   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>

アプリケーションでストリームマネージャーに接続するには、ストリームマネージャー SDK から `StreamManagerClient` のインスタンスを作成します。このクライアントは、デフォルトのポート 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.
```