すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:ALIYUN::GA::転送ルール

最終更新日:Mar 17, 2025

ALIYUN::GA::ForwardingRules は、転送ルールを作成するために使用されます。

構文

{
  "Type": "ALIYUN::GA::ForwardingRules",
  "Properties": {
    "AcceleratorId": String,
    "ForwardingRules": List,
    "ListenerId": String
  }
}

プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

AcceleratorId

String

はい

いいえ

Global Accelerator (GA) インスタンスの ID。

なし。

ForwardingRules

List

はい

いいえ

転送ルールの構成。

詳細については、このトピックの「ForwardingRules プロパティ」セクションをご参照ください。

ListenerId

String

はい

いいえ

リスナー ID。

なし。

ForwardingRules 構文

"ForwardingRules": [
  {
    "RuleActions": List,
    "Priority": Integer,
    "ForwardingRuleName": String,
    "RuleConditions": List,
    "RuleDirection": String
  }
]

ForwardingRules プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

RuleActions

List

はい

いいえ

転送アクションの構成。

詳細については、このトピックの「RuleActions プロパティ」セクションをご参照ください。

RuleConditions

List

はい

いいえ

転送条件の構成。

詳細については、このトピックの「RuleConditions プロパティ」セクションをご参照ください。

ForwardingRuleName

String

いいえ

いいえ

転送ルール名。

名前は 2 ~ 128 文字で、英字、数字、ピリオド(.)、アンダースコア(_)、ハイフン(-)を含めることができます。英字で始める必要があります。

Priority

Integer

いいえ

いいえ

転送ルールの優先順位。

有効値: 110000。値が小さいほど、優先順位が高くなります。

RuleDirection

String

いいえ

いいえ

転送ルールが有効になる方向。

デフォルトでは、このプロパティは request に設定されています。 request の値は、転送ルールがリクエストに有効であることを指定します。

RuleActions 構文

"RuleActions": [
  {
    "RuleActionType": String,
    "Order": Integer,
    "RuleActionValue": String
  }
]

RuleActions プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Order

Integer

はい

いいえ

転送の優先順位。

なし。

RuleActionType

String

はい

いいえ

転送アクションのタイプ。

有効値:

  • ForwardGroup: リクエストを転送します。

  • Redirect: リクエストをリダイレクトします。

  • FixResponse: 固定レスポンスを返します。

  • Rewrite: リクエストを書き換えます。

  • AddHeader: ヘッダーを追加します。

  • RemoveHeader: ヘッダーを削除します。

  • Drop: リクエストをドロップします。

RuleActionValue

String

いいえ

いいえ

転送アクションの値。

RuleActionType の値に基づいて異なる JSON 文字列を指定する必要があります。

