---
schema_version: "1"
id: 82f63b9462e5b1b0e8d376c57afdf8acdc1b55047589c658f0129ea03e4420fa
title: PDK デバッグプレイグラウンドでのカスタムポリシーのデバッグ
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/pdk/1.2/policies-pdk-debug-local.md
canonical_url: https://docs.mulesoft.com/jp/pdk/1.2/policies-pdk-debug-local
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 5d8506d54f72b8b2a5975375e3687b9cc5fea88dc821ada0391d439b092483ca
description: MuleSoft Documentation Site
release: "1.2"
latest: false
---
# PDK デバッグプレイグラウンドでのカスタムポリシーのデバッグ

ポリシーの機能をテストできるように、Flex Gateway ポリシー開発キット (PDK) は ​`<root-directory>/playground/config`​ ディレクトリに設定済みの API インスタンスを用意しています。

PDK デバッグプレイグラウンドは、Docker コンテナのローカルモードで実行されている Flex Gateway のみをサポートします。接続モードで動作する Flex Gateway や別のプラットフォームにポリシーをデプロイする場合でも、まず Docker コンテナのローカルモードで実行されている Flex Gateway を使用して PDK でポリシーをテストしてください。

<table><tbody><tr><td class="icon"><i class="fa icon-important" title="Important"></i></td><td class="content">ポリシーの開発とテストのみが目的であれば、Windows の Docker で Flex Gateway をローカルモードで実行することもできます。ただし、Flex Gateway は本番環境では Windows をサポートしていません。</td></tr></tbody></table>

ポリシーをテストするには、次のタスクを実行します。

