# Dynamic Engine環境でジョブサイズ制限を設定

Dynamic Engine環境をサービス拒否(DoS)攻撃から保護するため、デプロイ時や実行時のジョブアーティファクトサイズに制限を設定できます。これらの制限を超えるジョブアーティファクトは自動的に削除されます。

カスタム値ファイルを作成し、Dynamic Engine環境に対して適用すれば、ジョブサイズ制限をカスタマイズできます。

## 始める前に

* dynamic-engine-crdカスタムリソース定義は、oci://ghcr.io/talend/helm/dynamic-engine-crd Helmチャートを使用してインストールされている必要があります。インストールされていない場合は、次のコマンドを実行してインストールしてください。
  1. 使用するチャートのバージョンを見つけます。

     * 次のHelmコマンドを実行します:
       ```
       helm show chart oci://ghcr.io/talend/helm/dynamic-engine-crd --version <engine_version>
       ```
     * Talend Management Consoleから直接バージョンを見るか、自分のDynamic Engineバージョンに含まれているチャートバージョンの[Dynamic Engine変更ログ](https://help.qlik.com/talend/en-US/dynamic-engine-changelog/Cloud)をチェックしてください。
     * [Dynamic Engineバージョンエンドポイント](https://talend.qlik.dev/apis/dynamic-engine/2021-03/#operation_return-all-supported-dynamic-engine-versions)へのAPIコールを使用します。

  2. 次のコマンドを実行し、目的のバージョンのHelmチャートをインストールします。

     ```
     helm install dynamic-engine-crd oci://ghcr.io/talend/helm/dynamic-engine-crd --version <helm_chart_version>
     ```

     &lt;helm\_chart\_version&gt;を、お使いのDynamic Engineバージョンでサポートされているチャートのバージョンに置換します。

     バージョンを指定しないと、利用可能な最新のdynamic-engine-crdチャートバージョンがインストールされます。
* Dynamic Engineがデプロイされている必要があります。デプロイされていない場合は、このコマンドを実行してデプロイしてください。
  ```
  helm install dynamic-engine -f <engine-id>-helm-values/<engine-id>-values.yaml oci://ghcr.io/talend/helm/dynamic-engine 
  ```

  現在のカスタマイズはDynamic Engine環境側でのみ必要であるため、これがデフォルトのデプロイメントです。このため、Dynamic Engineインスタンスにはカスタマイズは設定されません。

## 手順

1. システムをDoS攻撃から保護するため、必要なジョブサイズ制限を指定してDynamic Engine環境固有の値ファイルを作成してください。
   ### 例
   ```
   cat <<EOF > <environment-id>-custom-job-limits-values.yaml
   configuration:
     jobLimits: 
       maxZipNameLength: 240
       maxZippedEntries: 2048
       maxUnzippedSize: 1000000000
       maxUnzippedFolderNameLength: 240
       maxUnzippedFileNameLength: 240
       maxZipDepth: 64
       maxJobFileSize: 1000000000
   EOF             
   ```
2. Helmを使ってカスタム値ファイルをDynamic Engine環境に適用します。
   ```
   helm install dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID -f $DYNAMIC_ENGINE_ENVIRONMENT_ID-values.yaml  \
    -f <environment-id>-custom-job-limits-values.yaml \
    oci://ghcr.io/talend/helm/dynamic-engine-environment \
    --version $DYNAMIC_ENGINE_VERSION
   ```

   情報メモヒント: 変更が必要であれば、&lt;environment-id&gt;-custom-job-limits-values.yamlファイルのコンテンツをアップデートし、helm upgradeを実行することでその変更を適用できます:
   ```
   helm upgrade dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID -f $DYNAMIC_ENGINE_ENVIRONMENT_ID-values.yaml  \
   -f <environment-id>-custom-job-limits-values.yaml \
   oci://ghcr.io/talend/helm/dynamic-engine-environment \
   --version $DYNAMIC_ENGINE_VERSION
   ```

## タスクの結果

Dynamic Engine環境のglobal-configurationという名前のConfigMapにjobLimitsプロパティが存在することを確認します:

```
"jobLimits": {
  "maxZipNameLength": 240,
  "maxZippedEntries": 2048,
  "maxUnzippedSize": 1000000000,
  "maxUnzippedFolderNameLength": 240,
  "maxUnzippedFileNameLength": 240,
  "maxZipDepth": 64,
  "maxJobFileSize": 1000000000
}
```

これらのフィールドは、以下のサイズ制限を指定します:

* maxZipNameLength: zipファイル名の最大長。
* maxZippedEntries: zipファイルに含まれているファイルとディレクトリーの最大数。
* maxUnzippedSize: 解凍されたzipファイルの最大サイズ(バイト)。
* maxUnzippedFolderNameLength: 解凍後のフォルダー名の最大文字数。
* maxUnzippedFileNameLength: 解凍後のファイル名の最大文字数。
* maxZipDepth: 各ジョブアーティファクトzipファイル内のディレクトリーの最大ネスト化レベル。
* maxJobFileSize: アーティファクトのzipファイルの最大サイズ(バイト)。デフォルト: 1 GB (1000000000バイト)。