転送ルールには、タイプが ForwardGroupRedirect、または FixResponse の転送アクションを 1 つだけ含めることができます。タイプが ForwardGroup の転送アクションの前に、タイプが RewriteAddHeader、または RemoveHeader の転送アクションを指定する必要があります。

  • RuleActionTypeForwardGroup に設定されている場合、RuleActionValue は仮想エンドポイントグループの構成を指定します。リクエストは 1 つの仮想エンドポイントグループにのみ転送できます。例: {"type":"endpointgroup", "value":"epg-bp1enpdcrqhl78g6r****"}。次のフィールドが含まれます。

    • type: 値を endpointgroup に設定します。

    • value: 目的の仮想エンドポイントグループの ID。

  • RuleActionTypeRedirect に設定されている場合、RuleActionValue はリダイレクト構成を指定します。タイプが Redirect の転送アクションの場合、次のすべてのフィールドを空にするか、次のすべてのフィールドにデフォルト値を使用することはできません: protocoldomainportpathquery。例: {"protocol":"HTTP", "domain":"www.example.com", "port":"80", "path":"/a","query":"value1", "code":"301" }。次のフィールドが含まれます。

    • protocol: リクエストをリダイレクトするプロトコル。デフォルト値: ${protocol}。有効値: ${protocol}HTTPHTTPS

    • domain: リクエストのリダイレクト先ドメイン名。デフォルト値: ${host}。ドメイン名を指定することもできます。ドメイン名は 3 ~ 128 文字で、小文字、数字、および次の特殊文字のみを含めることができます: . - ? = ~ _ - + / ^ * ! $ & ( ) [ ]

    • port: リクエストをリダイレクトするポート。デフォルト値: ${port}。1 ~ 63335 のポート番号を指定することもできます。

    • path: リクエストをリダイレクトするパス。デフォルト値: ${path}。パスは 1 ~ 128 文字である必要があります。正規表現を使用してパスを指定する場合、パスはチルダ (~) で始まり、英字、数字、および次の特殊文字を含めることができます: . - _ / = ? ~ ^ * $ : ( ) [ ] +。正規表現を使用してパスを指定しない場合、パスはスラッシュ (/) で始まり、英字、数字、および次の特殊文字を含めることができます: . - _ / = ? :

    • query: リダイレクトするリクエストのクエリ文字列。デフォルト値: ${query}。クエリ文字列を指定することもできます。クエリ文字列は 1 ~ 128 文字で、小文字と ASCII 値が 32 以上 127 未満 の印刷可能文字を含めることができます。クエリ文字列には、スペースや次の特殊文字を含めることはできません: [ ] { } < > \ # &

    • code: リダイレクトコード。有効値: 301302303307308

  • RuleActionTypeFixResponse に設定されている場合、RuleActionValue は固定レスポンスの構成を指定します。例: {"code":"200", "type":"text/plain", "content":"dssacav" }。次のフィールドが含まれます。

    • code: HTTP レスポンスステータスコード。レスポンスステータスコードは、次のいずれかの数値文字列である必要があります: 2xx4xx5xxx は数字です。

    • type: レスポンスコンテンツのタイプ。有効値: text/plaintext/csstext/htmlapplication/javascriptapplication/json

    • content: レスポンスコンテンツ。レスポンスコンテンツは最大 1,000 文字で、中国語はサポートされていません。

  • RuleActionTypeAddHeader に設定されている場合、RuleActionValue は追加する HTTP ヘッダーの構成を指定します。転送ルールにタイプが AddHeader の転送アクションが含まれている場合は、タイプが ForwardGroup の転送アクションを構成する必要があります。例: [{"name":"header1","type":"userdefined", "value":"value"}]。次のフィールドが含まれます。

    • name: HTTP ヘッダーの名前。名前は 1 ~ 40 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。タイプが AddHeader の転送アクションの HTTP ヘッダー名は一意である必要があり、タイプが RemoveHeader の転送アクションの HTTP ヘッダー名と同じにすることはできません。

    • type: HTTP ヘッダーコンテンツのタイプ。有効値: user-definedrefsystem-defined

    • value: HTTP ヘッダーのコンテンツ。このフィールドを空にすることはできません。typeuser-defined に設定されている場合、コンテンツは 1 ~ 128 文字で、ASCII 値が 32 以上 127 未満 の印刷可能文字を含めることができます。コンテンツには、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。コンテンツはスペースで始めることも終わることもできません。typeref に設定されている場合、コンテンツは 1 ~ 128 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。コンテンツはスペースで始めることも終わることもできません。typesystem-defined に設定されている場合、コンテンツは ClientSrcIp である必要があります。

  • RuleActionTypeRemoveHeader に設定されている場合、RuleActionValue は削除する HTTP ヘッダーの構成を指定します。転送ルールにタイプが RemoveHeader の転送アクションが含まれている場合は、タイプが ForwardGroup の転送アクションを構成する必要があります。ヘッダーは 1 ~ 40 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。例: ["header1"]

  • RuleActionTypeRewrite に設定されている場合、RuleActionValue は書き換え構成を指定します。転送ルールにタイプが Rewrite の転送アクションが含まれている場合は、タイプが ForwardGroup の転送アクションを構成する必要があります。例: {"domain":"value1", "path":"value2", "query":"value3"}。次のフィールドが含まれます。

    • domain: リクエストのリダイレクト先ドメイン名。デフォルト値: ${host}。ドメイン名を指定することもできます。ドメイン名は 3 ~ 128 文字で、小文字、数字、および次の特殊文字のみを含めることができます: . - ? = ~ _ - + / ^ * ! $ & ( ) [ ]

    • path: リクエストをリダイレクトするパス。デフォルト値: ${path}。パスは 1 ~ 128 文字である必要があります。正規表現を使用してパスを指定する場合、パスはチルダ (~) で始まり、英字、数字、および次の特殊文字を含めることができます: . - _ / = ? ~ ^ * $ : ( ) [ ] +。正規表現を使用してパスを指定しない場合、パスはスラッシュ (/) で始まり、英字、数字、および次の特殊文字を含めることができます: . - _ / = ? :

    • query: リダイレクトするリクエストのクエリ文字列。デフォルト値: ${query}。クエリ文字列を指定することもできます。クエリ文字列は 1 ~ 128 文字で、小文字と ASCII 値が 32 以上 127 未満 の印刷可能文字を含めることができます。クエリ文字列には、スペースや次の特殊文字を含めることはできません: [ ] { } < > \ # &

  • RuleActionTypeDrop に設定されている場合、RuleActionValue を指定する必要はありません。

