カスタムルールセットの検証とパブリッシュ

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

  1. ルールセットを​検証します​。

  2. ルールセットの​ドキュメントを生成します​。

  3. 新しいアセットとして Exchange に​カスタムルールセットをパブリッシュします​。

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

カスタムコードや設定と同様に、ルールセットはサポートされている MuleSoft 製品とはみなされません。これらのカスタムルールセットの問題については、 AMF Custom Validator の Github リポジトリ​に問題を投稿してください。

ルールセットを検証する

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

governance:ruleset:validate

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

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

  • ルールセット定義 YAML ファイル

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

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

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

コマンド例:

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

ルールセットドキュメントを生成する

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

governance:document

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

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

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

コマンド例:

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

カスタムルールセットをパブリッシュする

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

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

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 がデフォルトに設定されます。

フラグ 説明

--name

アセット名 (pom ファイルが指定されていない場合に必要)

次に例を示します。

exchange:asset:upload --name "Raml Asset" --description "RAML" --properties='{"apiVersion":"v1", "mainFile": "api.raml"}' --files='{"raml.zip":"​/file-path/raml.zip"}'

--description

アセットの説明

--properties

アセットプロパティ

次に例を示します。

  • --properties='{"mainFile":"main.raml"}'

  • --properties='{"apiVersion":"v1"}'

  • --properties='{"assetLink":"http://api.com"}'

  • --properties='{"mainFile":"main.raml","apiVersion":"v1","assetLink":"http://api.com","contactEmail":"api@mulesoft.com","contactName":"Marc"}'

--files

アセットファイル (​classifier.packaging​ または ​packaging​ とそのファイルパスとして識別される。) 例: --files='{"oas.zip":"​/my-api.raml"}'

複数のファイルを送信するには通常、同じフラグを複数回使用します。

--files='{"oas.zip": "my-demo-oas.zip"}' --files='{"custom.zip": "~/my-custom-file.zip"}'

ルールセットを含むルールセットドキュメントをアップロードする場合は例外です。分類子とパッケージ化オプションの両方のセットを 1 つの ​--files​ フラグに入力する必要があります。

--files='{"ruleset.yaml":"/myRulesetFolder/mynewruleset.yaml","docs.zip":"/myRulesetFolder/ruleset.doc.zip"}'

例:

POM ファイルと RAML 仕様をアップロードする:

exchange:asset:upload --files'{"pom.xml": "directory/pom-file.xml"}' --files='{"raml.raml": "./my-api.raml"}'

ルールセットとそのドキュメントをアップロードする:

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"}'

--type

アセットタイプ

ファイルが指定されていない場合に必要です。

サポートされる値:

  • rest-api

  • soap-api

  • http-api

  • raml-fragment

  • custom

  • connector

  • template

  • example

  • policy

  • app

  • extension

  • external-library

  • ruleset

アップロードされると、タイプはファイルの分類子から推定されます。

アセットタイプに応じて、次のような分類子の値があります。

  • REST API

    • oas​ (​zip​、​yaml​、または ​json​ をパッケージとして使用)

    • raml​ (​zip​ または ​raml​ をパッケージとして使用)

  • RAML フラグメント

    • raml-fragment​ (​zip​ または ​raml​ をパッケージとして使用)

  • SOAP API

    • wsdl​ (​zip​、​wsld​、または ​xml​ をパッケージとして使用)

  • Custom (カスタム)

    • custom

    • docs​ (​doc.zip​ をパッケージとして使用)

  • アプリケーション

    • mule-application​ (​jar​ をパッケージとして使用)

  • ポリシー

    • mule-policy​ (​jar​ をパッケージとして使用) + ​policy-definition​ (​yaml​ をパッケージとして使用)

    • mule-application-example​ (​jar​ をパッケージとして使用)

  • Template (テンプレート)

    • mule-application-template​ (​jar​ をパッケージとして使用)

  • Extension (拡張子)

    • mule-plugin​ (​jar​ をパッケージとして使用)

  • Connector (コネクタ)

    • studio-plugin​ (​zip​ をパッケージとして使用) + 分類子がなくパッケージ ​jar​ を使用するファイル

  • 外部ライブラリ

    • external-library​ (​jar​ をパッケージとして使用)

  • ルールセット

    • ruleset​ (​zip​ または ​yaml​ をパッケージとして使用)

--categories

カテゴリ (値は JSON 形式の文字列である必要があります)

'{"key": "value"}'

次に例を示します。

'{"Department": "IT"}'

--fields

項目 (値は JSON 形式の文字列である必要があります)

'{"key": "value"}'

次に例を示します。

'{"releaseDate": "2020-01-01T20:00:00.000Z"}'

--keywords

キーワード (カンマ区切り)

次に例を示します。

raml,rest-api,someKeyword

--tags

タグ (カンマ区切り)

次に例を示します。

api,tag1,tag2

--dependencies

アセットの連動関係 (カンマ区切り)

次に例を示します。

groupID:assetID:version,groupID2:assetID:version

--status

アセットの状況

サポートされる値:

  • development

  • published

デフォルト値:

  • published

検証およびパブリッシュするサンプルコマンドシーケンス

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

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)
1 ルールセットをローカルで検証します。ルールセットファイルは、​/myRulesetFolder/​ フォルダー内にある ​mynewruleset.yaml​ です。
2 ルールセット ​myruleset.yaml​ のドキュメント ZIP ファイル ​ruleset.doc.zip​ を生成します。両方のファイルは ​/myRulesetFolder/​ フォルダー内にあります。
3 ルールセット ​mynewruleset.yaml​ とそのドキュメント ​ruleset.doc.zip​ をアップロードします。両方のファイルは ​/myRulesetFolder/​ フォルダー内にあります。