転送ルールを作成します。

説明

Global Accelerator (GA) のHTTPおよびHTTPSリスナーは、ドメイン名ベースおよびパスベースの転送ルールをサポートしています。 HTTPまたはHTTPSリスナーがリクエストを受信した後、システムはリクエストを転送ルールの転送条件と照合し、対応する転送アクションを実行します。 たとえば、転送ルールでHostを転送条件としてwww.example.comに、Forwardepg-bp1enpdcrqhl78g6r **** に転送アクションとして設定した場合、www.example.comドメイン名へのリクエストはこの転送ルールと一致し、epg-bp1enpdcrqhl78g6r **** エンドポイントグループに転送されます。 このAPI操作を呼び出して転送ルールを作成する前に、転送ルールを理解することをお勧めします。 詳細については、「転送ルール」をご参照ください。

この操作を呼び出すときは、次の項目に注意してください。

  • CreateForwardingRulesは非同期操作です。 リクエストを送信した後、システムは転送ルールのIDを返しますが、転送ルールはシステムのバックグラウンドでまだ作成されています。 ListForwardingRulesを呼び出して、転送ルールの状態を照会できます。
    • 転送ルールが設定中の状態にある場合は、ルールが作成中であることを示します。 この場合、クエリ操作のみを実行できます。
    • 転送ルールがアクティブ状態の場合、ルールが作成されたことを示します。
  • CreateForwardingRules操作は、特定の期間内に同じGAインスタンスに対して繰り返し呼び出すことはできません。

デバッグ

OpenAPI Explorer は署名値を自動的に計算します。 この操作は、OpenAPI Explorer で呼び出すことを推奨します。 OpenAPI Explorer は、さまざまな SDK に対して操作のサンプルコードを動的に生成します。

リクエストパラメーター

項目 データ型 必須/任意 例: 説明
操作 String 必須 CreateForwardingRules

実行する操作です。 値をCreateForwardingRulesに設定します。

RegionId String 必須 cn-hangzhou

GAインスタンスがデプロイされているリージョンのID。 値をcn-hangzhouに設定します。

ClientToken String 任意 02fb3da4 ****

リクエストのべき等性を保証するために使用されるクライアントトークン。

クライアントを使用して値を生成できますが、異なるリクエスト間で一意であることを確認する必要があります。 ClientTokenにはASCII文字のみを含めることができます。

説明 このパラメーターを設定しない場合、ClientTokenRequestIdの値に設定されます。 RequestIdの値は、APIリクエストごとに異なる場合があります。
AcceleratorId String 必須 ga-bp17frjjh0udz4q ****

GA インスタンスの ID です。

ListenerId String 必須 lsr-bp1s0vzbi5bxlx5 ****

リスナーの ID を示します。

ForwardingRules.N. 優先順位 Integer いいえ 1000

転送ルールの優先度。 有効な値: 110000。 値が小さいほど、優先度が高くなります。

ForwardingRules.N.RuleConditions.N.RuleConditionType String 任意 ホスト

転送条件のタイプ。 有効な値:

  • ホスト: ドメイン名
  • パス: パス
  • RequestHeader: HTTPヘッダー
  • クエリ: クエリ文字列
  • メソッド: HTTPメソッド
  • クッキー: クッキー
  • SourceIP: 送信元IPアドレス
ForwardingRules.N.RuleConditions.N.RuleConditionValue String 任意 ["www.example.com", "www.aliyun.com"]

転送条件タイプの値。