RuleConditions 構文

"RuleConditions": [
  {
    "RuleConditionType": String,
    "RuleConditionValue": String
  }
]

RuleConditions プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

RuleConditionType

String

いいえ

いいえ

転送条件のタイプ。

有効値:

  • Host: ドメイン名

  • Path: パス

  • RequestHeader: HTTP ヘッダー

  • Query: クエリ文字列

  • Method: HTTP リクエストメソッド

  • Cookie: Cookie

  • SourceIp: ソース IP アドレス

RuleConditionValue

String

いいえ

いいえ

転送条件の値。

RuleConditionType の値に基づいて異なる JSON 文字列を指定する必要があります。

  • RuleConditionTypeHost に設定されている場合、RuleConditionValue はドメイン名条件の構成を指定します。転送ルールには、ドメイン名条件を 1 つだけ含めることができます。ドメイン名条件には複数のドメイン名を指定できます。複数のドメイン名間の関係は OR です。ドメイン名は 3 ~ 128 文字で、英字、数字、ハイフン (-)、ピリオド (.) を含めることができます。ドメイン名は、アスタリスク (*) および疑問符 (?) ワイルドカード文字をサポートしています。例: ["www.example.com", "www.aliyun.com"]

  • RuleConditionTypePath に設定されている場合、RuleConditionValue はパス条件の構成を指定します。転送ルールには複数のパス条件を含めることができます。複数のパス条件間の関係は OR です。パス条件には複数のパスを指定できます。複数のパス間の関係は OR です。例: ["/a", "/b/"]。パスは 1 ~ 128 文字で、スラッシュ (/) で始める必要があります。パスはアスタリスク (*) および疑問符 (?) ワイルドカード文字をサポートし、英字、数字、および次の特殊文字を含めることができます: $ - _ . + / & ~ @ : '

  • RuleConditionTypeRequestHeader に設定されている場合、RuleConditionValue は HTTP ヘッダー条件の構成を指定し、RuleConditionValue の値はキーと値のペアで構成されます。転送条件のヘッダー値は一意である必要があります。例: [{"header1":["value1","value2"]}]

    • キー: HTTP ヘッダーのキーは 1 ~ 40 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。

    • 値: HTTP ヘッダーの値は 1 ~ 128 文字で、ASCII 値が 32 以上 127 未満 の印刷可能文字を含めることができます。HTTP ヘッダーの値はスペースで始めることも終わることもできません。

  • RuleConditionTypeQuery に設定されている場合、RuleConditionValue はクエリ文字列条件の構成を指定し、RuleConditionValue の値はキーと値のペアで構成されます。例: [{"query1":["value1"]}, {"query2":["value2"]}]

    • キー: クエリ文字列のキーは 1 ~ 100 文字で、小文字と ASCII 値が 32 以上 127 未満 の印刷可能文字を含めることができます。キーには、スペースや次の特殊文字を含めることはできません: [ ] { } < > \ ; / ? : @ & = + , $ % " ^ ~

    • 値: クエリ文字列の値は 1 ~ 128 文字で、小文字と ASCII 値が 32 以上 127 未満 の印刷可能文字を含めることができます。クエリ文字列の値には、スペースや次の特殊文字を含めることはできません: [ ] { } < > \ ; / ? : @ & = + , $ % " ^ ~

  • RuleConditionTypeMethod に設定されている場合、RuleConditionValue は HTTP リクエストメソッド条件の構成を指定します。有効値: HEADGETPOSTOPTIONSPUTPATCHDELETE。例: ["GET", "OPTIONS", "POST"]

  • RuleConditionTypeCookie に設定されている場合、RuleConditionValue は Cookie 条件の構成を指定し、RuleConditionValue の値はキーと値のペアで構成されます。例: [{"cookie1":["value1"]}, {"cookie2":["value2"]}]

    • キー: Cookie のキーは 1 ~ 100 文字で、小文字と ASCII 値が 32 以上 127 未満 の印刷可能文字を含めることができます。キーには、スペースや次の特殊文字を含めることはできません: # [ ] { } \ < > &

    • 値: Cookie の値は 1 ~ 128 文字で、小文字と ASCII 値が 32 以上 127 未満 の印刷可能文字を含めることができます。Cookie の値には、スペースや次の特殊文字を含めることはできません: # [ ] { } \ < > &

  • RuleConditionTypeSourceIP に設定されている場合、RuleConditionValue はソース IP アドレス条件の構成を指定します。 1.1.XX.XX/32 などの IP アドレスと 2.2.XX.XX/24 などの CIDR ブロックがサポートされています。転送ルールには、ソース IP アドレス条件を 1 つだけ含めることができます。ソース IP アドレス条件には、複数のソース IP アドレスまたは CIDR ブロックを指定できます。複数の IP アドレスまたは CIDR ブロック間の関係は OR です。例: ["1.1.XX.XX/32", "2.2.XX.XX/24"]