1. [\[before-you-begin\]](#before-you-begin)
2. [ローカルモードでの Flex Gateway インスタンスの登録](#register)
3. [\[configure-the-policy\]](#configure-the-policy)
4. [\[add-additional-policies\]](#add-additional-policies)​ (必要な場合)
5. [\[deploy-the-policy-with-pdk\]](#deploy-the-policy-with-pdk)

## [](#始める前に)始める前に

次の準備が整っていることを確認します。

- [Docker がインストールされている](https://www.docker.com/)​。
- [カスタムポリシーがコンパイルされている](https://docs.mulesoft.com/jp/pdk/1.2/policies-pdk-compile-policies)​。

## [](#register)ローカルモードでの Flex Gateway インスタンスの登録

`make run`​ コマンドを使用してカスタムポリシーのデバッグを開始するには、ローカルモードで Flex Gateway を登録します。

`run`​ コマンドが動作するためには、​`<root-directory>/playground/config`​ ディレクトリに Flex Gateway の ​`registration.yaml`​ ファイルが存在する必要があります。このディレクトリで登録コマンドを実行してこのファイルを作成するか、または以前に登録してある Flex Gateway の ​`registration.yaml`​ ファイルをこのディレクトリに移動します。

`make run`​ コマンドは Docker コンテナのローカルモードで動作する Flex Gateway のみをサポートします。Flex Gateway の登録については、以下を参照してください。

- [ユーザー名とパスワードを使用した Docker コンテナでの登録と実行](https://docs.mulesoft.com/gateway/latest/local-reg-run-up#docker)
- [接続アプリケーションを使用した Docker コンテナでの登録と実行](https://docs.mulesoft.com/gateway/latest/local-reg-run-app#docker)
- [トークンを使用した Docker コンテナでの登録と実行](https://docs.mulesoft.com/gateway/latest/local-reg-run-token#docker)

<table><tbody><tr><td class="icon"><i class="fa icon-important" title="Important"></i></td><td class="content">登録コマンドのみを実行してください。Docker の開始コマンドは、​<code>make run</code>​ コマンドがこのステップを完了するため、実行しないでください。</td></tr></tbody></table>

ポリシーをテストするデバイスごとに異なる登録ファイルを作成してください。

登録ファイルはリモートリポジトリへの保存では無視され、プロジェクトディレクトリのルートにある ​`.gitignore`​ ファイルにリストされます。

## [](#ポリシーの設定)ポリシーの設定

[policy-pdk-create-schema-definition.adoc](#policy-pdk-create-schema-definition.adoc)で設定した ​`definition/gcl.yaml`​ ファイルにリストされている設定内容によっては、ポリシーをローカルで実行する前にいくつかのパラメーターを設定する必要があります。

たとえば、​`gcl.yaml`​ ファイルが次のようになっている場合:

```yaml
apiVersion: gateway.mulesoft.com.v1alpha1
kind: Extension
metadata:
  labels:
    title: my-custom-policy
    category: Security
spec:
  extends:
    - name: extension-definition
  properties:
    user:
      type: string
      default: user1
    password:
      type: string
    description:
      type: string
  required:
    - user
    - password
```

`/playground/config/api.yaml`​ ファイルを設定値で更新します。

```yaml
apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
  name: ingress-http
spec:
  address: http://0.0.0.0:8081
  services:
    upstream:
      address: http://backend
      routes:
        - config:
            destinationPath: /anything/echo/
  policies:
    - policyRef:
        name: my-custom-policy
      config:
        password: 12345678
```

この例では、​`ユーザー名`​はデフォルト値の ​`user1`​、​`パスワード`​は ​`12345678`​ に設定され、説明は提供されません。

## [](#ポリシーの追加)ポリシーの追加

テスト用の API インスタンスにポリシーを追加して、他のポリシーと一緒にカスタムポリシーの動作をテストすることもできます。

ただし、開発中のポリシーを最初に指定する必要があります。例:

```yaml
  policies:
    - policyRef:
        name: my-custom-policy
      config:
        password: 12345678
    - policyRef:
        name: additional-policy
      config:
```

## [](#pdk-によるポリシーのデプロイ)PDK によるポリシーのデプロイ

これまでのステップを完了したら、ポリシーのルートディレクトリから ​`make run`​ コマンドを実行して、ポリシーをデプロイします。

```cmd
make run
```

このコマンドは、​`<root-directory>/playground/docker-compose.yaml`​ ファイルで 2 つの Docker コンテナを開始します。

- `Local-flex`​: カスタムポリシーを実行する Flex Gateway インスタンス Docker コンテナ。この Flex Gateway は ​`localhost:8081`​ への要求をリスンします。
- `Backend`​: Flex Gateway インスタンスのバックエンドサービスを実行する Docker コンテナ。このバックエンドサービスは、受信した要求をエコーします。

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">Docker コンテナを停止するには、コンテナを実行している端末から、使用しているデバイスに応じて ​<code>Cmd+c</code>​ または ​<code>Ctrl+c</code>​ を押します。</td></tr></tbody></table>

コンテナが動作を開始したら、API インスタンスへの要求を実行できます。例:

```cmd
curl --location --request POST 'http://0.0.0.0:8081/some/route' \
--header 'Token: mytoken'
```

バックエンドのサービスは、要求のルート、ボディ、ヘッダーを含むエコー応答を、カスタムポリシーや追加ポリシーによって実行された修正とともに返します。カスタムポリシーのソースコードに含まれるすべてのログは、コンテナが実行されている端末で表示されます。

## [](#loglevel-の設定)loglevel の設定

PDK のデバッグ環境のデフォルトでは、​`debug` ​`loglevel`​ (デバッグログレベル) が設定された状態でログが有効になっています。

`loglevel`​ を変更するには、​`<root-directory>/playground/config/logging.yaml`​ の ​`logging.runtimeLogs.logLevel`​ を編集します。

Flex Gateway のログ設定ファイルの編集についての詳細は、[Configuring External Logs for Omni Gateway in Local Mode](https://docs.mulesoft.com/gateway/latest/local-third-party-logs-config)を参照してください。

## [](#rust-デバッガーの使用)Rust デバッガーの使用

Visual Studio Code (VS Code) には、ユニットテストを実行できる Rust デバッガーが含まれています。ポリシーが Flex Gateway にデプロイされている間は、VS Code Debugger を使用できません。API のモックを作成するには、デバッグが必要なロジックに対してユニットテストを使用する必要があります。

VS Code で Rust コードをデバッグするには、 [CodeLLDB Debugger Extension](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb)​ または同じ機能の他の VS Code 拡張機能をインストールする必要があります。VS Code での Rust のデバッグについての詳細は、 [「Rust in Visual Studio Code (Visual Studio Code の Rust)」](https://code.visualstudio.com/docs/languages/rust#_debugging)​を参照してください。

## [](#関連情報)関連情報

- [インテグレーションテストの作成](https://docs.mulesoft.com/jp/pdk/1.2/policies-pdk-integration-tests)
- [PDK のトラブルシューティング](https://docs.mulesoft.com/jp/pdk/1.2/policies-pdk-troubleshooting)