RuleConditionTypeパラメーターに基づいて異なるJSON文字列を指定する必要があります。

  • RuleConditionTypeHostに設定されている場合、このパラメーターはドメイン名の条件を指定します。 転送ルールには、タイプがホストの転送条件を1つだけ含めることができます。 転送条件には複数のドメイン名を指定できます。 複数のドメイン名の関係はORです。 ドメイン名は3 ~ 128文字で、英数字、ハイフン (-) 、ピリオド (.) を使用できます。 サポートされているワイルドカード文字は、アスタリスク (*) と疑問符 (?) です。 例: ["www.example.com", "www.aliyun.com"]
  • RuleConditionTypeパスに設定されている場合、このパラメーターはパス条件を指定します。 転送ルールには、タイプがパスである複数の転送条件を含めることができます。 複数のパス条件間の関係はORである。 転送条件には複数のパスを指定できます。 複数のパス間の関係はORである。 パスの長さは1 ~ 128文字で、先頭はスラッシュ (/) である必要があります。 パスには、英数字、および次の特殊文字を含めることができます: $ - _。 + / & ~ @ : '. サポートされているワイルドカード文字は、アスタリスク (*) と疑問符 (?) です。 例: ["/a", "/b/"]
  • RuleConditionTypeRequestHeaderに設定されている場合、このパラメーターはキーと値のペアで構成されるHTTPヘッダー条件を指定します。 転送条件のヘッダー値は一意である必要があります。 例: [{"header1":["value1","value2"]}]
    • キー: HTTPヘッダーのキーは1 ~ 40文字で、英数字、ハイフン (-) 、およびアンダースコア (_) を使用できます。
    • 値: HTTPヘッダーの値は1 ~ 128文字で、ASCII値が32以上127未満の印刷可能な文字を含めることができます。 値の先頭または末尾にスペース文字を使用することはできません。
  • RuleConditionTypeQueryに設定されている場合、このパラメーターはキーと値のペアで構成されるクエリ文字列条件を指定します。 例: [{"query1":["value1"]}, {"query2":["value2"]}]
    • キー: HTTPヘッダーのキーの長さは1 ~ 100文字で、ASCII値が32以上127未満の印刷可能な文字を含めることができます。 キーに大文字、スペース、または次の特殊文字を含めることはできません: [ ] { } < > \ ; / ? : @ & = + , $ % | "^ ~
    • 値: HTTPヘッダーの値は1 ~ 128文字で、ASCII値が32以上127未満の印刷可能な文字を含めることができます。 この値には、大文字、スペース文字、または次の特殊文字を含めることはできません: [ ] { } < > \ ; / ? : @ & = + , $ % | "^ ~
  • RuleConditionTypeMethodに設定されている場合、このパラメーターはHTTPメソッド条件を指定します。 有効な値: HEADGETPOSTOPTIONSPUTPATCHDELETE。 例: ["GET", "OPTIONS", "POST"]
  • RuleConditionTypeCookieに設定されている場合、このパラメーターはキーと値のペアで構成されるcookie条件を指定します。 例: [{"cookie1":["value1"]}, {"cookie2":["value2"]}]
    • キー: cookieのキーの長さは1 ~ 100文字で、ASCII値が32以上127未満の印刷可能な文字を含めることができます。 大文字、スペース、または# [ ] { } \ | < > & の特殊文字をキーに含めることはできません。
    • 値: cookieの値は1 ~ 128文字で、ASCII値が32以上127未満の印刷可能な文字を含めることができます。 大文字、空白文字、または# [ ] { } \ | < > & の特殊文字は使用できません。
  • RuleConditionTypeSourceIPに設定されている場合、このパラメーターは送信元IPアドレス条件を指定します。 1.1.XX.XX/32などのIPアドレスを指定できます。 CIDRブロック (2.2.XX.XX/24など) を指定することもできます。 転送ルールには、タイプが送信元IPアドレスの転送条件を1つだけ含めることができます。 転送条件では、複数の送信元IPアドレスを指定できます。 複数のソースIPアドレス間の関係はORです。 例: ["1.1.XX.XX/32", "2.2.XX.XX/24"]
ForwardingRules.N.RuleConditions.N.PathConfig 地図 いいえ

パスの設定。

説明 このパラメーターは使用しないことを推奨します。 RuleConditionTypeおよびRuleConditionValueパラメーターを使用して転送条件を設定することを推奨します。
ForwardingRules.N.RuleConditions.N.HostConfig 地図 いいえ

ドメイン名の設定。

説明 このパラメーターは使用しないことを推奨します。 RuleConditionTypeおよびRuleConditionValueパラメーターを使用して転送条件を設定することを推奨します。
ForwardingRules.N.RuleActions.N.Order Integer 20

転送の優先度。

説明 このパラメータは有効になりません。 このパラメーターを無視します。
ForwardingRules.N.RuleActions.N.RuleActionType String 必須 ForwardGroup

転送アクションのタイプ。 有効な値:

  • ForwardGroup: リクエストを転送します。
  • リダイレクト: リクエストをリダイレクトします。
  • FixResponse: 固定応答を返します。
  • 書き換え: リクエストを書き換えます。
  • AddHeader: リクエストにヘッダーを追加します。
  • RemoveHeaderConfig: リクエストからヘッダーを削除します。
ForwardingRules.N.RuleActions.N.RuleActionValue String 任意 [{"type":"endpointgroup", "value":"epg-bp1enpdcrqhl78g6r ****"}]

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