戻り値

Fn::GetAtt

ForwardingRuleIds: 転送ルールの ID。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  AcceleratorId:
    Type: String
    Description:
      ja: GA インスタンスの ID。
    Required: true
  ForwardingRules:
    AssociationPropertyMetadata:
      Parameter:
        AssociationPropertyMetadata:
          Parameters:
            RuleActions:
              AssociationPropertyMetadata:
                Parameters:
                  RuleActionType:
                    Type: String
                    Description:
                      ja: |
                        転送アクションのタイプ。有効値:
                        * ForwardGroup: リクエストを転送します。
                        * Redirect: リクエストをリダイレクトします。
                        * FixResponse: 固定レスポンスを返します。
                        * Rewrite: リクエストを書き換えます。
                        * AddHeader: リクエストにヘッダーを追加します。
                        * RemoveHeaderConfig: リクエストからヘッダーを削除します。
                    AllowedValues:
                      - ForwardGroup
                      - Redirect
                      - FixResponseRewrite
                      - AddHeaderRemoveHeaderConfig
                    Required: true
                  Order:
                    Type: Number
                    Description:
                      ja: 転送の優先順位。
                    Required: true
                  RuleActionValue:
                    Type: String
                    Description:
                      ja: |-
                        転送アクションタイプの値。RuleActionType パラメーターに基づいて異なる JSON 文字列を指定する必要があります。転送ルールには、タイプが ForwardGroup、Redirect、または FixResponse の転送アクションを 1 つだけ含めることができます。タイプが ForwardGroup の転送アクションの前に、タイプが Rewrite、AddHeader、または RemoveHeader の転送アクションを指定する必要があります。
                        * RuleActionType が ForwardGroup に設定されている場合、このパラメーターは仮想エンドポイントグループの情報を指定します。リクエストは 1 つの仮想エンドポイントグループにのみ転送できます。例: {"type":"endpointgroup", "value":"epg-bp1enpdcrqhl78g6r****"}。
                          * type: このパラメーターを endpointgroup に設定します。
                          * value: このパラメーターを仮想エンドポイントグループの ID に設定します。
                        * RuleActionType が Redirect に設定されている場合、このパラメーターはリダイレクト構成を指定します。タイプが Redirect の転送アクションの場合、次のすべてのパラメーターを空にするか、これらのすべてのパラメーターをデフォルト値を使用するように構成することはできません: protocol、domain、port、path、query。例: {"protocol":"HTTP", "domain":"www.example.com", "port":"80", "path":"/a","query":"value1", "code":"301" }。
                          * protocol: リクエストがリダイレクトされた後のリクエストのプロトコル。有効値: ${protocol} (デフォルト)、HTTP、HTTPS。
                          * domain: リクエストのリダイレクト先ドメイン名。デフォルト値: ${host}。ドメイン名を入力することもできます。ドメイン名は 3 ~ 128 文字で、英字、数字、および次の特殊文字のみを含めることができます: . - ? = ~ _ - + / ^ * ! $ & | ( ) [ ]。
                          * port: リクエストのリダイレクト先ポート。デフォルト値: ${port}。1 ~ 63335 のポート番号を入力できます。
                          * path: リクエストのリダイレクト先パス。デフォルト値: ${path}。パスは 1 ~ 128 文字である必要があります。正規表現を使用するには、パスに英字、数字、および次の特殊文字を含めることができます: . - _ / = ? ~ ^ * $ : ( ) [ ] + |。パスはチルダ (~) で始める必要があります。正規表現を使用しない場合、パスには英字、数字、および次の特殊文字を含めることができます: . - _ / = ? :。パスはスラッシュ (/) で始める必要があります。
                          * query: リダイレクトされるリクエストのクエリ文字列。デフォルト値: ${query}。クエリ文字列を指定することもできます。クエリ文字列は 1 ~ 128 文字で、ASCII 値が 32 以上 127 未満の印刷可能文字を含めることができます。クエリ文字列には、大文字、スペース文字、または次の特殊文字を含めることはできません: [ ] { } < > # | &。
                          * code: リダイレクトコード。有効値: 301、302、303、307、308。
                        * RuleActionType が FixResponse に設定されている場合、このパラメーターは固定レスポンスを指定します。例: {"code":"200", "type":"text/plain", "content":"dssacav" }。
                          * code: 返す HTTP ステータスコード。レスポンスステータスコードは、次のいずれかの数値文字列である必要があります: 2xx、4xx、5xx。文字 x は 0 ~ 9 の数字を示します。
                          * type: レスポンスコンテンツのタイプ。有効値: text/plain、text/css、text/html、application/javascript、application/json。
                          * content: レスポンスコンテンツ。レスポンスコンテンツは 1,000 文字を超えることはできず、中国語はサポートされていません。
                        * RuleActionType が AddHeader に設定されている場合、このパラメーターは追加する HTTP ヘッダーを指定します。転送ルールにタイプが AddHeader の転送アクションが含まれている場合は、タイプが ForwardGroup の別の転送アクションを指定する必要があります。例: [{"name":"header1","type":"userdefined", "value":"value"}]。
                          * name: HTTP ヘッダーの名前。名前は 1 ~ 40 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。AddHeader で指定された HTTP ヘッダーの名前は一意である必要があり、RemoveHeader で指定された HTTP ヘッダーの名前と同じにすることはできません。
                          * type: HTTP ヘッダーのコンテンツタイプ。有効値: user-defined、ref、system-defined。
                          * value: HTTP ヘッダーのコンテンツ。このパラメーターを空にすることはできません。type を user-defined に設定した場合、コンテンツは 1 ~ 128 文字で、ASCII 値が 32 以上 127 未満の印刷可能文字を含めることができます。コンテンツには、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。コンテンツはスペース文字で始めることも終わることもできません。type を ref に設定した場合、コンテンツは 1 ~ 128 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。コンテンツはスペース文字で始めることも終わることもできません。type を system-defined に設定した場合、ClientSrcIp のみがサポートされます。
                        * RuleActionType が RemoveHeader に設定されている場合、このパラメーターは削除する HTTP ヘッダーを指定します。転送ルールにタイプが RemoveHeader の転送アクションが含まれている場合は、タイプが ForwardGroup の別の転送アクションを指定する必要があります。ヘッダーは 1 ~ 40 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。例: ["header1"]。
                        * RuleActionType が Rewrite に設定されている場合、このパラメーターは書き換え構成を指定します。転送ルールにタイプが Rewrite の転送アクションが含まれている場合は、タイプが ForwardGroup の別の転送アクションを指定する必要があります。例: {"domain":"value1", "path":"value2", "query":"value3"}。
                          * domain: リクエストのリダイレクト先ドメイン名。デフォルト値: ${host}。ドメイン名を入力することもできます。ドメイン名は 3 ~ 128 文字で、小文字、数字、および次の特殊文字のみを含めることができます: . - ? = ~ _ - + / ^ * ! $ & | ( ) [ ]。
                          * path: リクエストのリダイレクト先パス。デフォルト値: ${path}。パスは 1 ~ 128 文字である必要があります。正規表現を使用するには、パスに英字、数字、および次の特殊文字を含めることができます: . - _ / = ? ~ ^ * $ : ( ) [ ] + |。パスはチルダ (~) で始める必要があります。正規表現を使用しない場合、パスには英字、数字、および次の特殊文字を含めることができます: . - _ / = ? :。パスはスラッシュ (/) で始める必要があります。
                          * query: リダイレクトされるリクエストのクエリ文字列。デフォルト値: ${query}。クエリ文字列を指定することもできます。クエリ文字列は 1 ~ 128 文字で、ASCII 値が 32 以上 127 未満の印刷可能文字を含めることができます。クエリ文字列には、大文字、スペース文字、または次の特殊文字を含めることはできません: [ ] { } < > # | &。
                    Required: false
              AssociationProperty: List[Parameters]
              Type: Json
              Description:
                ja: 転送アクション。
              Required: true
              MinLength: 1
              MaxLength: 100
            Priority:
              Type: Number
              Description:
                ja: 転送ルールの優先順位。有効値: 1 ~ 10000。値が小さいほど優先順位が高くなります。
              Required: false
              MinValue: 1
              MaxValue: 10000
            ForwardingRuleName:
              Type: String
              Description:
                ja: 転送ルール名。名前は 2 ~ 128 文字で、英字、数字、ピリオド(.)、アンダースコア(_)、ハイフン(-)を含めることができます。名前は英字で始める必要があります。
              Required: false
              MinLength: 2
              MaxLength: 128
            RuleConditions:
              AssociationPropertyMetadata:
                Parameters:
                  RuleConditionType:
                    Type: String
                    Description:
                      ja: |-
                        転送条件のタイプ。有効値:
                        * Host: ドメイン名
                        * Path: パス
                        * RequestHeader: HTTP ヘッダー
                        * Query: クエリ文字列
                        * Method: HTTP メソッド
                        * Cookie: Cookie
                        * SourceIP: ソース IP アドレス
                    AllowedValues:
                      - Host
                      - Path
                      - RequestHeader
                      - Query
                      - Method
                      - Cookie
                      - SourceIP
                    Required: false
                  RuleConditionValue:
                    Type: String
                    Description:
                      ja: リスナーポートにマップされているエンドポイントポート。
                    Required: false
              AssociationProperty: List[Parameters]
              Type: Json
              Description:
                ja: 転送条件。
              Required: true
              MinLength: 1
              MaxLength: 100
            RuleDirection:
              Type: String
              Description:
                ja: ルールが有効になる方向。このパラメーターを設定する必要はありません。デフォルトでは、このパラメーターは request に設定されており、ルールがリクエストに有効であることを示します。
              AllowedValues:
                - request
              Required: false
        Type: Json
        Required: false
    AssociationProperty: List[Parameter]
    Type: Json
    Description:
      ja: 転送ルールに関する詳細。
    Required: true
    MinLength: 1
    MaxLength: 200
  ListenerId:
    Type: String
    Description:
      ja: リスナーの ID。
    Required: true
