---
schema_version: "1"
id: 586d6c0224609f5b54204ff4d51bbfe5cd995d3f420ce6a8497af1bf33245c7a
title: カスタムルールセットの検証とパブリッシュ
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/api-governance/custom-rulesets-validate-and-publish.md
canonical_url: https://docs.mulesoft.com/jp/api-governance/custom-rulesets-validate-and-publish
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 361614995d6b93988790b24cb1aa83e2c03ad3ef9957d5307e61dd1f5d4fcb5a
description: MuleSoft Documentation Site
latest: true
---
# カスタムルールセットの検証とパブリッシュ

カスタムルールセットを作成した後に、次の手順を実行します。

1. ルールセットを​[検証します](#validate-ruleset)​。
2. ルールセットの​[ドキュメントを生成します](#generate-ruleset-doc)​。
3. 新しいアセットとして Exchange に​[カスタムルールセットをパブリッシュします](#publish-ruleset)​。

ルールセットを検証およびパブリッシュするためのコマンドシーケンスの例については、​[検証およびパブリッシュするサンプルコマンドシーケンス](#example-publish-sequence)​を参照してください。

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">カスタムコードや設定と同様に、ルールセットはサポートされている MuleSoft 製品とはみなされません。これらのカスタムルールセットの問題については、 <a href="https://github.com/aml-org/amf-custom-validator">AMF Custom Validator の Github リポジトリ<sup></sup></a>​に問題を投稿してください。</td></tr></tbody></table>

## [](#validate-ruleset)ルールセットを検証する

ガバナンスルールセットの作成時およびパブリッシュ前にガバナンスルールセットを検証するには、次のコマンドを使用します。

### [](#governance-ruleset-validate)governance:ruleset:validate

`> governance:ruleset:validate [フラグ] <governance-ruleset>`

このコマンドは、​`governance-ruleset`​ パラメーターを使用して渡されたルールセット定義を検証します。​`governance-ruleset`​ パラメーターとして、次のいずれかを渡すことができます。

- ルールセット定義 YAML ファイル
- ルールセットをメインファイルとして指定する ​`exchange.json`​ ファイルを使用した API プロジェクトを含む ZIP ファイル
- ルールセットをメインファイルとして指定する ​`exchange.json`​ ファイルを使用する API プロジェクトを含むフォルダー

このコマンドでは、デフォルトのフラグのみを受け入れます。

**コマンド例:**

```copy
anypoint-cli-v4 governance:ruleset:validate ~/myrulesetfolder/myruleset.yaml

anypoint-cli-v4 governance:ruleset:validate ~/myrulesetfolder/myruleset.zip

anypoint-cli-v4 governance:ruleset:validate ~/myrulesetfolder/myrulesetfolder
```

**有効なルールセットの出力例:**

Ruleset User/myuser/myrulesetfolder/myruleset.yaml
Ruleset conforms with Dialect

**無効なルールセットの出力例:**

Ruleset does not conform with Dialect
ModelId: file:///Users/myuser/myrulesetfolder/prof-1-bad.yaml
Profile: Validation Profile 1.0
Conforms: false
Number of results: 1

Level: Violation

- Constraint: http://a.ml/amf/default\_document#/declarations/profileNode\_profile\_required\_validation
  Message: Property 'profile' is mandatory
  Severity: Violation
  Target: file:///Users/myuser/myrulesetfolder/prof-1-bad.yaml#/encodes
  Property: http://schema.org/name
  Range: \[(3,0)-(11,19)\]
  Location: file:///Users/myuser/myrulesetfolder/prof-1-bad.yaml

## [](#generate-ruleset-doc)ルールセットドキュメントを生成する

次のコマンドを使用して、ルールセット YAML ファイルのドキュメント ZIP ファイルを生成します。結果のドキュメント ZIP ファイルは、​`--files.docs.zip`​ オプションを使用して Exchange アセットのアップロードで使用できます。

### [](#governance-document)governance:document

`> governance:document [フラグ] <ruleset> <doc-file>`

このコマンドは、​`ruleset`​ で指定された API Governance ルールセット定義 ZIP ファイルのドキュメントを作成します。ドキュメントを ​`doc-file`​ ZIP ファイルに含め、Exchange にアップロードしてパブリッシュできるようにします。

このコマンドでは、デフォルトのフラグのみを受け入れます。

**コマンド例:**

```copy
anypoint-cli-v4 governance:document /myrulesetfolder/mynewruleset.yaml /myrulesetfolder/ruleset.doc.zip
```

**出力例:**

validation name \[ 'security-fields-operation-empty' \]
validation name \[ 'access-tokens-oauth2-cleartext' \]
validation name \[ 'insecure-oauth2-grants' \]
validation name \[ 'api-keys-in-cookie' \]
validation name \[ 'api-keys-in-query' \]
validation name \[ 'api-keys-in-header' \]
validation name \[ 'api-negotiates-authentication' \]
validation name \[ 'insecure-basic-auth' \]
validation name \[ 'bearer-token-cleartext' \]
validation name \[ 'http-token-cleartext' \]
validation name \[ 'oauth1-deprecated' \]
validation name \[ 'oauth2-redirections-non-encrypted' \]
validation name \[ 'unknown-security-scheme' \]
validation name \[ 'valid-server-urltemplate' \]
validation name \[ 'valid-oauth2-redirection-urls' \]
Saving to myRulesetFolder/ruleset.doc.zip

## [](#publish-ruleset)カスタムルールセットをパブリッシュする

Anypoint CLI を使用して、ルールセットとそのドキュメントを Exchange にパブリッシュ (アップロード) できます。Exchange UI を使用してルールセットアセットをアップロードすることはできません。

次のコマンドを使用して、ルールセットとそのドキュメントを Exchange にアップロードします。

### [](#exchange-asset-upload)exchange:asset:upload

\> exchange:asset:upload \[flags\] <assetIdentifier>

このコマンドでは、​`<assetIdentifier>`​ で渡される ID を使用して、rest-api、soap-api、http-api、raml-fragment、custom、app、template、example、policy、extension、external-library、connector アセット、または ruleset をアップロードします。

_assetIdentifier_​ 引数には次の形式を使用します。

`([​_groupID_​]/)​_assetID_​/_version_`

_group\_id_ が指定されていない場合、現在選択されている組織 ID がデフォルトに設定されます。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">フラグ</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--name</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アセット名 (pom ファイルが指定されていない場合に必要)</p>
</div>
<div class="paragraph">
<p>次に例を示します。</p>
</div>
<div class="paragraph">
<p><code>exchange:asset:upload --name "Raml Asset" --description "RAML"  --properties='{"apiVersion":"v1", "mainFile": "api.raml"}' --files='{"raml.zip":"​/file-path/raml.zip"}'</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--description</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アセットの説明</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--properties</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アセットプロパティ</p>
</div>
<div class="paragraph">
<p>次に例を示します。</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>--properties='{"mainFile":"main.raml"}'</code></p>
</li>
<li>
<p><code>--properties='{"apiVersion":"v1"}'</code></p>
</li>
<li>
<p><code>--properties='{"assetLink":"http://api.com"}'</code></p>
</li>
<li>
<p><code>--properties='{"mainFile":"main.raml","apiVersion":"v1","assetLink":"http://api.com","contactEmail":"<a href="mailto:api@mulesoft.com">api@mulesoft.com</a>","contactName":"Marc"}'</code></p>
</li>
</ul>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--files</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アセットファイル (​<code>classifier.packaging</code>​ または ​<code>packaging</code>​ とそのファイルパスとして識別される。) 例: <code>--files='{"oas.zip":"​/my-api.raml"}'</code></p>
</div>
<div class="paragraph">
<p>複数のファイルを送信するには通常、同じフラグを複数回使用します。</p>
</div>
<div class="paragraph">
<p><code>--files='{"oas.zip": "my-demo-oas.zip"}' --files='{"custom.zip": "~/my-custom-file.zip"}'</code>​</p>
</div>
<div class="paragraph">
<p>ルールセットを含むルールセットドキュメントをアップロードする場合は例外です。分類子とパッケージ化オプションの両方のセットを 1 つの ​<code>--files</code>​ フラグに入力する必要があります。</p>
</div>
<div class="paragraph">
<p><code>--files='{"ruleset.yaml":"/myRulesetFolder/mynewruleset.yaml","docs.zip":"/myRulesetFolder/ruleset.doc.zip"}'</code></p>
</div>
<div class="paragraph">
<p>例:</p>
</div>
<div class="paragraph">
<p>POM ファイルと RAML 仕様をアップロードする:</p>
</div>
<div class="paragraph">
<p><code>exchange:asset:upload --files'{"pom.xml": "directory/pom-file.xml"}' --files='{"raml.raml": "./my-api.raml"}'</code>​</p>
</div>
<div class="paragraph">
<p>ルールセットとそのドキュメントをアップロードする:</p>
</div>
<div class="paragraph">
<p><code>anypoint-cli-v4 exchange asset upload my-auth-best-practices/1.0.0 --name "My Best Practices Ruleset" --description "This ruleset enforces my best practices for APIs." --files='{"ruleset.yaml":"/myRulesetFolder/mynewruleset.yaml","docs.zip":"/myRulesetFolder/ruleset.doc.zip"}'</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--type</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アセットタイプ</p>
</div>
<div class="paragraph">
<p>ファイルが指定されていない場合に必要です。</p>
</div>
<div class="paragraph">
<p>サポートされる値:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>rest-api</code>​</p>
</li>
<li>
<p><code>soap-api</code>​</p>
</li>
<li>
<p><code>http-api</code>​</p>
</li>
<li>
<p><code>raml-fragment</code>​</p>
</li>
<li>
<p><code>custom</code>​</p>
</li>
<li>
<p><code>connector</code>​</p>
</li>
<li>
<p><code>template</code>​</p>
</li>
<li>
<p><code>example</code>​</p>
</li>
<li>
<p><code>policy</code>​</p>
</li>
<li>
<p><code>app</code>​</p>
</li>
<li>
<p><code>extension</code>​</p>
</li>
<li>
<p><code>external-library</code>​</p>
</li>
<li>
<p><code>ruleset</code>​</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>アップロードされると、タイプはファイルの分類子から推定されます。</p>
</div>
<div class="paragraph">
<p>アセットタイプに応じて、次のような分類子の値があります。</p>
</div>
<div class="ulist">
<ul>
<li>
<p>REST API</p>
<div class="ulist">
<ul>
<li>
<p><code>oas</code>​ (​<code>zip</code>​、​<code>yaml</code>​、または ​<code>json</code>​ をパッケージとして使用)</p>
</li>
<li>
<p><code>raml</code>​ (​<code>zip</code>​ または ​<code>raml</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>RAML フラグメント</p>
<div class="ulist">
<ul>
<li>
<p><code>raml-fragment</code>​ (​<code>zip</code>​ または ​<code>raml</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>SOAP API</p>
<div class="ulist">
<ul>
<li>
<p><code>wsdl</code>​ (​<code>zip</code>​、​<code>wsld</code>​、または ​<code>xml</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>Custom (カスタム)</p>
<div class="ulist">
<ul>
<li>
<p><code>custom</code>​</p>
</li>
<li>
<p><code>docs</code>​ (​<code>doc.zip</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>アプリケーション</p>
<div class="ulist">
<ul>
<li>
<p><code>mule-application</code>​ (​<code>jar</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>ポリシー</p>
<div class="ulist">
<ul>
<li>
<p><code>mule-policy</code>​ (​<code>jar</code>​ をパッケージとして使用) + ​<code>policy-definition</code>​ (​<code>yaml</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>例</p>
<div class="ulist">
<ul>
<li>
<p><code>mule-application-example</code>​ (​<code>jar</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>Template (テンプレート)</p>
<div class="ulist">
<ul>
<li>
<p><code>mule-application-template</code>​ (​<code>jar</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>Extension (拡張子)</p>
<div class="ulist">
<ul>
<li>
<p><code>mule-plugin</code>​ (​<code>jar</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>Connector (コネクタ)</p>
<div class="ulist">
<ul>
<li>
<p><code>studio-plugin</code>​ (​<code>zip</code>​ をパッケージとして使用) + 分類子がなくパッケージ ​<code>jar</code>​ を使用するファイル</p>
</li>
</ul>
</div>
</li>
<li>
<p>外部ライブラリ</p>
<div class="ulist">
<ul>
<li>
<p><code>external-library</code>​ (​<code>jar</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
<li>
<p>ルールセット</p>
<div class="ulist">
<ul>
<li>
<p><code>ruleset</code>​ (​<code>zip</code>​ または ​<code>yaml</code>​ をパッケージとして使用)</p>
</li>
</ul>
</div>
</li>
</ul>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--categories</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>カテゴリ (値は JSON 形式の文字列である必要があります)</p>
</div>
<div class="paragraph">
<p>'{"key": "value"}'</p>
</div>
<div class="paragraph">
<p>次に例を示します。</p>
</div>
<div class="paragraph">
<p>'{"Department": "IT"}'</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--fields</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>項目 (値は JSON 形式の文字列である必要があります)</p>
</div>
<div class="paragraph">
<p>'{"key": "value"}'</p>
</div>
<div class="paragraph">
<p>次に例を示します。</p>
</div>
<div class="paragraph">
<p>'{"releaseDate": "2020-01-01T20:00:00.000Z"}'</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--keywords</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>キーワード (カンマ区切り)</p>
</div>
<div class="paragraph">
<p>次に例を示します。</p>
</div>
<div class="paragraph">
<p><code>raml,rest-api,someKeyword</code>​</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--tags</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>タグ (カンマ区切り)</p>
</div>
<div class="paragraph">
<p>次に例を示します。</p>
</div>
<div class="paragraph">
<p><code>api,tag1,tag2</code>​</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--dependencies</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アセットの連動関係 (カンマ区切り)</p>
</div>
<div class="paragraph">
<p>次に例を示します。</p>
</div>
<div class="paragraph">
<p><code>groupID:assetID:version,groupID2:assetID:version</code>​</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>--status</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アセットの状況</p>
</div>
<div class="paragraph">
<p>サポートされる値:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>development</code>​</p>
</li>
<li>
<p><code>published</code>​</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>デフォルト値:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>published</code>​</p>
</li>
</ul>
</div></div></td>
</tr>
</tbody>
</table>

## [](#example-publish-sequence)検証およびパブリッシュするサンプルコマンドシーケンス

次のサンプルシーケンスを使用して、ルールセットの検証、そのドキュメントの生成、および両方の Exchange へのアップロードを開始します。フォルダー名、ルールセットファイル名、ルールセットドキュメント ZIP ファイル名などの詳細を独自の詳細に置き換えます。

```console
anypoint-cli-v4 governance:ruleset:validate /myRulesetFolder/mynewruleset.yaml (1)

anypoint-cli-v4 governance:document /myRulesetFolder/mynewruleset.yaml /myRulesetFolder/ruleset.doc.zip (2)

anypoint-cli-v4 exchange asset upload my-auth-best-practices/1.0.0 --name "My Best Practices Ruleset" --description "This ruleset enforces my best practices for APIs." --files='{"ruleset.yaml":"/myRulesetFolder/mynewruleset.yaml", "docs.zip": "/myRulesetFolder/ruleset.doc.zip"}' (3)
```

<table><tbody><tr><td><i class="conum" data-value="1"></i><b>1</b></td><td>ルールセットをローカルで検証します。ルールセットファイルは、​<code>/myRulesetFolder/</code>​ フォルダー内にある ​<code>mynewruleset.yaml</code>​ です。</td></tr><tr><td><i class="conum" data-value="2"></i><b>2</b></td><td>ルールセット ​<code>myruleset.yaml</code>​ のドキュメント ZIP ファイル ​<code>ruleset.doc.zip</code>​ を生成します。両方のファイルは ​<code>/myRulesetFolder/</code>​ フォルダー内にあります。</td></tr><tr><td><i class="conum" data-value="3"></i><b>3</b></td><td>ルールセット ​<code>mynewruleset.yaml</code>​ とそのドキュメント ​<code>ruleset.doc.zip</code>​ をアップロードします。両方のファイルは ​<code>/myRulesetFolder/</code>​ フォルダー内にあります。</td></tr></tbody></table>

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

- [Exchange アセットの CLI](https://docs.mulesoft.com/jp/anypoint-cli/latest/exchange-assets)