RuleActionTypeパラメーターに基づいて異なるJSON文字列を指定する必要があります。

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

  • RuleActionTypeForwardGroupに設定されている場合、このパラメーターは仮想エンドポイントグループの情報を指定します。 1つの仮想エンドポイントグループにのみリクエストを転送できます。 例: {"type":"endpointgroup", "value":"epg-bp1enpdcrqhl78g6r ****"}
    • type: このパラメーターをendpointgroupに設定します。
    • value: このパラメーターを仮想エンドポイントグループのIDに設定します。
  • RuleActionTypeRedirectに設定されている場合、このパラメーターはリダイレクト設定を指定します。 You残すことすべてのこれらの以下のパラメータ空またはすべての設定パラメータは、デフォルト値を転送アクションそのタイプはRedirect: プロトコルドメインポートパス、とクエリ。 例: {"protocol":"HTTP", "domain":"www.example.com", "port":"80", "path":"/a", "query":"value1", "code":"301" }
    • 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に設定されている場合、このパラメーターは固定応答を指定します。 例: {"code":"200", "type":"text/plain", "content":"dssacav" }
    • code: 返されるHTTPステータスコード。 応答ステータスコードは、2xx4xx、および5xxのいずれかである必要があります。 文字xは0から9までの数字を示します。
    • type: 応答コンテンツのタイプ。 有効な値: text/plaintext/csstext/htmlapplication/javascriptapplication/json
    • content: 応答内容。 応答内容は1,000文字を超えることはできません。漢字はサポートされていません。
  • RuleActionTypeAddHeaderに設定されている場合、このパラメーターは追加するHTTPヘッダーを指定します。 転送ルールにタイプがAddHeaderの転送アクションが含まれている場合、タイプがForwardGroupの別の転送アクションを指定する必要があります。 Example: [{"name":"header1","type":"userdefined", "value":"value"}].
    • name: HTTPヘッダーの名前。 名前は1 ~ 40文字で、英数字、ハイフン (-) 、およびアンダースコア (_) を使用できます。 AddHeaderで指定されたHTTPヘッダーの名前は一意である必要があり、RemoveHeaderで指定されたHTTPヘッダーの名前と同じにすることはできません。
    • type: HTTPヘッダーのコンテンツタイプ。 有効な値: user-definedrefsystem-defined
    • value: HTTPヘッダーの内容。 このパラメーターを空のままにすることはできません。 typeユーザー定義に設定した場合、コンテンツの長さは1 ~ 128文字で、ASCII値が32以上127未満の印刷可能な文字を含めることができます。 コンテンツには、英数字、ハイフン (-) 、およびアンダースコア (_) を使用できます。 コンテンツの先頭または末尾を空白文字にすることはできません。 typerefに設定した場合、コンテンツの長さは1 ~ 128文字で、英数字、ハイフン (-) 、アンダースコア (_) を使用できます。 コンテンツの先頭または末尾を空白文字にすることはできません。 typesystem-definedに設定した場合、ClientSrcIpのみがサポートされます。
  • RuleActionTypeRemoveHeaderに設定されている場合、このパラメーターは削除するHTTPヘッダーを指定します。 転送ルールにタイプがRemoveHeaderの転送アクションが含まれている場合、タイプがForwardGroupの別の転送アクションを指定する必要があります。 ヘッダーの長さは1 ~ 40文字で、英数字、ハイフン (-) 、およびアンダースコア (_) を使用できます。 例: ["header1"]
  • RuleActionType書き換えに設定されている場合、このパラメーターは書き換え設定を指定します。 転送ルールにタイプが書き換えの転送アクションが含まれている場合、タイプがForwardGroupの別の転送アクションを指定する必要があります。 例: {"domain":"value1", "path":"value2", "query":"value3"}
    • domain: リクエストのリダイレクト先のドメイン名。 デフォルト値: ${host} 。 ドメイン名を入力することもできます。 ドメイン名は3 ~ 128文字で、小文字、数字、および次の特殊文字のみを使用できます。 - ? = ~ _ - + / ^ * ! $ & | ( ) [ ]
    • path: リクエストのリダイレクト先のパス。 デフォルト値: ${path} 。 パスの長さは1 ~ 128文字である必要があります。 正規表現を使用するには、パスに文字、数字、および次の特殊文字を含めることができます。 - _ / = ? ~ ^ * $ : ( ) [ ] + | パスはチルダ (~) で始まる必要があります。 正規表現を使用しない場合は、パスに文字、数字、および次の特殊文字を含めることができます。 - _ / = ? :. パスはスラッシュ (/) で始まる必要があります。
    • query: リダイレクトするリクエストのクエリ文字列。 デフォルト値: ${query} 。 クエリ文字列を指定することもできます。 クエリ文字列の長さは1 ~ 128文字で、ASCII値が32以上127未満の印刷可能な文字を含めることができます。 クエリ文字列には、大文字、スペース文字、または [ ] { } < > # | & の特殊文字を含めることはできません。