Resources:
  ExtensionResource:
    Type: ALIYUN::GA::ForwardingRules
    Properties:
      AcceleratorId:
        Ref: AcceleratorId
      ForwardingRules:
        Ref: ForwardingRules
      ListenerId:
        Ref: ListenerId
Outputs:
  ForwardingRuleIds:
    Description: エンドポイントグループの ID。
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - ForwardingRuleIds
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "AcceleratorId": {
      "Type": "String",
      "Description": {
        "ja": "GA インスタンスの ID。"
      },
      "Required": true
    },
    "ForwardingRules": {
      "AssociationPropertyMetadata": {
        "Parameter": {
          "AssociationPropertyMetadata": {
            "Parameters": {
              "RuleActions": {
                "AssociationPropertyMetadata": {
                  "Parameters": {
                    "RuleActionType": {
                      "Type": "String",
                      "Description": {
                        "ja": "転送アクションのタイプ。有効値:\n* ForwardGroup: リクエストを転送します。\n* Redirect: リクエストをリダイレクトします。\n* FixResponse: 固定レスポンスを返します。\n* Rewrite: リクエストを書き換えます。\n* AddHeader: リクエストにヘッダーを追加します。\n* RemoveHeaderConfig: リクエストからヘッダーを削除します。\n"
                      },
                      "AllowedValues": [
                        "ForwardGroup",
                        "Redirect",
                        "FixResponseRewrite",
                        "AddHeaderRemoveHeaderConfig"
                      ],
                      "Required": true
                    },
                    "Order": {
                      "Type": "Number",
                      "Description": {
                        "ja": "転送の優先順位。"
                      },
                      "Required": true
                    },
                    "RuleActionValue": {
                      "Type": "String",
                      "Description": {
                        "ja": "転送アクションタイプの値。RuleActionType パラメーターに基づいて異なる JSON 文字列を指定する必要があります。転送ルールには、タイプが ForwardGroup、Redirect、または FixResponse の転送アクションを 1 つだけ含めることができます。タイプが ForwardGroup の転送アクションの前に、タイプが Rewrite、AddHeader、または RemoveHeader の転送アクションを指定する必要があります。\n* RuleActionType が ForwardGroup に設定されている場合、このパラメーターは仮想エンドポイントグループの情報を指定します。リクエストは 1 つの仮想エンドポイントグループにのみ転送できます。例: {\"type\":\"endpointgroup\", \"value\":\"epg-bp1enpdcrqhl78g6r****\"}。\n * type: このパラメーターを endpointgroup に設定します。\n * value: このパラメーターを仮想エンドポイントグループの ID に設定します。\n* RuleActionType が Redirect に設定されている場合、このパラメーターはリダイレクト構成を指定します。タイプが Redirect の転送アクションの場合、次のすべてのパラメーターを空にするか、これらのすべてのパラメーターをデフォルト値を使用するように構成することはできません: protocol、domain、port、path、query。例: {\"protocol\":\"HTTP\", \"domain\":\"www.example.com\", \"port\":\"80\", \"path\":\"/a\",\"query\":\"value1\", \"code\":\"301\" }。\n * protocol: リクエストがリダイレクトされた後のリクエストのプロトコル。有効値: ${protocol} (デフォルト)、HTTP、HTTPS。\n * domain: リクエストのリダイレクト先ドメイン名。デフォルト値: ${host}。ドメイン名を入力することもできます。ドメイン名は 3 ~ 128 文字で、英字、数字、および次の特殊文字のみを含めることができます: . - ? = ~ _ - + / ^ * ! $ & | ( ) [ ]。\n * port: リクエストのリダイレクト先ポート。デフォルト値: ${port}。1 ~ 63335 のポート番号を入力できます。\n * path: リクエストのリダイレクト先パス。デフォルト値: ${path}。パスは 1 ~ 128 文字である必要があります。正規表現を使用するには、パスに英字、数字、および次の特殊文字を含めることができます: . - _ / = ? ~ ^ * $ : ( ) [ ] + |。パスはチルダ (~) で始める必要があります。正規表現を使用しない場合、パスには英字、数字、および次の特殊文字を含めることができます: . - _ / = ? :。パスはスラッシュ (/) で始める必要があります。\n * query: リダイレクトされるリクエストのクエリ文字列。デフォルト値: ${query}。クエリ文字列を指定することもできます。クエリ文字列は 1 ~ 128 文字で、ASCII 値が 32 以上 127 未満の印刷可能文字を含めることができます。クエリ文字列には、大文字、スペース文字、または次の特殊文字を含めることはできません: [ ] { } < > # | &。\n * code: リダイレクトコード。有効値: 301、302、303、307、308。\n* RuleActionType が FixResponse に設定されている場合、このパラメーターは固定レスポンスを指定します。例: {\"code\":\"200\", \"type\":\"text/plain\", \"content\":\"dssacav\" }。\n * code: 返す HTTP ステータスコード。レスポンスステータスコードは、次のいずれかの数値文字列である必要があります: 2xx、4xx、5xx。文字 x は 0 ~ 9 の数字を示します。\n * type: レスポンスコンテンツのタイプ。有効値: text/plain、text/css、text/html、application/javascript、application/json。\n * content: レスポンスコンテンツ。レスポンスコンテンツは 1,000 文字を超えることはできず、中国語はサポートされていません。\n* RuleActionType が AddHeader に設定されている場合、このパラメーターは追加する HTTP ヘッダーを指定します。転送ルールにタイプが AddHeader の転送アクションが含まれている場合は、タイプが ForwardGroup の別の転送アクションを指定する必要があります。例: [{\"name\":\"header1\",\"type\":\"userdefined\", \"value\":\"value\"}].\n * name: HTTP ヘッダーの名前。名前は 1 ~ 40 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。AddHeader で指定された HTTP ヘッダーの名前は一意である必要があり、RemoveHeader で指定された HTTP ヘッダーの名前と同じにすることはできません。\n * type: HTTP ヘッダーのコンテンツタイプ。有効値: user-defined、ref、system-defined。\n * value: HTTP ヘッダーのコンテンツ。このパラメーターを空にすることはできません。type を user-defined に設定した場合、コンテンツは 1 ~ 128 文字で、ASCII 値が 32 以上 127 未満の印刷可能文字を含めることができます。コンテンツには、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。コンテンツはスペース文字で始めることも終わることもできません。type を ref に設定した場合、コンテンツは 1 ~ 128 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。コンテンツはスペース文字で始めることも終わることもできません。type を system-defined に設定した場合、ClientSrcIp のみがサポートされます。\n* RuleActionType が RemoveHeader に設定されている場合、このパラメーターは削除する HTTP ヘッダーを指定します。転送ルールにタイプが RemoveHeader の転送アクションが含まれている場合は、タイプが ForwardGroup の別の転送アクションを指定する必要があります。ヘッダーは 1 ~ 40 文字で、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。例: [\"header1\"]。\n* RuleActionType が Rewrite に設定されている場合、このパラメーターは書き換え構成を指定します。転送ルールにタイプが Rewrite の転送アクションが含まれている場合は、タイプが ForwardGroup の別の転送アクションを指定する必要があります。例: {\"domain\":\"value1\", \"path\":\"value2\", \"query\":\"value3\"}。\n * domain: リクエストのリダイレクト先ドメイン名。デフォルト値: ${host}。ドメイン名を入力することもできます。ドメイン名は 3 ~ 128 文字で、小文字、数字、および次の特殊文字のみを含めることができます: . - ? = ~ _ - + / ^ * ! $ & | ( ) [ ]。\n * path: リクエストのリダイレクト先パス。デフォルト値: ${path}。パスは 1 ~ 128 文字である必要があります。正規表現を使用するには、パスに英字、数字、および次の特殊文字を含めることができます: . - _ / = ? ~ ^ * $ : ( ) [ ] + |。パスはチルダ (~) で始める必要があります。正規表現を使用しない場合、パスには英字、数字、および次の特殊文字を含めることができます: . - _ / = ? :。パスはスラッシュ (/) で始める必要があります。\n * query: リダイレクトされるリクエストのクエリ文字列。デフォルト値: ${query}。クエリ文字列を指定することもできます。クエリ文字列は 1 ~ 128 文字で、ASCII 値が 32 以上 127 未満の印刷可能文字を含めることができます。クエリ文字列には、大文字、スペース文字、または次の特殊文字を含めることはできません: [ ] { } < > # | &。"

                      },
                      "Required": false
                    }
                  }
                },
                "AssociationProperty": "List[Parameters]",
                "Type": "Json",
                "Description": {
                  "ja": "転送アクション。"
                },
                "Required": true,
                "MinLength": 1,
                "MaxLength": 100
              },
              "Priority": {
                "Type": "Number",
                "Description": {
                  "ja": "転送ルールの優先順位。有効値: 1 ~ 10000。値が小さいほど優先順位が高くなります。"
                },
                "Required": false,
                "MinValue": 1,
                "MaxValue": 10000
              },
              "ForwardingRuleName": {
                "Type": "String",
                "Description": {
                  "ja": "転送ルール名。名前は 2 ~ 128 文字で、英字、数字、ピリオド(.)、アンダースコア(_)、ハイフン(-)を含めることができます。名前は英字で始める必要があります。"
                },
                "Required": false,
                "MinLength": 2,
                "MaxLength": 128
              },
              "RuleConditions": {
                "AssociationPropertyMetadata": {
                  "Parameters": {
                    "RuleConditionType": {
                      "Type": "String",
                      "Description": {
                        "ja": "転送条件のタイプ。有効値:\n* Host: ドメイン名\n* Path: パス\n* RequestHeader: HTTP ヘッダー\n* Query: クエリ文字列\n* Method: HTTP メソッド\n* Cookie: Cookie\n* SourceIP: ソース IP アドレス"
                      },
                      "AllowedValues": [
                        "Host",
                        "Path",
                        "RequestHeader",
                        "Query",
                        "Method",
                        "Cookie",
                        "SourceIP"
                      ],
                      "Required": false
                    },
                    "RuleConditionValue": {
                      "Type": "String",
                      "Description": {
                        "ja": "リスナーポートにマップされているエンドポイントポート。"
                      },
                      "Required": false
                    }
                  }
                },
                "AssociationProperty": "List[Parameters]",
                "Type": "Json",
                "Description": {
                  "ja": "転送条件。"
                },
                "Required": true,
                "MinLength": 1,
                "MaxLength": 100
              },
              "RuleDirection": {
                "Type": "String",
                "Description": {
                  "ja": "ルールが有効になる方向。このパラメーターを設定する必要はありません。デフォルトでは、このパラメーターは request に設定されており、ルールがリクエストに有効であることを示します。"
                },
                "AllowedValues": [
                  "request"
                ],
                "Required": false
              }
            }
          },
          "Type": "Json",
          "Required": false
        }
      },
      "AssociationProperty": "List[Parameter]",
      "Type": "Json",
      "Description": {
        "ja": "転送ルールに関する詳細。"
      },
      "Required": true,
      "MinLength": 1,
      "MaxLength": 200
    },
    "ListenerId": {
      "Type": "String",
      "Description": {
        "ja": "リスナーの ID。"
      },
      "Required": true
    }
  },
  "Resources": {
    "ExtensionResource": {
      "Type": "ALIYUN::GA::ForwardingRules",
      "Properties": {
        "AcceleratorId": {
          "Ref": "AcceleratorId"
        },
        "ForwardingRules": {
          "Ref": "ForwardingRules"
        },
        "ListenerId": {
          "Ref": "ListenerId"
        }
      }
    }
  },
  "Outputs": {
    "ForwardingRuleIds": {
      "Description": "エンドポイントグループの ID。",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "ForwardingRuleIds"
        ]
      }
    }
  }
}