ForwardingRules.N.RuleActions.N.ForwardGroupConfig 地図 いいえ

転送設定。

説明 このパラメーターは使用しないことを推奨します。 RuleActionTypeおよびRuleActionValueパラメーターを使用して転送アクションを設定することを推奨します。
ForwardingRules.N.ForwardingRuleName String 任意 test

転送ルールの名前。

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

ForwardingRules.N.RuleDirection String 任意 request

ルールが有効になる方向。 このパラメータは設定する必要がありません。

既定では、このパラメーターはrequestに設定されています。これは、ルールがリクエストに対して有効になることを示します。

レスポンスパラメーター

項目 データ型 例: 説明
RequestId String 64ADAB1E-0B7F-4FD8-A404-3BECC0E9CCFF

リクエストの ID です。

ForwardingRules ForwardingRulesの配列

転送ルールの詳細。

ForwardingRuleId String frule-bp1dii16gu9qdvb34 ****

転送ルールのID。

リクエストの例

http(s)://[Endpoint]/?Action=CreateForwardingRules
&RegionId=cn-hangzhou
&ClientToken=02fb3da4 ****
&AcceleratorId=ga-bp17frjjh0udz4q ****
&ListenerId=lsr-bp1s0vzbi5bxlx5 ****
&ForwardingRules=[{"Priority":1000,"RuleConditions":"Host","RuleConditionValue":"[\" www.example.com\", \" www.aliyun.com\"]"}],"RuleActions":[{"Order":20,"RuleActionType":"\" Ruletype "," \"endpointgroup\", \"value\":\"epg-bp1enpdcrqhl78g6r ****\"}]"}]
&共通リクエストパラメータ

正常に処理された場合のレスポンス例

XML 形式

HTTP/1.1 200 OK
Content-Type:application/xml

<CreateForwardingRulesResponse>
    <RequestId>64ADAB1E-0B7F-4FD8-A404-3BECC0E9CCFF</RequestId>
    <ForwardingRules>
        <ForwardingRuleId>frule-bp1dii16gu9qdvb34 ****</ForwardingRuleId>
    </ForwardingRules>
</CreateForwardingRulesResponse>

JSON 形式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "64ADAB1E-0B7F-4FD8-A404-3BECC0E9CCFF" 、
  "ForwardingRules" : [ {
    "ForwardingRuleId" : "frule-bp1dii16gu9qdvb34 ****"
  } ]
}

エラーコード

HttpCode エラーコード エラーメッセージ 説明
400 NotExist.Listener リスナーが存在しません。 指定されたリスナーが存在しない場合に返されるエラーメッセージ。
400 NotActive.Listener リスナーの状態がアクティブではありません。 指定されたリスナーが不安定な場合に返されるエラーメッセージ。
400 NotExist.Accelerator 高速化されたインスタンスは存在しません。 指定されたGAインスタンスが存在しない場合に返されるエラーメッセージ。
400 NotExist.BusinessRegion ビジネスリージョンは存在しません。 指定されたリージョンが存在しない場合に返されるエラーメッセージ。
400 NotExist.BasicBandwidthPackage 基本帯域幅パッケージを指定する必要があります。 基本帯域幅プランが指定されていない場合に返されるエラーメッセージ。
400 QuotaExceeded.EndPoint エンドポイントの最大数を超えています。 エンドポイントの数が上限に達した場合に返されるエラーメッセージ。
400 存在します。EndpointGroup エンドポイントグループは既に存在します。 指定されたエンドポイントグループが既に存在する場合に返されるエラーメッセージ。
400 NoPermission.VpcEndpoint 操作を実行する権限がありません。 サービスにリンクされたロールを作成する権限がない場合に返されるエラーメッセージ。 Alibaba Cloudアカウントの所有者または管理者に連絡して、AliyunGlobalAccelerationFullAccess権限を取得するか、カスタムポリシーを作成してください。 カスタムポリシーのサービス名をo vpcendpoint.ga.aliyuncs.comに設定し、サービスにリンクされたロールをAliyunServiceRoleForGaVpcEndpointに設定し、ram:CreateServiceLinkedRoleに付与する権限を設定します。
400 QuotaExceeded.ForwardingRule 転送ルールの数が制限を超えています。 転送ルールの数が上限に達した場合に返されるエラーメッセージ。

エラーコードリストについては、「API エラーセンター」をご参照ください。