Application Load Balancer (ALB) Enhanced Edition は、Model Context Protocol (MCP) プロキシ機能をサポートしています。この機能により、既存の MCP サーバー、REST API、または Function Compute 関数を迅速に統合できます。これらを AI エージェントが呼び出すための MCP 形式の統一されたツールインターフェイスに変換します。これにより、エージェントとエンタープライズシステム間の統合が簡素化されます。
ALB Enhanced Edition の MCP サービス管理はホワイトリスト機能です。ご利用には、ビジネス担当者にお問い合わせください。
ソリューションアーキテクチャ
ALB Enhanced Edition インスタンスは MCP リクエストを受信し、転送ルールに基づいて MCP サーバーグループにルーティングします。MCP サーバーグループは、バックエンドの MCP サーバー、REST API、および Function Compute サービスに対する統一されたプロキシとして機能します。応答を返す前に、それらを MCP 形式に変換します。MCP プロキシコンポーネントには、セマンティック検索機能も組み込まれています。これにより、エージェントはツールリスト全体をロードすることなく、必要に応じて一致するツールを取得できるため、トークンの消費が削減されます。
-
ALB Enhanced Edition インスタンス:負荷分散とトラフィック転送を提供します。
-
HTTPS リスナー:クライアントリクエストを受け付けます。
-
転送ルール:リクエストパスに基づいて MCP リクエストを照合し、MCP サーバーグループに転送します。
-
サービス拡張:MCP プロキシコンポーネントを使用して、MCP プロトコル変換とセマンティック検索を実行します。
-
MCP サーバーグループ:MCP サーバー、REST API、Function Compute の 3 種類のバックエンドサービスに対する統一されたプロキシとして機能します。
適用範囲
-
中国 (ウランチャブ) リージョンに VPC を作成済みであること。また、ウランチャブゾーン A に 1 つ、ウランチャブゾーン B にもう 1 つの vSwitch を作成済みであること。vSwitch には、ALB がパブリック MCP サービスにアクセスできるように パブリック SNAT が設定されていること。
-
カスタムドメイン名を登録済みであること。このトピックの ALB インスタンスは中国 (ウランチャブ) リージョンにデプロイされているため、ドメイン名には ICP 登録が必要です。
-
カスタムドメイン名に一致するサーバー証明書があること。証明書が Alibaba Cloud から購入したものでない場合は、Alibaba Cloud 証明書サービスにアップロードする必要があります。
操作手順
1. ALB Enhanced Edition インスタンスの作成
-
ALB コンソールにログインします。中国 (ウランチャブ) リージョンを選択し、ALB の作成 をクリックします。
-
購入ページで、次の設定を完了し、今すぐ作成 をクリックします。
-
リージョン:デフォルトで 中国 (ウランチャブ) が選択されています。
-
ネットワークタイプ:[パブリックネットワーク] を選択します。
-
VPC と ゾーン:ターゲット VPC を選択します。ウランチャブゾーン A と ウランチャブゾーン B を選択し、対応する vSwitch と [パブリック IP を自動的に割り当てる] を選択します。
-
IP バージョン:[IPv4] を選択します。
-
エディション (インスタンス料金):[Enhanced Edition] を選択します。
-
-
注文確認 ページで、インスタンスの設定詳細を確認し、今すぐ有効化 をクリックします。
2. サーバーグループの作成
空のサーバーグループの作成
空のサーバーグループを作成します。このグループは、後でリスナーを作成する際のデフォルトルールの転送先になります。このトピックでは、すべての MCP リクエストは転送ルールによって正確に照合され、デフォルトルールでは処理されません。したがって、このサーバーグループにバックエンドサーバーを追加する必要はありません。
-
サーバーグループコンソールで、サーバーグループの作成 をクリックします。
-
サーバーグループタイプ: サーバタイプ を選択します。
-
サーバーグループ名:識別しやすい名前を入力します。このトピックでは
sgp-defaultを使用します。 -
VPC:ALB インスタンスが配置されている VPC を選択します。
-
-
ダイアログボックスの下部で、Extensible インスタンス用 チェックボックスをオンにし、作成 をクリックします。
MCP サーバーグループの作成
-
サーバーグループコンソールで、サーバーグループの作成 をクリックします。サーバーグループタイプ を MCP Service に設定し、識別しやすい名前を付けます。このトピックでは
sgp-mcpを使用します。 -
作成 をクリックします。サーバーグループが作成されました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。
サーバーグループを作成したら、バックエンドサービスの種類に対応するタブの指示に従って MCP サービスを追加します。
MCP サーバー
この例では、自己構築した温度変換 MCP サービスを統合します。
MCP サービスを追加 をクリックし、次の設定を完了して、OK をクリックします。
-
サービス名:大規模言語モデル (LLM) が理解しやすい名前を入力します。このトピックでは、温度変換サービスを表す
temperature-converterを使用します。 -
サービスタイプ: MCP サーバ を選択します。
-
MCP サービスエンドポイント:MCP サービスのドメイン名エンドポイントを入力します (例:
http://mcp-backend.example.com:8000/mcp)。MCP サービスエンドポイント は直接の IP アドレスをサポートしていません。ドメイン名を使用する必要があります。ALB Enhanced Edition インスタンスが MCP サービスエンドポイントにアクセスする場合、パブリック権威 DNS 解決のみを使用します。VPC 内のサービスにアクセスするには、パブリック DNS 上でドメイン名を対応するプライベート IP アドレスに解決する必要があります。 -
アクセス方式: [Streamable HTTP] を選択します。
以下は、温度変換を提供する MCP サーバーのサンプルコードです。ALB インスタンスと同じ VPC 内の ECS インスタンスにデプロイできます。この ECS インスタンスは、ALB インスタンスとのネットワーク接続が必要です。セキュリティグループルールは、ALB が MCP サービスポート (このトピックでは 8000) にアクセスできるように許可する必要があります。このトピックでは、Alibaba Cloud Linux 3.2104 オペレーティングシステムを例に説明します。
-
ECS インスタンスにログインし、Python 3.11 と pip をインストールしてから、MCP の依存関係をインストールします。
# Python 3.11 をインストール (3.10 以降が必要) sudo yum install -y python3.11 python3.11-pip # MCP の依存関係をインストール sudo pip3.11 install "mcp>=1.0.0" -
プロジェクトディレクトリとサーバー側コードを作成します。
mkdir mcp-server && cd mcp-serverサーバー側コードファイル
server.pyを作成します。from mcp.server.fastmcp import FastMCP server = FastMCP("temperature-converter", host="0.0.0.0") @server.tool() def celsius_to_fahrenheit(celsius: float) -> str: """ 温度を摂氏から華氏に変換します。 Args: celsius: 摂氏での温度 Returns: 華氏での温度 (例: "77.0") """ fahrenheit = celsius * 9 / 5 + 32 return str(fahrenheit) @server.tool() def fahrenheit_to_celsius(fahrenheit: float) -> str: """ 温度を華氏から摂氏に変換します。 Args: fahrenheit: 華氏での温度 Returns: 摂氏での温度 (例: "25.0") """ celsius = (fahrenheit - 32) * 5 / 9 return str(celsius) if __name__ == "__main__": server.run(transport="streamable-http") -
MCP サーバーを起動します。
nohup python3.11 server.py > server.log 2>&1 &ログを表示して、起動が成功したことを確認します。
cat server.log次のような出力は、起動が成功したことを示します。
INFO: Started server process [12345] INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) -
サービスが正しく実行されていることを確認します。次のコマンドを実行します。
curl -X POST http://127.0.0.1:8000/mcp \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'serverInfoフィールドを含む JSON 応答は、MCP サーバーが正しく実行されていることを示します。
REST API
この例では、Alibaba Cloud OpenAPI を統合して ALB リソースを照会および管理します。Alibaba Cloud OpenAPI には AccessKey 認証が必要です。まず、認証情報を作成する必要があります。
-
ALB コンソールの左側のナビゲーションウィンドウで、認証情報管理 を選択し、認証情報の作成 をクリックします。認証情報タイプ を AccessKey に設定します。管理する Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret を入力し、作成 をクリックします。この AccessKey は、対応する API を呼び出す権限を持っている必要があります。
AccessKey 認証情報タイプはホワイトリスト機能です。ご利用には、アカウントマネージャーに連絡してアクセスをリクエストしてください。
-
MCP サーバーグループに戻り、MCP サービスを追加 をクリックし、次の設定を完了して、OK をクリックします。
-
サービス名:LLM が理解しやすい名前を入力します。このトピックでは、ALB 管理サービスを表す
alb-operatorを使用します。 -
サービスタイプ:REST API を選択します。
-
OpenAPI 設定: Alibaba Cloud OpenAPI Portal にアクセスします。 左側のナビゲーションウィンドウで、Get Metadata をクリックして OpenAPI 設定ファイルをダウンロードします。 ファイルを編集して必須の API のみを残し、貼り付けまたはインポートします。 このトピックでは、クエリ関連の API のみを保持する例を使用します。 この例のエンドポイントで指定されているリージョンは 中国 (ウランチャブ) です。 必要に応じて変更できます。
OpenAPI 設定ファイルの例 (クエリ関連の API のみ保持)
{ "version": "1.0", "info": { "style": "RPC", "product": "Alb", "version": "2020-06-16" }, "components": { "schemas": {} }, "apis": { "DescribeRegions": { "summary": "ALB で利用可能なリージョンを照会します。", "methods": [ "get", "post" ], "schemes": [ "http", "https" ], "security": [ { "AK": [] } ], "operationType": "read", "deprecated": false, "systemTags": { "operationType": "get", "abilityTreeCode": "203", "abilityTreeNodes": [ "FEATUREslbRXTOWD" ], "tenantRelevance": "publicInformation" }, "parameters": [ { "name": "AcceptLanguage", "in": "query", "schema": { "title": "言語", "description": "サポートされている言語。有効値:\n\n- **zh-CN** (デフォルト):中国語\n\n- **en-US**:英語\n\n- **ja**:日本語", "type": "string", "required": false, "example": "zh-CN", "default": "zh-CN" } } ], "responses": { "200": { "schema": { "title": "応答のスキーマ", "description": "返されるデータの構造。", "type": "object", "properties": { "Regions": { "title": "リージョンのリスト", "description": "リージョンのリスト。", "type": "array", "items": { "description": "リージョン情報の構造。", "type": "object", "properties": { "LocalName": { "title": "名前", "description": "リージョンの名前。", "type": "string", "example": "China (Hangzhou)" }, "RegionEndpoint": { "title": "エンドポイント", "description": "リージョン内のサービスのエンドポイント。", "type": "string", "example": "alb.cn-hangzhou.aliyuncs.com" }, "RegionId": { "title": "リージョン ID", "description": "リージョンの ID。", "type": "string", "example": "cn-hangzhou" } } } }, "RequestId": { "title": "リクエストの ID", "description": "リクエスト ID。", "type": "string", "example": "593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3" } } } } }, "responseDemo": "[{\"type\":\"json\",\"example\":\"{\\n \\\"Regions\\\": [\\n {\\n \\\"LocalName\\\": \\\"China (Hangzhou)\\\",\\n \\\"RegionEndpoint\\\": \\\"alb.cn-hangzhou.aliyuncs.com\\\",\\n \\\"RegionId\\\": \\\"cn-hangzhou\\\"\\n }\\n ],\\n \\\"RequestId\\\": \\\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\\"\\n}\",\"errorExample\":\"\"},{\"type\":\"xml\",\"example\":\"<DescribeRegionsResponse>\\n <Regions>\\n <LocalName>China (Hangzhou)</LocalName>\\n <RegionEndpoint>alb.cn-hangzhou.aliyuncs.com</RegionEndpoint>\\n <RegionId>cn-hangzhou</RegionId>\\n </Regions>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n</DescribeRegionsResponse>\",\"errorExample\":\"\"}]", "title": "リージョンの照会" }, "DescribeZones": { "summary": "ALB のリージョン内のゾーンのリストを照会します。", "methods": [ "get", "post" ], "schemes": [ "http", "https" ], "security": [ { "AK": [] } ], "operationType": "read", "deprecated": false, "systemTags": { "operationType": "get", "abilityTreeCode": "204", "abilityTreeNodes": [ "FEATUREslbRXTOWD" ], "tenantRelevance": "publicInformation" }, "parameters": [ { "name": "AcceptLanguage", "in": "query", "schema": { "description": "サポートされている言語。有効値:\n\n- **zh-CN** (デフォルト):中国語\n\n- **en-US**:英語\n\n- **ja**:日本語", "type": "string", "required": false, "example": "zh-CN", "default": "zh-CN" } } ], "responses": { "200": { "schema": { "title": "応答のスキーマ", "description": "返されるデータの構造。", "type": "object", "properties": { "RequestId": { "title": "リクエストの ID", "description": "リクエスト ID。", "type": "string", "example": "593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3" }, "Zones": { "title": "ゾーンのリスト", "description": "ゾーンのリスト。", "type": "array", "items": { "description": "ゾーン情報の構造。", "type": "object", "properties": { "LocalName": { "title": "ゾーン名", "description": "ゾーンの名前。", "type": "string", "example": "Hangzhou Zone G" }, "ZoneId": { "title": "ゾーン ID", "description": "ゾーンの ID。", "type": "string", "example": "cn-hangzhou-g" } } } } } } } }, "responseDemo": "[{\"type\":\"json\",\"example\":\"{\\n \\\"RequestId\\\": \\\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\\",\\n \\\"Zones\\\": [\\n {\\n \\\"LocalName\\\": \\\"Hangzhou Zone G\\\",\\n \\\"ZoneId\\\": \\\"cn-hangzhou-g\\\"\\n }\\n ]\\n}\",\"errorExample\":\"\"},{\"type\":\"xml\",\"example\":\"<DescribeZonesResponse>\\n <RequestId>593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3</RequestId>\\n <Zones>\\n <LocalName>China (Hangzhou) Zone G</LocalName>\\n <ZoneId>cn-hangzhou-g</ZoneId>\\n </Zones>\\n</DescribeZonesResponse>\",\"errorExample\":\"\"}]", "title": "ゾーンの照会" }, "GetLoadBalancerAttribute": { "summary": "指定された SLB インスタンスの詳細を照会します。", "methods": [ "get", "post" ], "schemes": [ "http", "https" ], "security": [ { "AK": [] } ], "operationType": "read", "deprecated": false, "systemTags": { "operationType": "get", "abilityTreeCode": "200", "abilityTreeNodes": [ "FEATUREslbM7ALO6", "FEATUREslbK3ZR0L", "FEATUREslbN5IE4S" ] }, "parameters": [ { "name": "LoadBalancerId", "in": "query", "schema": { "title": "インスタンス ID", "description": "Application Load Balancer インスタンスの ID。", "type": "string", "required": true, "example": "alb-o9ulmq5hgn68jk****" } } ], "responses": { "200": { "schema": { "title": "応答のスキーマ", "description": "Application Load Balancer インスタンスの詳細な設定。", "type": "object", "properties": { "AccessLogConfig": { "title": "アクセスログのプロパティ", "description": "アクセスログの設定。", "type": "object", "properties": { "LogProject": { "title": "アクセスログが配信されるログプロジェクト", "description": "ログプロジェクト。", "type": "string", "example": "sls-setter" }, "LogStore": { "title": "削除保護有効化時間", "description": "ログストア。\n\n", "type": "string", "example": "test" } } }, "AddressAllocatedMode": { "title": "アドレス割り当て方法", "description": "アドレスモード。有効値:\n\n- **Fixed**:固定 IP アドレスが使用されます。\n\n- **Dynamic**:各ゾーンで IP アドレスが動的に割り当てられます。", "type": "string", "example": "Dynamic" }, "AddressType": { "title": "アドレスタイプ", "description": "Application Load Balancer インスタンスのネットワークアドレスタイプ。有効値:\n\n- **Internet**:SLB インスタンスにはパブリック IP アドレスがあります。DNS ドメイン名はパブリック IP アドレスに解決されるため、インスタンスはインターネット経由でアクセスできます。\n\n- **Intranet**:SLB インスタンスにはプライベート IP アドレスしかありません。DNS ドメイン名はプライベート IP アドレスに解決されるため、インスタンスはそれが配置されている VPC の内部ネットワークからのみアクセスできます。\n\n", "type": "string", "example": "Intranet" }, "BandwidthPackageId": { "title": "帯域幅プラン ID", "description": "パブリック向けインスタンスに関連付けられている共有帯域幅プランの ID。", "type": "string", "example": "cbwp-bp1vevu8h3ieh****" }, "CreateTime": { "title": "リソース作成時間", "description": "リソースが作成された時間 (UTC)。形式は `yyyy-MM-ddTHH:mm:ssZ` です。", "type": "string", "example": "2022-07-02T02:49:05Z" }, "DNSName": { "title": "DNS 名", "description": "DNS ドメイン名。", "type": "string", "example": "alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com" }, "DeletionProtectionConfig": { "title": "ロードバランサーの削除保護情報", "description": "削除保護の設定。", "type": "object", "properties": { "Enabled": { "title": "削除保護ステータス", "description": "削除保護のステータス。有効値:\n\n- **true**:有効。\n\n- **false**:無効。", "type": "boolean", "example": "true" }, "EnabledTime": { "title": "削除保護有効化時間", "description": "削除保護が有効になった時間 (UTC)。形式は `yyyy-MM-ddTHH:mm:ssZ` です。", "type": "string", "example": "2022-08-02T02:49:05Z" } } }, "LoadBalancerBillingConfig": { "title": "課金関連のプロパティ", "description": "Application Load Balancer インスタンスの課金設定。", "type": "object", "properties": { "PayType": { "title": "インスタンスの課金方法", "description": "課金方法。\n\n**PostPay** は従量課金を示します。", "type": "string", "example": "PostPay", "default": "PostPay" } } }, "LoadBalancerBussinessStatus": { "title": "インスタンスのビジネスステータス", "description": "Application Load Balancer のビジネスステータス。有効値:\n\n- **Abnormal**:異常。\n\n- **Normal**:正常。", "type": "string", "example": "Normal" }, "LoadBalancerEdition": { "title": "ロードバランサーのエディション", "description": "Application Load Balancer のエディション。エディションによって機能制限と課金ポリシーが異なります。有効値:\n\n- **Basic**:Basic Edition。\n\n- **Standard**:Standard Edition。\n\n- **StandardWithWaf**:WAF 対応エディション。", "type": "string", "example": "Standard" }, "LoadBalancerId": { "title": "ロードバランサー ID", "description": "Application Load Balancer インスタンスの ID。", "type": "string", "example": "alb-o9ulmq5hgn68jk****" }, "LoadBalancerName": { "title": "インスタンス名", "description": "インスタンス名。\n\n長さは 2 ~ 128 文字の英字または漢字です。英字または漢字で始まり、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。", "type": "string", "example": "alb1" }, "LoadBalancerOperationLocks": { "title": "ロック理由", "description": "Application Load Balancer の操作ロック設定。", "type": "array", "items": { "description": "Application Load Balancer の操作ロック設定。", "type": "object", "properties": { "LockReason": { "title": "ロック理由", "description": "ロックの理由。これは **LoadBalancerBussinessStatus** が **Abnormal** の場合に有効です。", "type": "string", "example": "Overdue Payment" }, "LockType": { "title": "ロックタイプ", "description": "ロックのタイプ。有効値:\n\n- **SecurityLocked**:セキュリティロック。\n\n- **RelatedResourceLocked**:関連リソースロック。\n\n- **FinancialLocked**:財務ロック。\n\n- **ResidualLocked**:残余ロック。", "type": "string", "example": "FinancialLocked" } } } }, "LoadBalancerStatus": { "title": "インスタンスステータス", "description": "Application Load Balancer インスタンスのステータス。有効値:\n\n- **Inactive**:停止。インスタンスリスナーはトラフィックを転送しなくなります。\n\n- **Active**:実行中。\n\n- **Provisioning**:作成中。\n\n- **Configuring**:変更中。\n\n- **CreateFailed**:作成失敗。この時点では料金は発生せず、インスタンスは削除のみ可能です。", "type": "string", "example": "Active" }, "ModificationProtectionConfig": { "title": "ロードバランサーの変更保護情報", "description": "変更保護の設定。", "type": "object", "properties": { "Reason": { "title": "変更保護ステータスを設定する理由", "description": "変更保護を有効にする理由。\n\n長さは 2 ~ 128 文字の英字または漢字です。大文字または小文字の英字または漢字で始まり、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。\n\nこれは **Status** が **ConsoleProtection** の場合にのみ返されます。", "type": "string", "example": "Managed Instance" }, "Status": { "title": "ロードバランサーの変更保護ステータス", "description": "Application Load Balancer インスタンスの変更保護ステータス。有効値:\n\n- **NonProtection**:変更保護は有効になっていません。**Reason** が設定されている場合、**Reason** は強制的にクリアされます。\n\n- **ConsoleProtection**:コンソール変更保護が有効になっています。**Reason** が設定されている場合、**Reason** は有効になります。\n\n> 値が **ConsoleProtection** の場合、つまり変更保護が有効になっている場合、ユーザーは SLB コンソールを介してインスタンス設定を変更することはできませんが、API を呼び出すことで変更できます。", "type": "string", "example": "ConsoleProtection" } } }, "RegionId": { "title": "リージョン", "description": "Application Load Balancer インスタンスのリージョン ID。", "type": "string", "example": "cn-hangzhou" }, "RequestId": { "title": "リクエストの ID", "description": "リクエスト ID。", "type": "string", "example": "365F4154-92F6-4AE4-92F8-7FF34B540710" }, "ResourceGroupId": { "title": "エンタープライズリソースグループ ID", "description": "エンタープライズリソースグループ ID。", "type": "string", "example": "rg-atstuj3rtop****" }, "Tags": { "title": "タグのリスト", "description": "タグ。", "type": "array", "items": { "description": "タグ。", "type": "object", "properties": { "Key": { "title": "インスタンスのタグキー", "description": "インスタンスのタグキー。\n\n最大 128 文字で、`aliyun` または `acs:` で始めることはできません。`http://` または `https://` を含めることはできません。", "type": "string", "example": "FinanceDept" }, "Value": { "title": "インスタンスのタグ値", "description": "インスタンスのタグ値。\n\n最大 128 文字で、`aliyun` または `acs:` で始めることはできません。`http://` または `https://` を含めることはできません。", "type": "string", "example": "FinanceJoshua" } } } }, "VpcId": { "title": "VPC ネットワーク ID", "description": "インスタンスの VPC ID。", "type": "string", "example": "vpc-bp1b49rqrybk45nio****" }, "ZoneMappings": { "title": "ロードバランサーのゾーンリソース", "description": "ゾーンと vSwitch のマッピングのリスト。最大 10 ゾーンを返すことができます。現在のリージョンが 2 つ以上のゾーンをサポートしている場合、少なくとも 2 つのゾーンが返されます。", "type": "array", "items": { "description": "ゾーンと vSwitch のマッピングのリスト。最大 10 ゾーンを返すことができます。現在のリージョンが 2 つ以上のゾーンをサポートしている場合、少なくとも 2 つのゾーンが返されます。", "type": "object", "properties": { "LoadBalancerAddresses": { "title": "固定 VIP モードでは、このゾーンのロードバランサーのアドレスのリスト", "description": "インスタンスアドレス。", "type": "array", "items": { "description": "インスタンスアドレス。", "type": "object", "properties": { "Address": { "title": "IP アドレス", "description": "IPv4 アドレスを識別します。\n\nこれは **AddressIPVersion** が **IPv4** または **DualStack** の場合に有効です。パブリックまたはプライベート IP アドレスは **AddressType** によって決定されます。", "type": "string", "example": "10.1.0.61" }, "Ipv6Address": { "title": "IPv6 アドレス", "description": "IPv6 アドレスを識別します。\n\nこれは **AddressIPVersion** が **DualStack** の場合にのみ有効です。パブリックまたはプライベート IP アドレスは **Ipv6AddressType** によって決定されます。", "type": "string", "example": "2408:xxxx:249:dd01:6f4:750f:xxxx:bcd9" }, "IntranetAddress": { "title": "プライベートエンドポイント", "description": "IPv4 プライベート IP アドレス。", "type": "string", "example": "10.1.0.61" }, "AllocationId": { "description": "EIP の ID。", "type": "string", "example": "eip-uf6wm****1zj9" }, "EipType": { "description": "パブリック EIP のタイプ。有効値:\n\n- **Common**:EIP。\n- **Anycast**:Anycast EIP。\n\n> ALB が Anycast EIP のバインドをサポートするリージョンについては、「[使用制限](~~460727~~)」をご参照ください。", "type": "string", "example": "Common" }, "IntranetAddressHcStatus": { "description": "Application Load Balancer インスタンスのプライベート IPv4 アドレスのヘルスチェックステータス。\n\nこれはゾーンステータスが Active の場合にのみ返されます。有効値:\n\n- **Healthy**:正常。\n- **Unhealthy**:異常。", "type": "string", "example": "Healthy" }, "Ipv6AddressHcStatus": { "description": "Application Load Balancer インスタンスの IPv6 アドレスのヘルスチェックステータス。\n\nこれはゾーンステータスが Active の場合にのみ返されます。有効値:\n\n- **Healthy**:正常。\n- **Unhealthy**:異常。", "type": "string", "example": "Healthy" }, "Ipv4LocalAddresses": { "description": "IPv4 ローカルアドレスのリスト。これは、ALB とバックエンドサービス間の対話に使用されるアドレスのリストです。", "type": "array", "items": { "description": "IPv4 ローカルアドレス。", "type": "string", "example": "10.1.0.62" } }, "Ipv6LocalAddresses": { "description": "IPv6 ローカルアドレスのリスト。これは、ALB とバックエンドサービス間の対話に使用されるアドレスのリストです。", "type": "array", "items": { "description": "IPv6 ローカルアドレス。", "type": "string", "example": "2408:xxxx:249:dd01:6f4:750f:xxxx:bcda" } } } } }, "VSwitchId": { "title": "vSwitch ID", "description": "ゾーンに対応する vSwitch。各ゾーンは 1 つの vSwitch と 1 つのサブネットしか使用できません。", "type": "string", "example": "vsw-bp12mw1f8k3jgy****" }, "ZoneId": { "title": "ゾーン ID", "description": "Application Load Balancer インスタンスのゾーン ID。\n\n[DescribeZones](~~189196~~) API を呼び出すことで、ゾーン ID に対応するゾーンに関する情報を取得できます。", "type": "string", "example": "cn-hangzhou-a" }, "Status": { "description": "ゾーンステータス。有効値:\n\n- **Active**:実行中。\n- **Stopped**:停止。\n- **Shifted**:削除済み。\n- **Starting**:開始中。\n- **Stopping**:停止中。", "type": "string", "example": "Active" } } } }, "AddressIpVersion": { "title": "プロトコルバージョン", "description": "プロトコルバージョン。有効値:\n\n- **IPv4**:IPv4\n- **DualStack**:デュアルスタック", "type": "string", "example": "DualStack" }, "Ipv6AddressType": { "title": "IPv6 アドレスタイプ", "description": "Application Load Balancer の IPv6 アドレスのネットワークアドレスタイプ。有効値:\n\n- **Internet**:パブリックネットワーク。SLB インスタンスにはパブリック IP アドレスがあります。DNS ドメイン名はパブリック IP アドレスに解決されるため、インターネット経由でアクセスできます。\n- **Intranet**:プライベートネットワーク。SLB インスタンスにはプライベート IP アドレスしかありません。DNS ドメイン名はプライベート IP アドレスに解決されるため、それが配置されている VPC の内部ネットワークからのみアクセスできます。", "type": "string", "example": "Intranet" }, "SecurityGroupIds": { "description": "Application Load Balancer インスタンスにバインドされたセキュリティグループ ID のセット。", "type": "array", "items": { "description": "Application Load Balancer インスタンスにバインドされたセキュリティグループの ID。", "type": "string", "example": "sg-uf63j385dzwlm6cy****" } } } } } }, "errorCodes": { "400": [ { "errorCode": "Forbidden.LoadBalancer", "errorMessage": "Authentication has failed for LoadBalancer." } ], "404": [ { "errorCode": "ResourceNotFound.LoadBalancer", "errorMessage": "The specified resource %s is not found." } ] }, "responseDemo": "[{\"type\":\"json\",\"example\":\"{\\n \\\"AccessLogConfig\\\": {\\n \\\"LogProject\\\": \\\"sls-setter\\\",\\n \\\"LogStore\\\": \\\"test\\\"\\n },\\n \\\"AddressAllocatedMode\\\": \\\"Dynamic\\\",\\n \\\"AddressType\\\": \\\"Intranet\\\",\\n \\\"BandwidthPackageId\\\": \\\"cbwp-bp1vevu8h3ieh****\\\",\\n \\\"CreateTime\\\": \\\"2022-07-02T02:49:05Z\\\",\\n \\\"DNSName\\\": \\\"alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com\\\",\\n \\\"DeletionProtectionConfig\\\": {\\n \\\"Enabled\\\": true,\\n \\\"EnabledTime\\\": \\\"2022-08-02T02:49:05Z\\\"\\n },\\n \\\"LoadBalancerBillingConfig\\\": {\\n \\\"PayType\\\": \\\"PostPay\\\"\\n },\\n \\\"LoadBalancerBussinessStatus\\\": \\\"Normal\\\",\\n \\\"LoadBalancerEdition\\\": \\\"Standard\\\",\\n \\\"LoadBalancerId\\\": \\\"alb-o9ulmq5hgn68jk****\\\",\\n \\\"LoadBalancerName\\\": \\\"alb1\\\",\\n \\\"LoadBalancerOperationLocks\\\": [\\n {\\n \\\"LockReason\\\": \\\"Overdue Payment\\\",\\n \\\"LockType\\\": \\\"FinancialLocked\\\"\\n }\\n ],\\n \\\"LoadBalancerStatus\\\": \\\"Active\\\",\\n \\\"ModificationProtectionConfig\\\": {\\n \\\"Reason\\\": \\\"Managed Instance\\\",\\n \\\"Status\\\": \\\"ConsoleProtection\\\"\\n },\\n \\\"RegionId\\\": \\\"cn-hangzhou\\\",\\n \\\"RequestId\\\": \\\"365F4154-92F6-4AE4-92F8-7FF34B540710\\\",\\n \\\"ResourceGroupId\\\": \\\"rg-atstuj3rtop****\\\",\\n \\\"Tags\\\": [\\n {\\n \\\"Key\\\": \\\"FinanceDept\\\",\\n \\\"Value\\\": \\\"FinanceJoshua\\\"\\n }\\n ],\\n \\\"VpcId\\\": \\\"vpc-bp1b49rqrybk45nio****\\\",\\n \\\"ZoneMappings\\\": [\\n {\\n \\\"LoadBalancerAddresses\\\": [\\n {\\n \\\"Address\\\": \\\"10.1.0.61\\\",\\n \\\"Ipv6Address\\\": \\\"2408:xxxx:249:dd01:6f4:750f:xxxx:bcd9\\\",\\n \\\"IntranetAddress\\\": \\\"10.1.0.61\\\",\\n \\\"AllocationId\\\": \\\"eip-uf6wm****1zj9\\\",\\n \\\"EipType\\\": \\\"Common\\\",\\n \\\"IntranetAddressHcStatus\\\": \\\"Healthy\\\",\\n \\\"Ipv6AddressHcStatus\\\": \\\"Healthy\\\",\\n \\\"Ipv4LocalAddresses\\\": [\\n \\\"10.1.0.62\\\"\\n ],\\n \\\"Ipv6LocalAddresses\\\": [\\n \\\"2408:xxxx:249:dd01:6f4:750f:xxxx:bcda\\\"\\n ]\\n }\\n ],\\n \\\"VSwitchId\\\": \\\"vsw-bp12mw1f8k3jgy****\\\",\\n \\\"ZoneId\\\": \\\"cn-hangzhou-a\\\",\\n \\\"Status\\\": \\\"Active\\\"\\n }\\n ],\\n \\\"AddressIpVersion\\\": \\\"DualStack\\\",\\n \\\"Ipv6AddressType\\\": \\\"Intranet\\\",\\n \\\"SecurityGroupIds\\\": [\\n \\\"sg-uf63j385dzwlm6cy****\\\"\\n ]\\n}\",\"errorExample\":\"\"},{\"type\":\"xml\",\"example\":\"<GetLoadBalancerAttributeResponse>\\n <AccessLogConfig>\\n <LogProject>sls-setter</LogProject>\\n <LogStore>test</LogStore>\\n </AccessLogConfig>\\n <AddressAllocatedMode>Dynamic</AddressAllocatedMode>\\n <AddressType>Intranet</AddressType>\\n <BandwidthPackageId>cbwp-bp1vevu8h3ieh****</BandwidthPackageId>\\n <CreateTime>2022-07-02T02:49:05Z</CreateTime>\\n <DNSName>alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com</DNSName>\\n <DeletionProtectionConfig>\\n <Enabled>true</Enabled>\\n <EnabledTime>2022-08-02T02:49:05Z</EnabledTime>\\n </DeletionProtectionConfig>\\n <LoadBalancerBillingConfig>\\n <PayType>PostPay</PayType>\\n </LoadBalancerBillingConfig>\\n <LoadBalancerBussinessStatus>Normal</LoadBalancerBussinessStatus>\\n <LoadBalancerEdition>Standard</LoadBalancerEdition>\\n <LoadBalancerId>alb-o9ulmq5hgn68jk****</LoadBalancerId>\\n <LoadBalancerName>alb1</LoadBalancerName>\\n <LoadBalancerOperationLocks>\\n <LockReason>Overdue Payment</LockReason>\\n <LockType>FinancialLocked</LockType>\\n </LoadBalancerOperationLocks>\\n <LoadBalancerStatus>Active</LoadBalancerStatus>\\n <ModificationProtectionConfig>\\n <Reason>Managed Instance</Reason>\\n <Status>ConsoleProtection</Status>\\n </ModificationProtectionConfig>\\n <RegionId>cn-hangzhou</RegionId>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <ResourceGroupId>rg-atstuj3rtop****</ResourceGroupId>\\n <Tags>\\n <Key>FinanceDept</Key>\\n <Value>FinanceJoshua</Value>\\n </Tags>\\n <VpcId>vpc-bp1b49rqrybk45nio****</VpcId>\\n <ZoneMappings>\\n <LoadBalancerAddresses>\\n <Address>192.168.10.1</Address>\\n <Ipv6Address>2408:XXXX:39d:eb00::/56</Ipv6Address>\\n </LoadBalancerAddresses>\\n <VSwitchId>vsw-bp12mw1f8k3jgy****</VSwitchId>\\n <ZoneId>cn-hangzhou-a</ZoneId>\\n </ZoneMappings>\\n <AddressIpVersion>DualStack</AddressIpVersion>\\n <Ipv6AddressType>Intranet</Ipv6AddressType>\\n</GetLoadBalancerAttributeResponse>\",\"errorExample\":\"\"}]", "title": "ロードバランサーインスタンスの詳細を照会" }, "ListLoadBalancers": { "summary": "インスタンス設定を照会します。", "methods": [ "get", "post" ], "schemes": [ "http", "https" ], "security": [ { "AK": [] } ], "operationType": "read", "deprecated": false, "systemTags": { "operationType": "get", "riskType": "none", "chargeType": "free", "abilityTreeNodes": [ "FEATUREslb6TP8T4" ] }, "parameters": [ { "name": "NextToken", "in": "query", "schema": { "title": "読み取りを開始する現在の開始位置をマークします。最初から開始するには空のままにします。", "description": "次のクエリのトークン。有効値:\n- これが最初のクエリであるか、これ以上クエリがない場合は、これを入力する必要はありません。\n- 次のクエリがある場合は、前の API 呼び出しの **NextToken** の値に設定します。", "type": "string", "required": false, "example": "FFmyTO70tTpLG6I3FmYAXGKPd****" } }, { "name": "MaxResults", "in": "query", "schema": { "title": "今回読み取るデータレコードの最大数。このパラメーターはオプションです。値は 1 ~ 100 です。ユーザーが値を渡さない場合、デフォルトは 20 です。", "description": "ページ分割されたクエリでページごとに表示するエントリ数。値の範囲は **1** ~ **100** です。デフォルト値は **20** です。\n\n", "type": "integer", "format": "int32", "required": false, "example": "20" } }, { "name": "ZoneId", "in": "query", "schema": { "title": "ゾーン ID", "description": "Application Load Balancer インスタンスが配置されているゾーン ID。\n\n[DescribeZones](~~189196~~) API を呼び出すことで、ゾーン ID に対応するゾーンに関する情報を取得できます。", "type": "string", "required": false, "example": "cn-hangzhou-a" } }, { "name": "LoadBalancerStatus", "in": "query", "schema": { "title": "インスタンスステータス", "description": "Application Load Balancer インスタンスのステータス。有効値:\n\n- **Inactive**:停止。リスナーはトラフィックを転送しなくなります。\n\n- **Active**:実行中。\n\n- **Provisioning**:作成中。\n\n- **Configuring**:変更中。\n\n- **CreateFailed**:作成失敗。この時点では料金は発生せず、インスタンスは削除のみ可能です。システムは、過去 1 日に作成に失敗したインスタンスを自動的にクリーンアップします。", "type": "string", "required": false, "example": "Active" } }, { "name": "LoadBalancerBussinessStatus", "in": "query", "schema": { "title": "インスタンスのビジネスステータス", "description": "Application Load Balancer のビジネスステータス。有効値:\n\n- **Abnormal**:異常。\n\n- **Normal**:正常。", "type": "string", "required": false, "example": "Normal" } }, { "name": "LoadBalancerIds", "in": "query", "style": "flat", "schema": { "title": "インスタンス ID のリスト、N は最大 20 をサポート", "description": "インスタンス ID のリスト。最大 20 の Application Load Balancer インスタンス ID がサポートされています。", "type": "array", "items": { "description": "インスタンスの ID。", "type": "string", "required": false, "example": "alb-o9ulmq5hgn68jk****" }, "required": false, "maxItems": 21, "minItems": 1 } }, { "name": "LoadBalancerNames", "in": "query", "style": "flat", "schema": { "title": "インスタンス名のリスト、N は最大 10 をサポート", "description": "インスタンス名のリスト。最大 10 のインスタンス名がサポートされています。", "type": "array", "items": { "description": "インスタンス名。\n\n長さは 2 ~ 128 文字の英字または漢字です。大文字または小文字の英字または漢字で始まり、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。", "type": "string", "required": false, "example": "alb-instance-test" }, "required": false, "maxItems": 11, "minItems": 1 } }, { "name": "VpcIds", "in": "query", "style": "flat", "schema": { "title": "VPC ID のリスト", "description": "Application Load Balancer インスタンスが属する VPC ID。最大 10 の VPC ID がサポートされています。", "type": "array", "items": { "description": "Application Load Balancer インスタンスが属する VPC ID。", "type": "string", "required": false, "example": "vpc-bp1b49rqrybk45nio****" }, "required": false, "maxItems": 11, "minItems": 1 } }, { "name": "Tag", "in": "query", "style": "flat", "schema": { "title": "タグのリスト", "description": "インスタンスのタグ。", "type": "array", "items": { "description": "インスタンスのタグの構造。", "type": "object", "properties": { "Key": { "title": "インスタンスのタグキー", "description": "インスタンスのタグキー。最大 20 のタグキーを入力できます。この値を入力すると、空の文字列にすることはできません。\n\n最大 64 文字で、`aliyun` または `acs:` で始めることはできません。`http://` または `https://` を含めることはできません。", "type": "string", "required": false, "example": "KeyTest" }, "Value": { "title": "インスタンスのタグ値", "description": "インスタンスのタグ値。最大 20 のタグ値を入力できます。この値を入力すると、空の文字列にすることができます。\n\n最大 128 文字で、`aliyun` または `acs:` で始めることはできません。`http://` または `https://` を含めることはできません。", "type": "string", "required": false, "example": "alueTest" } }, "required": false }, "required": false, "maxItems": 21, "minItems": 1 } }, { "name": "AddressType", "in": "query", "schema": { "title": "ロードバランサーのアドレスタイプ", "description": "インスタンスのアドレスタイプ。有効値:\n\n- **Internet**:SLB インスタンスにはパブリック IP アドレスがあります。DNS ドメイン名はパブリック IP アドレスに解決されるため、インターネット経由でアクセスできます。\n\n- **Intranet**:SLB インスタンスにはプライベート IP アドレスしかありません。DNS ドメイン名はプライベート IP アドレスに解決されるため、それが配置されている VPC の内部ネットワークからのみアクセスできます。", "type": "string", "required": false, "example": "Intranet" } }, { "name": "PayType", "in": "query", "schema": { "title": "課金方法", "description": "インスタンスの課金方法。有効値:\n\n**PostPay** (デフォルト):従量課金。", "type": "string", "required": false, "example": "PostPay" } }, { "name": "ResourceGroupId", "in": "query", "schema": { "title": "リソースグループ ID", "description": "エンタープライズリソースグループ ID。", "type": "string", "required": false, "example": "rg-acfmxazb4ph****" } }, { "name": "AddressIpVersion", "in": "query", "schema": { "title": "フィルターするプロトコルバージョン", "description": "プロトコルバージョン。有効値:\n\n- **IPv4**:IPv4。\n- **DualStack**:デュアルスタック。", "type": "string", "required": false, "example": "IPv4" } }, { "name": "Ipv6AddressType", "in": "query", "schema": { "title": "IPv6 アドレスのネットワークタイプ", "description": "Application Load Balancer の IPv6 アドレスタイプ。有効値:\n\n- **Internet**:SLB インスタンスにはパブリック IP アドレスがあります。DNS ドメイン名はパブリック IP アドレスに解決されるため、インターネット経由でアクセスできます。\n\n- **Intranet**:SLB インスタンスにはプライベート IP アドレスしかありません。DNS ドメイン名はプライベート IP アドレスに解決されるため、それが配置されている VPC の内部ネットワークからのみアクセスできます。", "type": "string", "required": false, "example": "Intranet" } }, { "name": "DNSName", "in": "query", "schema": { "description": "DNS ドメイン名。", "type": "string", "required": false, "example": "alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com" } } ], "responses": { "200": { "schema": { "title": "応答のスキーマ", "description": "Application Load Balancer インスタンスの設定情報。", "type": "object", "properties": { "LoadBalancers": { "title": "インスタンスのリスト", "description": "Application Load Balancer インスタンスのリスト。", "type": "array", "items": { "description": "Application Load Balancer インスタンスの構造。", "type": "object", "properties": { "AccessLogConfig": { "title": "アクセスログのプロパティ", "description": "アクセスログ設定の構造。", "type": "object", "properties": { "LogProject": { "title": "アクセスログが配信されるログプロジェクト", "description": "ログプロジェクト。", "type": "string", "example": "sls-setter" }, "LogStore": { "title": "削除保護有効化時間", "description": "ログストア。", "type": "string", "example": "test" } } }, "AddressAllocatedMode": { "title": "アドレスモード", "description": "アドレスモード。有効値:\n\n- **Fixed**:固定 IP モード。固定 IP アドレスを使用します。\n\n- **Dynamic**:動的 IP モード。各ゾーンに IP アドレスが動的に割り当てられます。", "type": "string", "example": "Fixed" }, "AddressType": { "title": "アドレスタイプ", "description": "ロードバランサーのアドレスタイプ。有効値:\n\n- **Internet**:SLB インスタンスにはパブリック IP アドレスがあります。DNS ドメイン名はパブリック IP アドレスに解決されるため、インターネット経由でアクセスできます。\n\n- **Intranet**:SLB インスタンスにはプライベート IP アドレスしかありません。DNS ドメイン名はプライベート IP アドレスに解決されるため、それが配置されている VPC の内部ネットワークからのみアクセスできます。", "type": "string", "example": "Intranet" }, "BandwidthPackageId": { "title": "帯域幅プラン ID", "description": "パブリック向けインスタンスに関連付けられている共有帯域幅プランの ID。", "type": "string", "example": "cbwp-bp1vevu8h3ieh****" }, "CreateTime": { "title": "リソース作成時間", "description": "リソースが作成された時間。", "type": "string", "example": "2022-07-02T02:49:05Z" }, "DNSName": { "title": "DNS 名", "description": "DNS ドメイン名。", "type": "string", "example": "alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com" }, "DeletionProtectionConfig": { "title": "ロードバランサーの削除保護情報", "description": "削除保護の設定。", "type": "object", "properties": { "Enabled": { "title": "削除保護ステータス", "description": "削除保護のステータス。有効値:\n\n- **true**:有効。\n\n- **false**:無効。", "type": "boolean", "example": "true" }, "EnabledTime": { "title": "削除保護有効化時間", "description": "削除保護が有効になった時間。", "type": "string", "example": "2022-08-02T02:49:05Z" } } }, "LoadBalancerBillingConfig": { "title": "課金関連のプロパティ", "description": "SLB インスタンスの課金設定。", "type": "object", "properties": { "PayType": { "title": "インスタンスの課金方法", "description": "課金方法。有効値:\n\n**PostPay**:従量課金。", "type": "string", "example": "PostPay", "default": "PostPay" } } }, "LoadBalancerBussinessStatus": { "title": "インスタンスのビジネスステータス", "description": "ロードバランサーのビジネスステータス。有効値:\n\n- **Abnormal**:異常。\n\n- **Normal**:正常。", "type": "string", "example": "Normal" }, "LoadBalancerEdition": { "title": "ロードバランサーのエディション", "description": "ロードバランサーのエディション。エディションによって機能制限と課金ポリシーが異なります。有効値:\n\n- **Basic**:Basic Edition。\n\n- **Standard**:Standard Edition。\n\n- **StandardWithWaf**:WAF 対応エディション。\n\n", "type": "string", "example": "Standard" }, "LoadBalancerId": { "title": "ロードバランサー ID", "description": "Application Load Balancer インスタンスの ID。", "type": "string", "example": "alb-o9ulmq5hgn68jk****" }, "LoadBalancerName": { "title": "インスタンス名", "description": "SLB インスタンスの名前。", "type": "string", "example": "alb-instance-test" }, "LoadBalancerOperationLocks": { "title": "ロックの理由", "description": "ロードバランサーの操作ロック設定。", "type": "array", "items": { "description": "ロードバランサー操作ロックの構造。", "type": "object", "properties": { "LockReason": { "title": "ロックの理由", "description": "ロックの理由。これは **LoadBalancerBussinessStatus** が **Abnormal** の場合に有効です。", "type": "string" }, "LockType": { "title": "ロックのタイプ", "description": "ロックのタイプ。有効値:\n\n- **SecurityLocked**:セキュリティロック。\n\n- **RelatedResourceLocked**:関連リソースロック。\n\n- **FinancialLocked**:財務ロック。\n\n- **ResidualLocked**:残余ロック。", "type": "string", "example": "FinancialLocked" } } } }, "LoadBalancerStatus": { "title": "インスタンスステータス", "description": "Application Load Balancer インスタンスのステータス。有効値:\n\n- **Inactive**:停止。インスタンスリスナーはトラフィックを転送しなくなります。\n\n- **Active**:実行中。\n\n- **Provisioning**:作成中。\n\n- **Configuring**:変更中。\n\n- **CreateFailed**:作成失敗。", "type": "string", "example": "Active" }, "ModificationProtectionConfig": { "title": "ロードバランサーの変更保護情報", "description": "変更保護の設定。", "type": "object", "properties": { "Reason": { "title": "変更保護ステータスを設定する理由", "description": "変更保護を有効にする理由。\n\n長さは 2 ~ 128 文字の英字または漢字です。大文字または小文字の英字または漢字で始まり、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。\n\nこれは **Status** が **ConsoleProtection** の場合にのみ返されます。", "type": "string", "example": "Managed Instance" }, "Status": { "title": "ロードバランサーの変更保護ステータス", "description": "Application Load Balancer インスタンスの変更保護ステータス。有効値:\n\n- **NonProtection**:変更保護は有効になっていません。**Reason** が設定されている場合、**Reason** は強制的にクリアされます。\n\n- **ConsoleProtection**:コンソール変更保護が有効になっています。**Reason** が設定されている場合、**Reason** は有効になります。\n\n> 値が **ConsoleProtection** の場合、つまり変更保護が有効になっている場合、ユーザーは SLB コンソールを介してインスタンス設定を変更することはできませんが、API を呼び出すことで変更できます。", "type": "string", "example": "ConsoleProtection" } } }, "ResourceGroupId": { "title": "エンタープライズリソースグループ ID", "description": "エンタープライズリソースグループ ID。", "type": "string", "example": "rg-atstuj3rtop****" }, "Tags": { "title": "タグのリスト", "description": "タグのリスト。", "type": "array", "items": { "description": "タグの構造。", "type": "object", "properties": { "Key": { "title": "インスタンスのタグキー", "description": "インスタンスのタグキー。", "type": "string", "example": "KeyTest" }, "Value": { "title": "インスタンスのタグ値", "description": "インスタンスのタグ値。", "type": "string", "example": "alueTest" } } } }, "VpcId": { "title": "VPC ネットワーク ID", "description": "Application Load Balancer インスタンスの VPC ID。", "type": "string", "example": "vpc-bp1b49rqryhk45nio****" }, "AddressIpVersion": { "title": "プロトコルバージョン", "description": "プロトコルバージョン。有効値:\n\n- **IPv4**:IPv4。\n\n- **DualStack**:デュアルスタック。", "type": "string", "example": "DualStack" }, "Ipv6AddressType": { "title": "IPv6 アドレスタイプ", "description": "Application Load Balancer の IPv6 アドレスのネットワークアドレスタイプ。有効値:\n\n- **Internet**:パブリックネットワーク。SLB インスタンスにはパブリック IP アドレスがあります。DNS ドメイン名はパブリック IP アドレスに解決されるため、インターネット経由でアクセスできます。\n\n- **Intranet**:プライベートネットワーク。SLB インスタンスにはプライベート IP アドレスしかありません。DNS ドメイン名はプライベート IP アドレスに解決されるため、それが配置されている VPC の内部ネットワークからのみアクセスできます。", "type": "string", "example": "Intranet" }, "SecurityGroupIds": { "description": "Application Load Balancer インスタンスが追加されているセキュリティグループ。", "type": "array", "items": { "description": "Application Load Balancer インスタンスが追加されているセキュリティグループ。", "type": "string", "example": "sg-2zejdtxxpu8c9tny****" } } } } }, "MaxResults": { "title": "このリクエストに対して返されるレコードの最大数。", "description": "ページ分割されたクエリでページごとに表示するエントリ数。\n\n", "type": "integer", "format": "int32", "example": "20" }, "NextToken": { "title": "現在の呼び出しが読み取りに戻る位置を示します。空はデータが読み取られたことを意味します。", "description": "次のクエリのトークン。有効値:\n- **NextToken** が空の場合、これ以上クエリはありません。\n- **NextToken** に戻り値がある場合、この値は次のクエリを開始するトークンを示します。", "type": "string", "example": "FFmyTO70tTpLG6I3FmYAXGKPd****" }, "RequestId": { "title": "リクエストの ID", "description": "リクエスト ID。", "type": "string", "example": "365F4154-92F6-4AE4-92F8-7FF34B540710" }, "TotalCount": { "title": "このリクエストの条件下のデータ総量。", "description": "リストエントリの数。", "type": "integer", "format": "int32", "example": "100" } } } } }, "responseDemo": "[{\"type\":\"json\",\"example\":\"{\\n \\\"LoadBalancers\\\": [\\n {\\n \\\"AccessLogConfig\\\": {\\n \\\"LogProject\\\": \\\"sls-setter\\\",\\n \\\"LogStore\\\": \\\"test\\\"\\n },\\n \\\"AddressAllocatedMode\\\": \\\"Fixed\\\",\\n \\\"AddressType\\\": \\\"Intranet\\\",\\n \\\"BandwidthPackageId\\\": \\\"cbwp-bp1vevu8h3ieh****\\\",\\n \\\"CreateTime\\\": \\\"2022-07-02T02:49:05Z\\\",\\n \\\"DNSName\\\": \\\"alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com\\\",\\n \\\"DeletionProtectionConfig\\\": {\\n \\\"Enabled\\\": true,\\n \\\"EnabledTime\\\": \\\"2022-08-02T02:49:05Z\\\"\\n },\\n \\\"LoadBalancerBillingConfig\\\": {\\n \\\"PayType\\\": \\\"PostPay\\\"\\n },\\n \\\"LoadBalancerBussinessStatus\\\": \\\"Normal\\\",\\n \\\"LoadBalancerEdition\\\": \\\"Standard\\\",\\n \\\"LoadBalancerId\\\": \\\"alb-o9ulmq5hgn68jk****\\\",\\n \\\"LoadBalancerName\\\": \\\"alb-instance-test\\\",\\n \\\"LoadBalancerOperationLocks\\\": [\\n {\\n \\\"LockReason\\\": \\\"\\\",\\n \\\"LockType\\\": \\\"FinancialLocked\\\"\\n }\\n ],\\n \\\"LoadBalancerStatus\\\": \\\"Active\\\",\\n \\\"ModificationProtectionConfig\\\": {\\n \\\"Reason\\\": \\\"Managed Instance\\\",\\n \\\"Status\\\": \\\"ConsoleProtection\\\"\\n },\\n \\\"ResourceGroupId\\\": \\\"rg-atstuj3rtop****\\\",\\n \\\"Tags\\\": [\\n {\\n \\\"Key\\\": \\\"KeyTest\\\",\\n \\\"Value\\\": \\\"alueTest\\\"\\n }\\n ],\\n \\\"VpcId\\\": \\\"vpc-bp1b49rqryhk45nio****\\\",\\n \\\"AddressIpVersion\\\": \\\"DualStack\\\",\\n \\\"Ipv6AddressType\\\": \\\"Intranet\\\",\\n \\\"SecurityGroupIds\\\": [\\n \\\"sg-2zejdtxxpu8c9tny****\\\"\\n ]\\n }\\n ],\\n \\\"MaxResults\\\": 20,\\n \\\"NextToken\\\": \\\"FFmyTO70tTpLG6I3FmYAXGKPd****\\\",\\n \\\"RequestId\\\": \\\"365F4154-92F6-4AE4-92F8-7FF34B540710\\\",\\n \\\"TotalCount\\\": 100\\n}\",\"errorExample\":\"\"},{\"type\":\"xml\",\"example\":\"<ListLoadBalancersResponse>\\n <LoadBalancers>\\n <AccessLogConfig>\\n <LogProject>sls-setter</LogProject>\\n <LogStore>test</LogStore>\\n </AccessLogConfig>\\n <AddressAllocatedMode>Fixed</AddressAllocatedMode>\\n <AddressType>Intranet</AddressType>\\n <BandwidthPackageId>cbwp-bp1vevu8h3ieh****</BandwidthPackageId>\\n <CreateTime>2022-07-02T02:49:05Z</CreateTime>\\n <DNSName>alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com</DNSName>\\n <DeletionProtectionConfig>\\n <Enabled>true</Enabled>\\n <EnabledTime>2022-08-02T02:49:05Z</EnabledTime>\\n </DeletionProtectionConfig>\\n <LoadBalancerBillingConfig>\\n <PayType>PostPay</PayType>\\n </LoadBalancerBillingConfig>\\n <LoadBalancerBussinessStatus>Normal</LoadBalancerBussinessStatus>\\n <LoadBalancerEdition>Standard</LoadBalancerEdition>\\n <LoadBalancerId>alb-o9ulmq5hgn68jk****</LoadBalancerId>\\n <LoadBalancerName>alb-instance-test</LoadBalancerName>\\n <LoadBalancerOperationLocks>\\n <LockReason>Overdue Payment</LockReason>\\n <LockType>FinancialLocked</LockType>\\n </LoadBalancerOperationLocks>\\n <LoadBalancerStatus>Active</LoadBalancerStatus>\\n <ModificationProtectionConfig>\\n <Reason>Managed Instance</Reason>\\n <Status>ConsoleProtection</Status>\\n </ModificationProtectionConfig>\\n <ResourceGroupId>rg-atstuj3rtop****</ResourceGroupId>\\n <Tags>\\n <Key>KeyTest</Key>\\n <Value>alueTest</Value>\\n </Tags>\\n <VpcId>vpc-bp1b49rqrybk45nio****</VpcId>\\n <AddressIpVersion>DualStack</AddressIpVersion>\\n <Ipv6AddressType>Intranet</Ipv6AddressType>\\n </LoadBalancers>\\n <MaxResults>20</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <TotalCount>100</TotalCount>\\n</ListLoadBalancersResponse>\",\"errorExample\":\"\"}]", "title": "ロードバランサーの照会" }, "ListListeners": { "summary": "指定されたリージョン内のリスナーを照会します。", "methods": [ "get", "post" ], "schemes": [ "http", "https" ], "security": [ { "AK": [] } ], "operationType": "read", "deprecated": false, "systemTags": { "operationType": "get", "abilityTreeCode": "190", "abilityTreeNodes": [ "FEATUREslbM7ALO6", "FEATUREslbK3ZR0L", "FEATUREslbN5IE4S" ] }, "parameters": [ { "name": "NextToken", "in": "query", "schema": { "title": "読み取りを開始する現在の開始位置をマークします。最初から開始するには空のままにします。", "description": "次のクエリのトークン。有効値:\n- これが最初のクエリであるか、これ以上クエリがない場合は、これを入力する必要はありません。\n- 次のクエリがある場合は、前の API 呼び出しの **NextToken** の値に設定します。", "type": "string", "required": false, "example": "FFmyTO70tTpLG6I4FmYAXGKPd****" } }, { "name": "MaxResults", "in": "query", "schema": { "title": "今回読み取るデータレコードの最大数。このパラメーターはオプションです。値は 1 ~ 100 です。ユーザーが値を渡さない場合、デフォルトは 20 です。", "description": "今回読み取るデータレコードの最大数。このパラメーターはオプションです。値の範囲は **1 ~ 100** です。パラメーターが空の場合、デフォルト値は **20** です。", "type": "integer", "format": "int32", "required": false, "example": "50" } }, { "name": "ListenerIds", "in": "query", "style": "flat", "schema": { "title": "リスナー ID のリスト、N は最大 20 をサポート", "description": "リスナーインスタンス ID のリスト。最大 20 のリスナー ID がサポートされています。", "type": "array", "items": { "description": "リスナーインスタンス ID。", "type": "string", "required": false, "example": "lsn-o4u54y73wq7b******" }, "required": false, "maxItems": 20, "minItems": 1 } }, { "name": "LoadBalancerIds", "in": "query", "style": "flat", "schema": { "title": "インスタンス ID のリスト、N は最大 20 をサポート", "description": "Application Load Balancer インスタンスの ID。最大 20 のインスタンス ID がサポートされています。", "type": "array", "items": { "description": "Application Load Balancer インスタンスの ID。", "type": "string", "required": false, "example": "alb-bd6oylbckp6k9x****" }, "required": false, "maxItems": 21, "minItems": 1 } }, { "name": "ListenerProtocol", "in": "query", "schema": { "title": "リスナープロトコル", "description": "フィルターするリスナープロトコル。有効値:\n\n- **HTTP**:プロトコルタイプは HTTP です。\n- **HTTPS**:プロトコルタイプは HTTPS です。\n- **QUIC**:プロトコルタイプは QUIC です。", "type": "string", "required": false, "example": "HTTP" } }, { "name": "Tag", "in": "query", "style": "flat", "schema": { "description": "タグ。", "type": "array", "items": { "description": "タグの構造。", "type": "object", "properties": { "Key": { "description": "タグキー。最大 128 文字で、aliyun または acs: で始めることはできません。http:// または https:// を含めることはできません。", "type": "string", "required": false, "example": "env" }, "Value": { "description": "タグ値。最大 128 文字で、aliyun または acs: で始めることはできません。http:// または https:// を含めることはできません。", "type": "string", "required": false, "example": "product" } }, "required": false }, "required": false } } ], "responses": { "200": { "schema": { "title": "応答のスキーマ", "description": "Application Load Balancer リスナーの情報。", "type": "object", "properties": { "Listeners": { "title": "リスナーのリスト", "description": "Application Load Balancer リスナーのリスト。", "type": "array", "items": { "description": "Application Load Balancer リスナーの構造。", "type": "object", "properties": { "DefaultActions": { "title": "デフォルトアクション", "description": "デフォルトルールアクションのリスト。", "type": "array", "items": { "description": "デフォルトルールアクションの構造。", "type": "object", "properties": { "ForwardGroupConfig": { "title": "サーバーグループへの転送", "description": "転送ルールアクションに対応する設定。これは、アクションタイプが **ForwardGroup** の場合に有効です。", "type": "object", "properties": { "ServerGroupTuples": { "title": "サーバーグループのリスト", "description": "転送先のサーバーグループ。", "type": "array", "items": { "description": "転送先のサーバーグループ。", "type": "object", "properties": { "ServerGroupId": { "title": "サーバーグループ ID", "description": "転送先のサーバーグループの ID。", "type": "string", "example": "sgp-i5qt20******" } } } } } }, "Type": { "title": "タイプ", "description": "アクションタイプ。値は **ForwardGroup** で、複数のサーバーグループへの転送を意味します。", "type": "string", "example": "ForwardGroup" } } } }, "GzipEnabled": { "title": "Gzip 圧縮を有効にするかどうか", "description": "特定のファイルタイプに対して Gzip 圧縮を有効にするかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n", "type": "boolean", "example": "false" }, "Http2Enabled": { "title": "HTTP/2 機能を有効にするかどうか", "description": "HTTP/2 機能を有効にするかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "boolean", "example": "false" }, "IdleTimeout": { "title": "接続アイドルタイムアウト", "description": "接続アイドルタイムアウトを指定します。単位:秒。値の範囲は **1 ~ 60** です。\n\nタイムアウト期間内にアクセスリクエストがない場合、ロードバランサーは現在の接続を一時的に切断し、次のリクエストを受信したときに新しい接続を確立します。", "type": "integer", "format": "int32", "example": "3" }, "ListenerDescription": { "title": "リスナーの説明", "description": "カスタムリスナー名。", "type": "string", "example": "HTTP_80" }, "ListenerId": { "title": "リスナー ID", "description": "リスナー ID。", "type": "string", "example": "lsn-o4u34y73wq7b******" }, "ListenerPort": { "title": "リスニングポート", "description": "Application Load Balancer インスタンスが使用するフロントエンドポート。値は **1 ~ 65535** です。", "type": "integer", "format": "int32", "example": "80" }, "ListenerProtocol": { "title": "リスナープロトコル", "description": "リスナープロトコル。有効値:\n\n- **HTTP**:プロトコルタイプは HTTP です。\n- **HTTPS**:プロトコルタイプは HTTPS です。\n- **QUIC**:プロトコルタイプは QUIC です。", "type": "string", "example": "HTTP" }, "ListenerStatus": { "title": "リスナーステータス", "description": "リスナーの現在のステータス。有効値:\n\n- **Provisioning**:作成中。\n\n- **Running**:実行中。\n\n- **Configuring**:設定中。\n\n- **Stopped**:停止。", "type": "string", "example": "Running" }, "LoadBalancerId": { "title": "ロードバランサー ID", "description": "Application Load Balancer インスタンスの ID。", "type": "string", "example": "alb-bd6oylbckp6k9x****" }, "LogConfig": { "title": "リスナーアクセスログ関連設定", "description": "ログ設定。", "type": "object", "properties": { "AccessLogRecordCustomizedHeadersEnabled": { "title": "アクセスログにカスタムヘッダーを含めるかどうか", "description": "アクセスログにカスタムヘッダーを含めるかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n", "type": "boolean", "example": "true" }, "AccessLogTracingConfig": { "title": "アクセスログ Xtrace 関連設定", "description": "アクセスログ Xtrace 関連設定情報。", "type": "object", "properties": { "TracingEnabled": { "title": "Xtrace 機能ステータス", "description": "Xtrace 機能を有効にするかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは、インスタンスアクセスログスイッチ **AccessLogEnabled** がオンの場合にのみ **true** に設定できます。", "type": "boolean", "example": "true" }, "TracingSample": { "title": "Xtrace 機能ステータス", "description": "Xtrace のサンプリングレート。値は **1 ~ 10000** です。\n\n> この値は **TracingEnabled** が **true** の場合に有効です。", "type": "integer", "format": "int32", "example": "100" }, "TracingType": { "title": "Xtrace タイプ", "description": "Xtrace タイプ。有効な値は **Zipkin** です。\n\n> この値は **TracingEnabled** が **true** の場合に有効です。", "type": "string", "example": "Zipkin" } } } } }, "QuicConfig": { "title": "HTTPS が QUIC を有効にする場合の関連プロパティ", "description": "関連する QUIC リスナーが有効になっている場合の設定情報。", "type": "object", "properties": { "QuicListenerId": { "title": "関連付ける QUIC リスナーの ID。これは HTTPS リスナーで有効であり、QuicUpgradeEnabled が true の場合に必須です。", "description": "関連付ける QUIC リスナーの ID。これは **QuicUpgradeEnabled** が **true** の場合に必須です。これは HTTPS リスナーで有効です。\n\n> 元のリスナーと関連する QUIC リスナーは同じ ALB インスタンスに属している必要があり、この QUIC リスナーは以前に関連付けられていない必要があります。", "type": "string", "example": "lsn-o4u54y73wq7b******" }, "QuicUpgradeEnabled": { "title": "QUIC アップグレードを有効にするかどうか。これは HTTPS リスナーで有効です。", "description": "QUIC アップグレードを有効にするかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> これは HTTPS リスナーでのみ有効です。", "type": "boolean", "example": "true" } } }, "RequestTimeout": { "title": "リクエストタイムアウト", "description": "リクエストタイムアウトを指定します。単位:秒。値は **1 ~ 180** です。\n\nタイムアウト期間内にバックエンドサーバーが応答しない場合、ロードバランサーは待機をあきらめ、クライアントに `HTTP 504` エラーコードを返します。", "type": "integer", "format": "int32", "example": "34" }, "SecurityPolicyId": { "title": "セキュリティポリシー", "description": "セキュリティポリシー。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "string", "example": "tls_cipher_policy_1_1" }, "XForwardedForConfig": { "title": "XForwarded フィールドに関連する設定", "description": "`XForward` ヘッダーフィールド設定情報。", "type": "object", "properties": { "XForwardedForClientCertClientVerifyAlias": { "title": "カスタムヘッダー名。この値は XForwardedForClientCertClientVerifyEnabled の値が true の場合にのみ有効です。それ以外の場合、この値は有効ではありません。これは HTTPS リスナーで有効です。", "description": "カスタムヘッダーフィールド名。この値は **XForwardedForClientCertClientVerifyEnabled** の値が **true** の場合にのみ有効です。それ以外の場合、この値は有効ではありません。\n\n長さは 1 ~ 40 文字です。英字 a-z、数字、ハイフン (-)、アンダースコア (_) をサポートします。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "string", "example": "test_client-verify-alias_123456" }, "XForwardedForClientCertClientVerifyEnabled": { "title": "X-Forwarded-Clientcert-clientverify ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアント証明書の検証結果を取得するかどうか。これは HTTPS リスナーで有効です。", "description": "`X-Forwarded-Clientcert-clientverify` ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアント証明書の検証結果を取得するかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForClientCertFingerprintAlias": { "title": "カスタムヘッダー名。この値は XForwardedForClientCertFingerprintEnabled の値が true の場合にのみ有効です。それ以外の場合、この値は有効ではありません。これは HTTPS リスナーで有効です。", "description": "カスタムヘッダー名。これは **XForwardedForClientCertFingerprintEnabled** の値が **true** の場合にのみ有効です。\n\n長さは 1 ~ 40 文字です。英字 a-z、数字、ハイフン (-)、アンダースコア (_) をサポートします。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "string", "example": "test_finger-print-alias_123456" }, "XForwardedForClientCertFingerprintEnabled": { "title": "X-Forwarded-Clientcert-fingerprint ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアント証明書のフィンガープリント値を取得するかどうか。これは HTTPS リスナーで有効です。", "description": "`X-Forwarded-Clientcert-fingerprint` ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアント証明書のフィンガープリント値を取得するかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForClientCertIssuerDNAlias": { "title": "カスタムヘッダー名。この値は XForwardedForClientCertIssuerDNEnabled の値が 'On' の場合にのみ有効です。それ以外の場合、この値は有効ではありません。これは HTTPS リスナーで有効です。", "description": "カスタムヘッダー名。この値は **XForwardedForClientCertIssuerDNEnabled** の値が **true** の場合にのみ有効です。\n\n長さは 1 ~ 40 文字です。英字 a-z、数字、ハイフン (-)、アンダースコア (_) をサポートします。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "string", "example": "test_issue-dn-alias_123456" }, "XForwardedForClientCertIssuerDNEnabled": { "title": "X-Forwarded-Clientcert-issuerdn ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアント証明書の発行者情報を取得するかどうか。これは HTTPS リスナーで有効です。", "description": "`X-Forwarded-Clientcert-issuerdn` ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアント証明書の発行者情報を取得するかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForClientCertSubjectDNAlias": { "title": "カスタムヘッダー名。この値は XForwardedForClientCertSubjectDNEnabled の値が true の場合にのみ有効です。それ以外の場合、この値は有効ではありません。これは HTTPS リスナーで有効です。", "description": "カスタムヘッダー名。この値は **XForwardedForClientCertSubjectDNEnabled** の値が **true** の場合にのみ有効です。\n\n長さは 1 ~ 40 文字です。英字 a-z、数字、ハイフン (-)、アンダースコア (_) をサポートします。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "string", "example": "test_subject-dn-alias_123456" }, "XForwardedForClientCertSubjectDNEnabled": { "title": "X-Forwarded-Clientcert-subjectdn ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアント証明書の所有者情報を取得するかどうか。これは HTTPS リスナーで有効です。", "description": "`X-Forwarded-Clientcert-subjectdn` ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアント証明書の所有者情報を取得するかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTPS リスナーでのみサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForClientSrcPortEnabled": { "title": "X-Forwarded-Client-Port ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアントのポートを取得するかどうか。これは HTTPS リスナーで有効です。", "description": "`X-Forwarded-Client-Port` ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアントのポートを取得するかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTP および HTTPS リスナーでサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForEnabled": { "title": "X-Forwarded-For ヘッダーフィールドを介して訪問者の実際の IP を取得することを有効にするかどうか", "description": "`X-Forwarded-For` ヘッダーフィールドを介して訪問者の実際の IP を取得するかどうか。有効値:\n- **true** (デフォルト):はい。\n- **false**:いいえ。\n\n> 1. **true** を設定した場合、**XForwardedForProcessingMode** のデフォルト値は **append** であり、**remove** に変更できます。\n> 2. **false** を設定した場合、リクエストがバックエンドサービスに送信される前に、追加の処理なしで `X-Forwarded-For` ヘッダーフィールドが保持されます。\n> 3. このパラメーターは HTTP および HTTPS リスナーでサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForProcessingMode": { "description": "`X-Forwarded-For` ヘッダーフィールドの処理モード。この値は **XForwardedForEnabled** が **true** の場合にのみ有効です。有効値:\n- **append** (デフォルト):追加します。\n- **remove**:削除します。\n\n> 1. **append** を設定した場合、リクエストがバックエンドサービスに送信される前に、最後のホップ IP が `X-Forwarded-For` ヘッダーフィールドに追加されます。\n> 2. **remove** を設定した場合、リクエストが `X-Forwarded-For` ヘッダーフィールドを保持しているかどうかに関係なく、リクエストがバックエンドサービスに送信される前に `X-Forwarded-For` ヘッダーが削除されます。\n> 3. このパラメーターは HTTP および HTTPS リスナーでサポートされています。", "type": "string", "example": "append" }, "XForwardedForProtoEnabled": { "title": "X-Forwarded-Proto ヘッダーフィールドを介して SLB インスタンスのリスナープロトコルを取得するかどうか。", "description": "`X-Forwarded-Proto` ヘッダーフィールドを介して SLB インスタンスのリスナープロトコルを取得するかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTP、HTTPS、QUIC リスナーでサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForSLBIdEnabled": { "title": "SLB-ID ヘッダーフィールドを介して SLB インスタンス ID を取得するかどうか。", "description": "`SLB-ID` ヘッダーフィールドを介して SLB インスタンス ID を取得するかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTP、HTTPS、QUIC リスナーでサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForSLBPortEnabled": { "title": "X-Forwarded-Port ヘッダーフィールドを介して SLB インスタンスのリスナーポートを取得するかどうか。これは HTTPS リスナーで有効です。", "description": "`X-Forwarded-Port` ヘッダーフィールドを介して SLB インスタンスのリスナーポートを取得するかどうか。有効値:\n\n- **true**:はい。\n- **false**:いいえ。\n\n> このパラメーターは HTTP、HTTPS、QUIC リスナーでサポートされています。", "type": "boolean", "example": "true" }, "XForwardedForClientSourceIpsEnabled": { "description": "ALB が X-Forwarded-For ヘッダーフィールドから実際のクライアント IP を見つけることを許可するかどうか。有効値:\n\n- **true**:はい。\n\n- **false**:いいえ。\n\n> このパラメーターは HTTP および HTTPS リスナーでサポートされています。", "type": "boolean", "example": "false" }, "XForwardedForClientSourceIpsTrusted": { "description": "信頼できるプロキシ IP を指定します。\n\nApplication Load Balancer (ALB) は `X-Forwarded-For` を後ろから前に走査し、信頼できる IP リストにない最初の IP を実際のクライアント IP として選択します。この IP はソース IP レート制限に使用されます。", "type": "string", "example": "10.1.1.0/24" }, "XForwardedForHostEnabled": { "description": "`X-Forwarded-Host` ヘッダーフィールドを介して SLB インスタンスにアクセスするクライアントのドメイン名を取得することを有効にするかどうか。有効値:\n- **true**:はい。\n- **false** (デフォルト):いいえ。\n\n> このパラメーターは HTTP、HTTPS、QUIC リスナーでサポートされています。", "type": "boolean", "example": "false" } } }, "Tags": { "description": "タグ。", "type": "array", "items": { "description": "タグの構造。", "type": "object", "properties": { "Key": { "description": "タグキー。最大 128 文字で、aliyun または acs: で始めることはできません。http:// または https:// を含めることはできません。", "type": "string", "example": "env" }, "Value": { "description": "タグ値。最大 128 文字で、aliyun または acs: で始めることはできません。http:// または https:// を含めることはできません。", "type": "string", "example": "product" } } } } } } }, "MaxResults": { "title": "このリクエストに対して返されるレコードの最大数。", "description": "このリクエストに対して返されるレコードの最大数。", "type": "integer", "format": "int32", "example": "50" }, "NextToken": { "title": "現在の呼び出しが読み取りに戻る位置を示します。空はデータが読み取られたことを意味します。", "description": "現在の呼び出しが読み取りに戻る位置。空に設定すると、データが読み取られたことを意味します。", "type": "string", "example": "FFmyTO70tTpLG6I3FmYAXGKPd****" }, "RequestId": { "title": "リクエストの ID", "description": "リクエスト ID。", "type": "string", "example": "365F4154-92F6-4AE4-92F8-7FF3******" }, "TotalCount": { "title": "このリクエストの条件下のデータ総量。", "description": "このリクエストの条件下のデータ総量。", "type": "integer", "format": "int32", "example": "1000" } } } } }, "errorCodes": { "403": [ { "errorCode": "Forbidden.LoadBalancer", "errorMessage": "Authentication is failed for %s." } ] }, "responseDemo": "[{\"type\":\"json\",\"example\":\"{\\n \\\"Listeners\\\": [\\n {\\n \\\"DefaultActions\\\": [\\n {\\n \\\"ForwardGroupConfig\\\": {\\n \\\"ServerGroupTuples\\\": [\\n {\\n \\\"ServerGroupId\\\": \\\"sgp-i5qt20******\\\"\\n }\\n ]\\n },\\n \\\"Type\\\": \\\"ForwardGroup\\\"\\n }\\n ],\\n \\\"GzipEnabled\\\": false,\\n \\\"Http2Enabled\\\": false,\\n \\\"IdleTimeout\\\": 3,\\n \\\"ListenerDescription\\\": \\\"HTTP_80\\\",\\n \\\"ListenerId\\\": \\\"lsn-o4u34y73wq7b******\\\",\\n \\\"ListenerPort\\\": 80,\\n \\\"ListenerProtocol\\\": \\\"HTTP\\\",\\n \\\"ListenerStatus\\\": \\\"Running\\\",\\n \\\"LoadBalancerId\\\": \\\"alb-bd6oylbckp6k9x****\\\",\\n \\\"LogConfig\\\": {\\n \\\"AccessLogRecordCustomizedHeadersEnabled\\\": true,\\n \\\"AccessLogTracingConfig\\\": {\\n \\\"TracingEnabled\\\": true,\\n \\\"TracingSample\\\": 100,\\n \\\"TracingType\\\": \\\"Zipkin\\\"\\n }\\n },\\n \\\"QuicConfig\\\": {\\n \\\"QuicListenerId\\\": \\\"lsn-o4u54y73wq7b******\\\",\\n \\\"QuicUpgradeEnabled\\\": true\\n },\\n \\\"RequestTimeout\\\": 34,\\n \\\"SecurityPolicyId\\\": \\\"tls_cipher_policy_1_1\\\",\\n \\\"XForwardedForConfig\\\": {\\n \\\"XForwardedForClientCertClientVerifyAlias\\\": \\\"test_client-verify-alias_123456\\\",\\n \\\"XForwardedForClientCertClientVerifyEnabled\\\": true,\\n \\\"XForwardedForClientCertFingerprintAlias\\\": \\\"test_finger-print-alias_123456\\\",\\n \\\"XForwardedForClientCertFingerprintEnabled\\\": true,\\n \\\"XForwardedForClientCertIssuerDNAlias\\\": \\\"test_issue-dn-alias_123456\\\",\\n \\\"XForwardedForClientCertIssuerDNEnabled\\\": true,\\n \\\"XForwardedForClientCertSubjectDNAlias\\\": \\\"test_subject-dn-alias_123456\\\",\\n \\\"XForwardedForClientCertSubjectDNEnabled\\\": true,\\n \\\"XForwardedForClientSrcPortEnabled\\\": true,\\n \\\"XForwardedForEnabled\\\": true,\\n \\\"XForwardedForProcessingMode\\\": \\\"append\\\",\\n \\\"XForwardedForProtoEnabled\\\": true,\\n \\\"XForwardedForSLBIdEnabled\\\": true,\\n \\\"XForwardedForSLBPortEnabled\\\": true,\\n \\\"XForwardedForClientSourceIpsEnabled\\\": false,\\n \\\"XForwardedForClientSourceIpsTrusted\\\": \\\"10.1.1.0/24\\\",\\n \\\"XForwardedForHostEnabled\\\": false\\n },\\n \\\"Tags\\\": [\\n {\\n \\\"Key\\\": \\\"env\\\",\\n \\\"Value\\\": \\\"product\\\"\\n }\\n ]\\n }\\n ],\\n \\\"MaxResults\\\": 50,\\n \\\"NextToken\\\": \\\"FFmyTO70tTpLG6I3FmYAXGKPd****\\\",\\n \\\"RequestId\\\": \\\"365F4154-92F6-4AE4-92F8-7FF3******\\\",\\n \\\"TotalCount\\\": 1000\\n}\",\"errorExample\":\"\"},{\"type\":\"xml\",\"example\":\"<ListListenersResponse>\\n <Listeners>\\n <DefaultActions>\\n <ForwardGroupConfig>\\n <ServerGroupTuples>\\n <ServerGroupId>rsp-cige6j****</ServerGroupId>\\n </ServerGroupTuples>\\n </ForwardGroupConfig>\\n <Type>ForwardGroup</Type>\\n </DefaultActions>\\n <GzipEnabled>false</GzipEnabled>\\n <Http2Enabled>false</Http2Enabled>\\n <IdleTimeout>3</IdleTimeout>\\n <ListenerDescription>HTTP_80</ListenerDescription>\\n <ListenerId>lsr-bp1bpn0kn908w4nbw****</ListenerId>\\n <ListenerPort>80</ListenerPort>\\n <ListenerProtocol>HTTP</ListenerProtocol>\\n <ListenerStatus>Running</ListenerStatus>\\n <LoadBalancerId>alb-bd6oylbckp6k9x****</LoadBalancerId>\\n <LogConfig>\\n <AccessLogRecordCustomizedHeadersEnabled>true</AccessLogRecordCustomizedHeadersEnabled>\\n <AccessLogTracingConfig>\\n <TracingEnabled>true</TracingEnabled>\\n <TracingSample>100</TracingSample>\\n <TracingType>Zipkin</TracingType>\\n </AccessLogTracingConfig>\\n </LogConfig>\\n <QuicConfig>\\n <QuicListenerId>lsr-bp1bpn908w4nbw****</QuicListenerId>\\n <QuicUpgradeEnabled>true</QuicUpgradeEnabled>\\n </QuicConfig>\\n <RequestTimeout>34</RequestTimeout>\\n <SecurityPolicyId>tls_cipher_policy_1_1</SecurityPolicyId>\\n <XForwardedForConfig>\\n <XForwardedForClientCertClientVerifyAlias>test_client-verify-alias_123456</XForwardedForClientCertClientVerifyAlias>\\n <XForwardedForClientCertClientVerifyEnabled>true</XForwardedForClientCertClientVerifyEnabled>\\n <XForwardedForClientCertFingerprintAlias>test_finger-print-alias_123456</XForwardedForClientCertFingerprintAlias>\\n <XForwardedForClientCertFingerprintEnabled>true</XForwardedForClientCertFingerprintEnabled>\\n <XForwardedForClientCertIssuerDNAlias>test_issue-dn-alias_123456</XForwardedForClientCertIssuerDNAlias>\\n <XForwardedForClientCertIssuerDNEnabled>true</XForwardedForClientCertIssuerDNEnabled>\\n <XForwardedForClientCertSubjectDNAlias>test_subject-dn-alias_123456</XForwardedForClientCertSubjectDNAlias>\\n <XForwardedForClientCertSubjectDNEnabled>true</XForwardedForClientCertSubjectDNEnabled>\\n <XForwardedForClientSrcPortEnabled>true</XForwardedForClientSrcPortEnabled>\\n <XForwardedForEnabled>true</XForwardedForEnabled>\\n <XForwardedForProtoEnabled>true</XForwardedForProtoEnabled>\\n <XForwardedForSLBIdEnabled>true</XForwardedForSLBIdEnabled>\\n <XForwardedForSLBPortEnabled>true</XForwardedForSLBPortEnabled>\\n <XForwardedForClientSourceIpsEnabled>false</XForwardedForClientSourceIpsEnabled>\\n <XForwardedForClientSourceIpsTrusted>10.1.1.0/24</XForwardedForClientSourceIpsTrusted>\\n </XForwardedForConfig>\\n </Listeners>\\n <MaxResults>50</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540710</RequestId>\\n <TotalCount>1000</TotalCount>\\n</ListListenersResponse>\",\"errorExample\":\"\"}]", "title": "リスナーの照会" }, "ListServerGroups": { "summary": "サーバーグループのリストを照会します。", "methods": [ "get", "post" ], "schemes": [ "http", "https" ], "security": [ { "AK": [] } ], "operationType": "read", "deprecated": false, "systemTags": { "operationType": "get", "abilityTreeCode": "166", "abilityTreeNodes": [ "FEATUREslbVRSQEA" ] }, "parameters": [ { "name": "ServerGroupIds", "in": "query", "style": "flat", "schema": { "title": "サーバーグループ ID のリスト", "description": "サーバーグループ ID のリスト。", "type": "array", "items": { "description": "サーバーグループ ID。一度に最大 20 のサーバーグループ ID を照会できます。", "type": "string", "required": false, "example": "sgp-atstuj3rtop****" }, "required": false, "maxItems": 20 } }, { "name": "ServerGroupNames", "in": "query", "style": "flat", "schema": { "title": "サーバーグループ名", "description": "サーバーグループ名のリスト、最大 10。", "type": "array", "items": { "description": "サーバーグループ名。一度に最大 10 のサーバーグループ名を照会できます。", "type": "string", "required": false, "example": "Group3" }, "required": false, "maxItems": 10 } }, { "name": "ResourceGroupId", "in": "query", "schema": { "title": "リソースグループ ID", "description": "リソースグループ ID。", "type": "string", "required": false, "example": "rg-atstuj3rtop****" } }, { "name": "NextToken", "in": "query", "schema": { "title": "ページ分割クエリ識別子", "description": "次のクエリのトークン。有効値:\n- これが最初のクエリであるか、これ以上クエリがない場合は、これを入力する必要はありません。\n- 次のクエリがある場合は、前の API 呼び出しの **NextToken** の値に設定します。", "type": "string", "required": false, "example": "FFmyTO70tTpLG6I3FmYAXG****" } }, { "name": "MaxResults", "in": "query", "schema": { "title": "クエリ数量", "description": "ページ分割されたクエリでページごとに表示するエントリ数。値の範囲は **1** ~ **100** です。デフォルト値は **20** です。", "type": "integer", "format": "int32", "required": false, "maximum": "100", "minimum": "1", "example": "20", "default": "20" } }, { "name": "VpcId", "in": "query", "schema": { "title": "VpcId", "description": "VPC インスタンス ID。", "type": "string", "required": false, "example": "vpc-bp15zckdt37pq72zv****" } }, { "name": "ServerGroupType", "in": "query", "schema": { "title": "サーバーグループタイプ", "description": "サーバーグループタイプ。有効値:\n\n- **Instance**:サーバータイプ。ECS、ENI、ECI インスタンスを含みます。\n\n- **Ip**:IP アドレスタイプ。\n\n- **Fc**:Function Compute タイプ。\n\n- 入力しない場合、すべてのタイプが照会されます。", "type": "string", "required": false, "example": "Instance" } }, { "name": "Tag", "in": "query", "style": "flat", "schema": { "title": "タグのリスト", "description": "サーバーグループにバインドされたタグのリスト。1 回のリクエストでバインドされたタグのリストに最大 10 個のタグがサポートされています。", "type": "array", "items": { "description": "サーバーグループにバインドされたタグ。1 回のリクエストで 10 個のタグを渡すことがサポートされています。", "type": "object", "properties": { "Key": { "title": "タグキー", "description": "タグキー。最大 10 個のタグキーがサポートされています。\n\n最大 64 文字で、`aliyun` または `acs:` で始めることはできません。`http://` または `https://` を含めることはできません。", "type": "string", "required": false, "example": "Test" }, "Value": { "title": "タグ値", "description": "タグ値。最大 10 個のタグ値がサポートされています。\n\n最大 128 文字で、`aliyun` または `acs:` で始めることはできません。`http://` または `https://` を含めることはできません。\n\n", "type": "string", "required": false, "example": "Test" } }, "required": false }, "required": false, "example": "Instance" } } ], "responses": { "200": { "schema": { "title": "応答のスキーマ", "description": "返されるデータ構造。", "type": "object", "properties": { "MaxResults": { "title": "このクエリによって返されたレコード数", "description": "ページ分割されたクエリでページごとに表示するエントリ数。", "type": "integer", "format": "int32", "example": "50" }, "NextToken": { "title": "ページ分割クエリ識別子", "description": "次のクエリのトークン。有効値:\n- **NextToken** が空の場合、これ以上クエリはありません。\n- **NextToken** に戻り値がある場合、この値は次のクエリを開始するトークンを示します。", "type": "string", "example": "caeba0bbb2be03f8****" }, "RequestId": { "title": "リクエストの ID", "description": "リクエスト ID。", "type": "string", "example": "CEF72CEB-54B6-4AE8-B225-F876******" }, "ServerGroups": { "title": "サーバーグループ", "description": "バックエンドサーバーグループのリスト。", "type": "array", "items": { "description": "バックエンドサーバーグループのリスト。", "type": "object", "properties": { "HealthCheckConfig": { "title": "ヘルスチェック設定", "description": "ヘルスチェック設定。", "type": "object", "properties": { "HealthCheckConnectPort": { "title": "ポート", "description": "ヘルスチェック用のバックエンドサーバーのポート。値の範囲は **0** ~ **65535** です。\n\n戻り値 **0** は、ヘルスチェックにバックエンドサーバーのポートが使用されることを意味します。", "type": "integer", "format": "int32", "example": "80" }, "HealthCheckEnabled": { "title": "ヘルスチェックを有効にするかどうか", "description": "ヘルスチェックを有効にするかどうか。有効値:\n- **true**:有効。\n- **false**:無効。", "type": "boolean", "example": "true" }, "HealthCheckHost": { "title": "ドメイン名", "description": "ヘルスチェックドメイン名。\n\n- **バックエンドサーバーの内部 IP を使用** (デフォルト):バックエンドサーバーの内部 IP アドレスがヘルスチェックドメイン名として使用されます。\n\n- **特定のドメイン名を指定**:ドメイン名を入力します。\n\n - 長さは 1 ~ 80 文字です。\n\n - 小文字、数字、ハイフン (-)、ピリオド (.) を含めることができます。\n\n - 少なくとも 1 つのピリオド (.) を含み、ピリオド (.) は先頭または末尾に表示できません。\n\n - 右端のドメインラベルには文字のみを含めることができ、数字やハイフン (-) を含めることはできません。\n\n - ハイフン (-) は先頭または末尾に表示できません。\n\n> \n> このパラメーターは、HealthCheckProtocol が HTTP、HTTPS、または gRPC に設定されている場合にのみ有効です。", "type": "string", "example": "www.example.com" }, "HealthCheckCodes": { "title": "ステータスコード", "description": "ヘルスチェックの正常なステータスコードのリスト。", "type": "array", "items": { "description": "ヘルスチェックの正常なステータスコード。\n\n- **HealthCheckProtocol** が **HTTP** または **HTTPS** の場合、**HealthCheckCodes** は **http\\_2xx**、**http\\_3xx**、**http\\_4xx**、または **http\\_5xx** になります。複数のステータスコードはカンマ (,) で区切られます。\n\n- **HealthCheckProtocol** が **gRPC** の場合、**HealthCheckCodes** のステータスコード範囲は **0 ~ 99** です。範囲入力がサポートされており、最大 20 の範囲値があり、カンマ (,) で区切られます。\n\n> このパラメーターは、**HealthCheckProtocol** が **HTTP**、**HTTPS**、または **gRPC** の場合に有効です。", "type": "string", "example": "http_2xx" } }, "HealthCheckHttpVersion": { "title": "バージョン", "description": "ヘルスチェック HTTP プロトコルバージョン。\n\n有効値:**HTTP1.0** または **HTTP1.1**。\n\n> このパラメーターは、**HealthCheckProtocol** が **HTTP** または **HTTPS** に設定されている場合にのみ有効です。", "type": "string", "example": "HTTP1.1" }, "HealthCheckInterval": { "title": "間隔時間", "description": "ヘルスチェックの時間間隔。単位:秒。値の範囲は **1** ~ **50** です。", "type": "integer", "format": "int32", "example": "5" }, "HealthCheckMethod": { "title": "メソッド", "description": "ヘルスチェックメソッド。有効値:\n\n- **GET**:応答メッセージの長さが 8K を超える場合、切り捨てられますが、ヘルスチェック結果の判定には影響しません。\n\n- **POST**:gRPC リスナーのヘルスチェックはデフォルトで POST メソッドを使用します。\n\n- **HEAD**:HTTP および HTTPS リスナーのヘルスチェックはデフォルトで HEAD メソッドを使用します。\n\n\n> このパラメーターは、**HealthCheckProtocol** が **HTTP**、**HTTPS**、または **gRPC** に設定されている場合にのみ有効です。", "type": "string", "example": "HEAD" }, "HealthCheckPath": { "title": "URI", "description": "ヘルスチェックの転送ルールパス。\n\n> このパラメーターは、**HealthCheckProtocol** が **HTTP** または **HTTPS** に設定されている場合にのみ有効です。", "type": "string", "example": "/test/index.html" }, "HealthCheckProtocol": { "title": "プロトコル", "description": "ヘルスチェックプロトコル。有効値:\n\n- **HTTP**:ブラウザアクセスをシミュレートして HEAD または GET リクエストを送信することで、サーバーアプリケーションが正常かどうかをチェックします。\n\n- **HTTPS**:ブラウザアクセスをシミュレートして HEAD または GET リクエストを送信することで、サーバーアプリケーションが正常かどうかをチェックします。(データは暗号化されており、HTTP よりも安全です。)\n\n- **TCP**:SYN ハンドシェイクメッセージを送信することで、サーバーポートがアクティブかどうかを検出します。\n\n- **gRPC**:POST または GET リクエストを送信することで、サーバーアプリケーションが正常かどうかをチェックします。", "type": "string", "example": "HTTP" }, "HealthCheckTimeout": { "title": "タイムアウト", "description": "ヘルスチェックからの応答を待機する時間。指定された時間内にバックエンドサーバーが正しく応答しない場合、ヘルスチェックは失敗したと見なされます。単位:秒。\n\n", "type": "integer", "format": "int32", "example": "3" }, "HealthyThreshold": { "title": "正常しきい値", "description": "バックエンドサーバーのヘルスチェックステータスを **失敗** から **成功** に変更するために必要な連続した成功したヘルスチェックの数。", "type": "integer", "format": "int32", "example": "4" }, "UnhealthyThreshold": { "title": "異常しきい値", "description": "バックエンドサーバーのヘルスチェックステータスを **成功** から **失敗** に変更するために必要な連続した失敗したヘルスチェックの数。", "type": "integer", "format": "int32", "example": "4" } } }, "Protocol": { "title": "サーバーグループプロトコル", "description": "バックエンドプロトコルタイプ。有効値:\n\n- **HTTP**:HTTPS、HTTP、QUIC リスナーとの関連付けをサポートします。\n- **HTTPS**:HTTPS リスナーとの関連付けをサポートします。\n\n- **GRPC**:HTTPS および QUIC リスナーと関連付けます。\n", "type": "string", "example": "HTTP" }, "RelatedLoadBalancerIds": { "title": "関連インスタンス ID", "description": "関連インスタンス ID", "type": "array", "items": { "description": "関連ロードバランサーインスタンス ID", "type": "string", "example": "alb-n5qw04uq8savfe****" } }, "ResourceGroupId": { "title": "リソースグループ ID", "description": "リソースグループ ID。", "type": "string", "example": "rg-atstuj3rtop****" }, "Scheduler": { "title": "スケジューリングポリシー", "description": "スケジューリングアルゴリズム。有効値:\n\n- **Wrr**:重み付きラウンドロビン。重みが大きいバックエンドサーバーがポーリングされる可能性が高くなります。\n- **Wlc**:重み付き最小接続。各バックエンドサーバーに設定された重みに基づいてポーリングするだけでなく、バックエンドサーバーの実際の負荷 (接続数) も考慮されます。重みが同じ場合、現在の接続数が少ないバックエンドサーバーがポーリングされる可能性が高くなります。\n- **Sch**:一貫性ハッシュ。同じハッシュ係数計算結果を持つリクエストは、同じバックエンドサーバーにスケジュールされます。UchConfig パラメーターが設定されていない場合、デフォルトのハッシュ係数はソース IP であり、同じソース IP アドレスからのリクエストは同じバックエンドサーバーに分散されます。UchConfig パラメーターが設定されている場合、ハッシュ係数は URL パラメーターであり、同じ URL パラメーターを持つリクエストは同じバックエンドサーバーに分散されます。", "type": "string", "example": "Wrr" }, "ServerGroupId": { "title": "サーバーグループ ID", "description": "サーバーグループ ID。", "type": "string", "example": "sgp-cige6j****" }, "ServerGroupName": { "title": "サーバーグループ名", "description": "サーバーグループ名。", "type": "string", "example": "Group3" }, "ServerGroupStatus": { "title": "サーバーグループステータス", "description": "サーバーグループステータス。有効値:\n- **Creating**:作成中。\n\n- **Available**:利用可能。\n\n- **Configuring**:変更中。", "type": "string", "example": "Available" }, "ServerGroupType": { "title": "サーバーグループタイプ", "description": "サーバーグループタイプ。有効値:\n\n- **Instance**:サーバータイプ。ECS、ENI、ECI インスタンスを含みます。\n\n- **Ip**:IP タイプ。\n\n- **Fc**:Function Compute タイプ。", "type": "string", "example": "Instance" }, "StickySessionConfig": { "title": "セッション維持設定", "description": "セッション維持設定の構造。", "type": "object", "properties": { "Cookie": { "title": "Cookie", "description": "サーバーに設定された Cookie。", "type": "string", "example": "B490B5EBF6F3CD402E515D22BCDA****" }, "CookieTimeout": { "title": "Cookie タイムアウト", "description": "Cookie タイムアウト。単位:秒。値の範囲は **1** ~ **86400** です。\n\n> このパラメーターは **StickySessionEnabled** が **true** で **StickySessionType** が **Insert** の場合に有効です。\n\n\n\n", "type": "integer", "format": "int32", "example": "1000" }, "StickySessionEnabled": { "title": "セッション維持を有効にするかどうか", "description": "セッション維持を有効にするかどうか。有効値:\n\n- **true**:有効。\n- **false**:無効。\n", "type": "boolean", "example": "false" }, "StickySessionType": { "title": "セッション維持タイプ", "description": "Cookie の処理方法。有効値:\n\n- **Insert**:Cookie を挿入します。\nクライアントが初めてアクセスすると、ロードバランサーは Cookie を挿入します (つまり、HTTP または HTTPS 応答メッセージに SERVERID を挿入します)。次回クライアントがこの Cookie でアクセスすると、SLB サービスはリクエストを以前に記録されたバックエンドサーバーに転送します。\n- **Server**:Cookie を書き換えます。\nロードバランサーがユーザーが Cookie をカスタマイズしたことを検出すると、元の Cookie を書き換えます。次回クライアントが新しい Cookie でアクセスすると、SLB サービスはリクエストを以前に記録されたバックエンドサーバーに転送します。", "type": "string", "example": "Insert" } } }, "VpcId": { "title": "サーバーグループが配置されている VPC ID", "description": "VPC インスタンス ID。", "type": "string", "example": "vpc-bp15zckdt37pq72zv****" }, "Tags": { "title": "タグのリスト", "description": "サーバーグループにバインドされたタグのリスト。", "type": "array", "items": { "description": "サーバーグループにバインドされたタグのリスト。", "type": "object", "properties": { "Key": { "title": "タグキー", "description": "タグキー。", "type": "string", "example": "Test" }, "Value": { "title": "タグ値", "description": "タグ値。", "type": "string", "example": "Test" } } } }, "ConfigManagedEnabled": { "title": "構成管理を有効にするかどうか", "description": "構成管理を有効にするかどうか。有効値:\n- **true**:有効。\n- **false**:無効。", "type": "boolean", "example": "false" }, "UpstreamKeepaliveEnabled": { "title": "バックエンドの接続保持を有効にするかどうか", "description": "バックエンドの接続保持を有効にするかどうか。有効値:\n- **true**:有効。\n- **false**:無効。", "type": "boolean", "example": "false" }, "Ipv6Enabled": { "title": "IPv6 をサポートするかどうか", "description": "IPv6 をサポートするかどうか。有効値:\n- **true**:サポート。\n- **false**:サポートしない。", "type": "boolean", "example": "false" }, "ServerCount": { "title": "サーバーグループ内のサーバー数", "description": "サーバーグループ内のサーバー数。", "type": "integer", "format": "int32", "example": "1" }, "ServiceName": { "title": "サービス名", "description": "サービス名。", "type": "string", "example": "test" }, "UchConfig": { "title": "URL 一貫性ハッシュパラメーター設定", "description": "URL 一貫性ハッシュパラメーター設定。", "type": "object", "properties": { "Type": { "title": "パラメータータイプ", "description": "パラメータータイプ。QueryString のみ可能です。", "type": "string", "example": "QueryString" }, "Value": { "title": "一貫性ハッシュパラメーター値", "description": "一貫性ハッシュパラメーター値。", "type": "string", "example": "abc" } } }, "CreateTime": { "description": "リソースが作成された時間。", "type": "string", "example": "2022-07-02T02:49:05Z" }, "ConnectionDrainConfig": { "description": "接続ドレインに関連する設定。\n\n接続ドレインを有効にすると、バックエンドサーバーが削除されたり、ヘルスチェックが失敗した場合、ロードバランサーは既存の接続が一定期間正常に送信されることを許可します。\n>\n> - Basic Edition インスタンスは接続ドレインの有効化をサポートしていません。Standard Edition および WAF 対応エディションインスタンスのみがサポートしています。\n> - サーバータイプおよび IP タイプのサーバーグループは接続ドレインをサポートしています。Function Compute タイプはサポートしていません。\n", "type": "object", "properties": { "ConnectionDrainEnabled": { "description": "接続ドレインを有効にするかどうか。\n\n- **true**:有効\n- **false**:無効", "type": "boolean", "example": "false" }, "ConnectionDrainTimeout": { "description": "接続ドレインのタイムアウト。", "type": "integer", "format": "int32", "example": "300" } } }, "SlowStartConfig": { "title": "スロースタート設定", "description": "スロースタートに関連する設定。\n\nスロースタートを有効にすると、バックエンドサーバーグループに新しく追加されたバックエンドサーバーは設定された期間ウォームアップされ、そのサーバーに転送されるリクエストの数は線形に増加します。\n>\n> - Basic Edition インスタンスはスロースタートの有効化をサポートしていません。Standard Edition および WAF 対応エディションインスタンスのみがサポートしています。\n> - サーバータイプおよび IP タイプのサーバーグループはスロースタートの設定をサポートしています。Function Compute タイプはサポートしていません。\n> - スロースタートは、バックエンドのスケジューリングアルゴリズムが重み付きラウンドロビンの場合にのみ有効にできます。", "type": "object", "properties": { "SlowStartEnabled": { "description": "スロースタートを有効にするかどうか。\n\n- **true**:有効\n- **false**:無効", "type": "boolean", "example": "false" }, "SlowStartDuration": { "description": "スロースタートの持続時間。", "type": "integer", "format": "int32", "example": "30" } } }, "CrossZoneEnabled": { "description": "サーバーグループがクロスゾーン負荷分散を有効にするかどうか。有効値:\n\n- **true**:有効 (デフォルト)\n\n- **false**:無効", "type": "boolean", "example": "true" } } } }, "TotalCount": { "title": "合計レコード", "description": "リストエントリの数。", "type": "integer", "format": "int32", "example": "1000" } } } } }, "eventInfo": { "enable": false, "eventNames": [] }, "responseDemo": "[{\"type\":\"json\",\"example\":\"{\\n \\\"MaxResults\\\": 50,\\n \\\"NextToken\\\": \\\"caeba0bbb2be03f8****\\\",\\n \\\"RequestId\\\": \\\"CEF72CEB-54B6-4AE8-B225-F876******\\\",\\n \\\"ServerGroups\\\": [\\n {\\n \\\"HealthCheckConfig\\\": {\\n \\\"HealthCheckConnectPort\\\": 80,\\n \\\"HealthCheckEnabled\\\": true,\\n \\\"HealthCheckHost\\\": \\\"www.example.com\\\",\\n \\\"HealthCheckCodes\\\": [\\n \\\"http_2xx\\\"\\n ],\\n \\\"HealthCheckHttpVersion\\\": \\\"HTTP1.1\\\",\\n \\\"HealthCheckInterval\\\": 5,\\n \\\"HealthCheckMethod\\\": \\\"HEAD\\\",\\n \\\"HealthCheckPath\\\": \\\"/test/index.html\\\",\\n \\\"HealthCheckProtocol\\\": \\\"HTTP\\\",\\n \\\"HealthCheckTimeout\\\": 3,\\n \\\"HealthyThreshold\\\": 4,\\n \\\"UnhealthyThreshold\\\": 4\\n },\\n \\\"Protocol\\\": \\\"HTTP\\\",\\n \\\"RelatedLoadBalancerIds\\\": [\\n \\\"alb-n5qw04uq8savfe****\\\"\\n ],\\n \\\"ResourceGroupId\\\": \\\"rg-atstuj3rtop****\\\",\\n \\\"Scheduler\\\": \\\"Wrr\\\",\\n \\\"ServerGroupId\\\": \\\"sgp-cige6j****\\\",\\n \\\"ServerGroupName\\\": \\\"Group3\\\",\\n \\\"ServerGroupStatus\\\": \\\"Available\\\",\\n \\\"ServerGroupType\\\": \\\"Instance\\\",\\n \\\"StickySessionConfig\\\": {\\n \\\"Cookie\\\": \\\"B490B5EBF6F3CD402E515D22BCDA****\\\",\\n \\\"CookieTimeout\\\": 1000,\\n \\\"StickySessionEnabled\\\": false,\\n \\\"StickySessionType\\\": \\\"Insert\\\"\\n },\\n \\\"VpcId\\\": \\\"vpc-bp15zckdt37pq72zv****\\\",\\n \\\"Tags\\\": [\\n {\\n \\\"Key\\\": \\\"Test\\\",\\n \\\"Value\\\": \\\"Test\\\"\\n }\\n ],\\n \\\"ConfigManagedEnabled\\\": false,\\n \\\"UpstreamKeepaliveEnabled\\\": false,\\n \\\"Ipv6Enabled\\\": false,\\n \\\"ServerCount\\\": 1,\\n \\\"ServiceName\\\": \\\"test\\\",\\n \\\"UchConfig\\\": {\\n \\\"Type\\\": \\\"QueryString\\\",\\n \\\"Value\\\": \\\"abc\\\"\\n },\\n \\\"CreateTime\\\": \\\"2022-07-02T02:49:05Z\\\",\\n \\\"ConnectionDrainConfig\\\": {\\n \\\"ConnectionDrainEnabled\\\": false,\\n \\\"ConnectionDrainTimeout\\\": 300\\n },\\n \\\"SlowStartConfig\\\": {\\n \\\"SlowStartEnabled\\\": false,\\n \\\"SlowStartDuration\\\": 30\\n },\\n \\\"CrossZoneEnabled\\\": true\\n }\\n ],\\n \\\"TotalCount\\\": 1000\\n}\",\"errorExample\":\"\"},{\"type\":\"xml\",\"example\":\"<ListServerGroupsResponse>\\n <MaxResults>50</MaxResults>\\n <NextToken>caeba0bbb2be03f8****</NextToken>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n <ServerGroups>\\n <HealthCheckConfig>\\n <HealthCheckConnectPort>80</HealthCheckConnectPort>\\n <HealthCheckEnabled>true</HealthCheckEnabled>\\n <HealthCheckHost>www.example.com</HealthCheckHost>\\n <HealthCheckCodes>http_2xx</HealthCheckCodes>\\n <HealthCheckHttpVersion>HTTP1.1</HealthCheckHttpVersion>\\n <HealthCheckInterval>5</HealthCheckInterval>\\n <HealthCheckMethod>HEAD</HealthCheckMethod>\\n <HealthCheckPath>/test/index.html</HealthCheckPath>\\n <HealthCheckProtocol>HTTP</HealthCheckProtocol>\\n <HealthCheckTimeout>3</HealthCheckTimeout>\\n <HealthyThreshold>4</HealthyThreshold>\\n <UnhealthyThreshold>4</UnhealthyThreshold>\\n </HealthCheckConfig>\\n <Protocol>HTTP</Protocol>\\n <ResourceGroupId>rg-atstuj3rtop****</ResourceGroupId>\\n <Scheduler>Wrr</Scheduler>\\n <ServerGroupId>sgp-cige6j****</ServerGroupId>\\n <ServerGroupName>Group3</ServerGroupName>\\n <ServerGroupStatus>Available</ServerGroupStatus>\\n <ServerGroupType>Instance</ServerGroupType>\\n <StickySessionConfig>\\n <Cookie>B490B5EBF6F3CD402E515D22BCDA****</Cookie>\\n <CookieTimeout>1000</CookieTimeout>\\n <StickySessionEnabled>false</StickySessionEnabled>\\n <StickySessionType>Insert</StickySessionType>\\n </StickySessionConfig>\\n <VpcId>vpc-bp15zckdt37pq72zv****</VpcId>\\n <Tags>\\n <Key>Test</Key>\\n <Value>Test</Value>\\n </Tags>\\n <ConfigManagedEnabled>false</ConfigManagedEnabled>\\n <UpstreamKeepaliveEnabled>false</UpstreamKeepaliveEnabled>\\n <Ipv6Enabled>false</Ipv6Enabled>\\n <ServerCount>1</ServerCount>\\n <ServiceName>test</ServiceName>\\n <CreateTime>2023-03-21T07:43:10Z</CreateTime>\\n </ServerGroups>\\n <TotalCount>1000</TotalCount>\\n</ListServerGroupsResponse>\",\"errorExample\":\"\"}]", "title": "サーバーグループの照会" }, "ListServerGroupServers": { "summary": "サーバーグループ内のサーバーを照会します。", "methods": [ "get", "post" ], "schemes": [ "http", "https" ], "security": [ { "AK": [] } ], "operationType": "read", "deprecated": false, "systemTags": { "operationType": "get", "riskType": "none", "chargeType": "free", "abilityTreeCode": "167", "abilityTreeNodes": [ "FEATUREslbULKWF1" ] }, "parameters": [ { "name": "NextToken", "in": "query", "schema": { "title": "ページ分割クエリ識別子", "description": "次のクエリのトークン。有効値:\n- これが最初のクエリであるか、これ以上クエリがない場合は、これを入力する必要はありません。\n- 次のクエリがある場合は、前の API 呼び出しの **NextToken** の値に設定します。", "type": "string", "required": false, "example": "FFmyTO70tTpLG6I3FmYAXG****" } }, { "name": "MaxResults", "in": "query", "schema": { "title": "クエリ数量", "description": "今回読み取るデータレコードの最大数。値の範囲は **1** ~ **100** です。パラメーターが空の場合、デフォルト値は **20** です。", "type": "integer", "format": "int32", "required": false, "maximum": "1000", "minimum": "1", "example": "50", "default": "20" } }, { "name": "ServerGroupId", "in": "query", "schema": { "title": "サーバーグループ ID", "description": "サーバーグループ ID。", "type": "string", "required": false, "example": "sgp-cb25e2i2vr******" } }, { "name": "ServerIds", "in": "query", "style": "flat", "schema": { "title": "サーバー ID のリスト", "description": "サーバー ID のリスト。", "type": "array", "items": { "title": "サーバー ID", "description": "サーバー ID。1 回の呼び出しで最大 40 台のサーバーを表示できます。\n\n- サーバーグループのタイプが **Instance** の場合、このパラメーターは ECS、ENI、または ECI のリソース ID です。\n- サーバーグループのタイプが **Ip** の場合、このパラメーターは IP アドレスです。\n- サーバーグループのタイプが **Fc** の場合、このパラメーターは Function Compute の ARN 識別子です。\n\n", "type": "string", "required": false, "example": "i-bp1e0u8f10by57wl****" }, "required": false, "maxItems": 20, "minItems": 1 } }, { "name": "Tag", "in": "query", "style": "flat", "schema": { "title": "サーバーグループにバインドされたタグのリスト", "description": "サーバーグループにバインドされたタグのリスト。1 回のリクエストでバインドされたタグのリストに最大 10 個のタグがサポートされています。", "type": "array", "items": { "title": "サーバーグループにバインドされたタグ", "description": "サーバーグループにバインドされたタグのリスト。1 回のリクエストでバインドされたタグのリストに最大 10 個のタグがサポートされています。", "type": "object", "properties": { "Key": { "title": "タグキー", "description": "タグキー。最大 10 個のタグキーがサポートされています。\n\n最大 64 文字で、`aliyun` または `acs:` で始めることはできません。`http://` または `https://` を含めることはできません。", "type": "string", "required": false, "example": "Test" }, "Value": { "title": "タグ値", "description": "タグ値。最大 10 個のタグ値がサポートされています。\n\n最大 128 文字で、`aliyun` または `acs:` で始めることはできません。`http://` または `https://` を含めることはできません。", "type": "string", "required": false, "example": "Test" } }, "required": false }, "required": false } } ], "responses": { "200": { "schema": { "title": "応答のスキーマ", "description": "返されるデータ構造。", "type": "object", "properties": { "MaxResults": { "title": "このクエリによって返されたレコード数", "description": "このリクエストに対して返されるレコードの最大数。", "type": "integer", "format": "int32", "example": "50" }, "NextToken": { "title": "ページ分割クエリ識別子", "description": "次のクエリのトークン。有効値:\n- **NextToken** が空の場合、これ以上クエリはありません。\n- **NextToken** に戻り値がある場合、この値は次のクエリを開始するトークンを示します。", "type": "string", "example": "caeba0bbb2be03f8****" }, "RequestId": { "title": "リクエストの ID", "description": "リクエスト ID。", "type": "string", "example": "CEF72CEB-54B6-4AE8-B225-F876FF*****" }, "Servers": { "title": "バックエンドサーバーのリスト", "description": "サーバーのリスト。", "type": "array", "items": { "title": "バックエンドサーバー", "description": "バックエンドサーバーの説明の構造。", "type": "object", "properties": { "Description": { "title": "説明情報", "description": "バックエンドサーバーの説明。", "type": "string", "example": "test" }, "Port": { "title": "ポート", "description": "バックエンドサーバーが使用するポート。値の範囲は **1** ~ **65535** です。", "type": "integer", "format": "int32", "example": "80" }, "ServerId": { "title": "サーバー ID", "description": "バックエンドサーバー ID。\n\n>**ServerType** が **Fc** の場合、**ServerId** は Function Compute の ARN 識別子です。", "type": "string", "example": "i-bp1f9kdprbgy9uiu****" }, "ServerIp": { "title": "サーバー IP", "description": "指定された IP アドレス。", "type": "string", "example": "192.168.XX.XX" }, "ServerType": { "title": "バックエンドサーバータイプ", "description": "バックエンドサーバータイプ。", "type": "string", "example": "Ecs" }, "Status": { "title": "ステータス", "description": "バックエンドサーバーの追加ステータス。有効値:\n\n- **Adding**:追加中。\n- **Available**:通常の利用可能状態。\n- **Configuring**:設定中。\n- **Removing**:削除中。", "type": "string", "example": "Available" }, "Weight": { "title": "重み", "description": "バックエンドサーバーの重み。重みが大きいサーバーには、より多くのアクセスリクエストが割り当てられます。", "type": "integer", "format": "int32", "example": "100" }, "ServerGroupId": { "title": "サーバーグループ ID", "description": "サーバーグループ ID。", "type": "string", "example": "sgp-qy042e1jabmprh****" }, "RemoteIpEnabled": { "title": "リモート IP かどうか", "description": "リモート IP を有効にするかどうか。有効値:\n \n- **true**:はい。\n- **false**:いいえ。", "type": "boolean", "example": "true" } } } }, "TotalCount": { "title": "合計レコード", "description": "このリクエストの条件下のデータ総量。", "type": "integer", "format": "int32", "example": "3" } } } } }, "errorCodes": { "403": [ { "errorCode": "Forbidden.ServerGroup", "errorMessage": "Authentication has failed for ServerGroup." } ] }, "responseDemo": "[{\"type\":\"json\",\"example\":\"{\\n \\\"MaxResults\\\": 50,\\n \\\"NextToken\\\": \\\"caeba0bbb2be03f8****\\\",\\n \\\"RequestId\\\": \\\"CEF72CEB-54B6-4AE8-B225-F876FF*****\\\",\\n \\\"Servers\\\": [\\n {\\n \\\"Description\\\": \\\"test\\\",\\n \\\"Port\\\": 80,\\n \\\"ServerId\\\": \\\"i-bp1f9kdprbgy9uiu****\\\",\\n \\\"ServerIp\\\": \\\"192.168.XX.XX\\\",\\n \\\"ServerType\\\": \\\"Ecs\\\",\\n \\\"Status\\\": \\\"Available\\\",\\n \\\"Weight\\\": 100,\\n \\\"ServerGroupId\\\": \\\"sgp-qy042e1jabmprh****\\\",\\n \\\"RemoteIpEnabled\\\": true\\n }\\n ],\\n \\\"TotalCount\\\": 3\\n}\",\"errorExample\":\"\"},{\"type\":\"xml\",\"example\":\"<ListServerGroupServersResponse>\\n <MaxResults>50</MaxResults>\\n <NextToken>caeba0bbb2be03f8****</NextToken>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n <Servers>\\n <Description>test</Description>\\n <Port>80</Port>\\n <ServerId>i-bp1f9kdprbgy9uiu****</ServerId>\\n <ServerIp>192.168.XX.XX</ServerIp>\\n <ServerType>Ecs</ServerType>\\n <Status>Available</Status>\\n <Weight>100</Weight>\\n <ServerGroupId>sgp-qy042e1jabmprh****</ServerGroupId>\\n <RemoteIpEnabled>true</RemoteIpEnabled>\\n </Servers>\\n <TotalCount>3</TotalCount>\\n</ListServerGroupServersResponse>\",\"errorExample\":\"\"}]", "title": "サーバーの照会" }, "ListRules": { "summary": "指定されたリージョン内の転送ルールを照会します。", "methods": [ "get", "post" ], "schemes": [ "http", "https" ], "security": [ { "AK": [] } ], "operationType": "read", "deprecated": false, "systemTags": { "operationType": "get", "riskType": "none", "chargeType": "free", "abilityTreeNodes": [ "FEATUREslbM7ALO6" ] }, "parameters": [ { "name": "NextToken", "in": "query", "schema": { "title": "読み取りを開始する現在の開始位置をマークします。最初から開始するには空のままにします。", "description": "次のクエリのトークン。有効値:\n\n- これが最初のクエリであるか、これ以上クエリがない場合は、これを入力する必要はありません。\n\n- 次のクエリがある場合は、前の API 呼び出しの **NextToken** の値に設定します。", "type": "string", "required": false, "example": "FFmyTO70tTpLG6I3FmYAXGKPd****" } }, { "name": "MaxResults", "in": "query", "schema": { "title": "今回読み取るデータレコードの最大数。このパラメーターはオプションです。値は 1 ~ 100 です。ユーザーが値を渡さない場合、デフォルトは 20 です。", "description": "読み取るデータレコードの最大数。\n\n値は **1 ~ 100** です。\n\nデフォルト値は **20** で、ユーザーがデータを渡さなかったことを意味します。\n\n> このパラメーターはオプションです。", "type": "integer", "format": "int32", "required": false, "example": "20" } }, { "name": "RuleIds", "in": "query", "style": "flat", "schema": { "title": "転送ルール ID のリスト、N は最大 20 をサポート", "description": "転送ルールのリスト。一度に最大 20 の転送ルールを照会できます。", "type": "array", "items": { "description": "転送ルール ID。", "type": "string", "required": false, "example": "rule-sada******" }, "required": false, "maxItems": 20, "minItems": 1 } }, { "name": "ListenerIds", "in": "query", "style": "flat", "schema": { "title": "リスナー ID のリスト", "description": "リスナー ID のリスト。一度に最大 20 のリスナーを照会できます。", "type": "array", "items": { "description": "リスナー ID。", "type": "string", "required": false, "example": "lsn-i35udpz3pxsmnf****" }, "required": false, "maxItems": 20 } }, { "name": "LoadBalancerIds", "in": "query", "style": "flat", "schema": { "title": "インスタンス ID のリスト", "description": "ロードバランサーインスタンス ID のリスト。一度に最大 20 のインスタンスを照会できます。", "type": "array", "items": { "description": "ロードバランサーインスタンス ID。", "type": "string", "required": false, "example": "alb-x30o38azsuj0sx****" }, "required": false, "maxItems": 20 } }, { "name": "Direction", "in": "query", "schema": { "title": "転送ルールの方向", "description": "転送ルールの方向。有効値:\n\n- **Request** (デフォルト):リクエストタイプ。クライアントから ALB に送信されたメッセージの条件に一致し、対応するアクションを実行します。\n\n- **Response**:応答タイプ。バックエンドサーバーグループから ALB に返されたメッセージの条件に一致し、対応するアクションを実行します。\n\n>Basic Edition ALB インスタンスは Response タイプをサポートしていません。", "type": "string", "required": false, "example": "Request" } }, { "name": "Tag", "in": "query", "style": "flat", "schema": { "description": "タグ。", "type": "array", "items": { "description": "タグの構造。", "type": "object", "properties": { "Key": { "description": "タグキー。最大 128 文字で、aliyun または acs: で始めることはできません。http:// または https:// を含めることはできません。", "type": "string", "required": false, "example": "env" }, "Value": { "description": "タグ値。最大 128 文字で、aliyun または acs: で始めることはできません。http:// または https:// を含めることはできません。", "type": "string", "required": false, "example": "product" } }, "required": false }, "required": false, "maxItems": 20 } } ], "responses": { "200": { "schema": { "title": "応答のスキーマ", "description": "転送ルール。", "type": "object", "properties": { "MaxResults": { "title": "このリクエストに対して返されるレコードの最大数。", "description": "このリクエストに対して返されるレコードの最大数。", "type": "integer", "format": "int32", "example": "50" }, "NextToken": { "title": "現在の呼び出しが読み取りに戻る位置を示します。空はデータが読み取られたことを意味します。", "description": "次のクエリのトークン。有効値:\n- **NextToken** が空の場合、これ以上クエリはありません。\n- **NextToken** に戻り値がある場合、この値は次のクエリを開始するトークンを示します。", "type": "string", "example": "FFmyTO70tTpLG6I3FmYAXGKPd****" }, "RequestId": { "title": "リクエストの ID", "description": "リクエスト ID。", "type": "string", "example": "CEF72CEB-54B6-4AE8-B225-F876F******" }, "Rules": { "title": "転送ルールのリスト", "description": "転送ルールのリスト。", "type": "array", "items": { "description": "転送ルールの構造。", "type": "object", "properties": { "ListenerId": { "title": "リスナー ID", "description": "転送ルールが属するリスナーの ID。", "type": "string", "example": "lsn-i35udpz3pxsmnf****" }, "LoadBalancerId": { "title": "インスタンス ID", "description": "転送ルールが属するロードバランサーインスタンスの ID。", "type": "string", "example": "alb-x30o38azsuj0sx****" }, "Priority": { "title": "転送ルールの優先度", "description": "ルールの優先度。値は **1 ~ 10000** です。値が小さいほど優先度が高くなります。\n\n> ルールの優先度は、同じリスナー内で一意である必要があります。", "type": "integer", "format": "int32", "example": "1" }, "RuleActions": { "title": "転送ルールのアクション", "description": "転送ルールのアクションのリスト。", "type": "array", "items": { "description": "転送ルールのアクションの構造。", "type": "object", "properties": { "FixedResponseConfig": { "title": "固定コンテンツ応答アクション設定", "description": "固定応答コンテンツ設定。", "type": "object", "properties": { "Content": { "title": "コンテンツ", "description": "返す固定コンテンツ。最大 1 KB バイトで、ASCII 文字のみをサポートします。", "type": "string", "example": "dssacav" }, "ContentType": { "title": "コンテンツタイプ", "description": "返される固定コンテンツの形式。\n\n有効値:**text/plain**、**text/css**、**text/html**、**application/javascript**、または **application/json**。", "type": "string", "example": "text/plain" }, "HttpCode": { "title": "HTTP 応答コード", "description": "返す HTTP 応答コード。**HTTP_2xx**、**HTTP_4xx**、**HTTP_5xx** の数値文字列のみをサポートします。ここで **x** は任意の数字です。", "type": "string", "example": "HTTP_2xx" } } }, "ForwardGroupConfig": { "title": "転送グループアクション設定", "description": "転送グループ設定。", "type": "object", "properties": { "ServerGroupTuples": { "title": "転送先のサーバーグループのリスト", "description": "転送先のサーバーグループのリスト。", "type": "array", "items": { "description": "転送先のサーバーグループのリスト。", "type": "object", "properties": { "ServerGroupId": { "title": "サーバーグループ ID", "description": "転送先のサーバーグループの ID。", "type": "string", "example": "sgp-atstuj3rtoptyui****" }, "Weight": { "title": "ServerGroupTuple.N の数が 1 より大きい場合、各サーバーグループの重みを設定できます", "description": "重み。値の範囲は **0** ~ **100** です。", "type": "integer", "format": "int32", "example": "2" } } } }, "ServerGroupStickySession": { "title": "サーバーグループ間のセッション維持設定", "description": "サーバーグループ間のセッション維持設定", "type": "object", "properties": { "Enabled": { "title": "ServerGroupTuple.N の数が 1 より大きい場合、サーバーグループ間のセッション維持を有効にするかどうかはオプションです", "description": "ServerGroupTuple.N の数が 1 より大きい場合、サーバーグループ間のセッション維持を有効にするかどうかはオプションです", "type": "boolean" }, "Timeout": { "title": "Enabled=True の場合、セッション維持タイムアウトを設定できます", "description": "Enabled=True の場合、セッション維持タイムアウトを設定できます", "type": "integer", "format": "int32", "example": "100" } } } } }, "InsertHeaderConfig": { "title": "ヘッダー挿入アクション設定", "description": "ヘッダーフィールド書き込み設定。", "type": "object", "properties": { "Key": { "title": "HTTP ヘッダー", "description": "挿入するヘッダーフィールドの名前。長さは 1 ~ 40 文字で、大文字と小文字の a-z、数字、アンダースコア (_)、ハイフン (-) をサポートします。ヘッダーフィールド名は `InsertHeader` で繰り返し使用できません。\n\n> ユーザーはヘッダーフィールド名に **Cookie** と **Host** を使用することはできません。", "type": "string", "example": "key" }, "Value": { "title": "HTTP ヘッダーコンテンツ", "description": "挿入するヘッダーフィールドのコンテンツ。\n\n- **ValueType** が **SystemDefined** の場合、値は次のとおりです:\n - **ClientSrcPort**:クライアントポート。\n - **ClientSrcIp**:クライアント IP アドレス。\n - **Protocol**:クライアントリクエストプロトコル (HTTP または HTTPS)。\n - **SLBId**:Application Load Balancer インスタンス ID。\n - **SLBPort**:Application Load Balancer インスタンスリスナーポート。\n- **ValueType** が **UserDefined** の場合:ヘッダーフィールドのコンテンツをカスタマイズできます。長さは 1 ~ 128 文字に制限され、ワイルドカードのアスタリスク (*) と疑問符 (?)、および ASCII 値の範囲 `ch >= 32 && ch < 127` 内の印刷可能な文字をサポートします。先頭と末尾はスペースにできません。\n- **ValueType** が **ReferenceHeader** の場合:リクエストヘッダーのフィールドを参照できます。長さは 1 ~ 128 文字に制限され、小文字の a-z、数字、ハイフン (-)、アンダースコア (_) をサポートします。", "type": "string", "example": "ClientSrcPort" }, "ValueType": { "title": "値のタイプ", "description": "ヘッダーフィールドのコンテンツタイプ。有効値:\n\n- **UserDefined**:ユーザー指定。\n\n- **ReferenceHeader**:ユーザーリクエストヘッダーのフィールドを参照します。\n\n- **SystemDefined**:システム定義。", "type": "string", "example": "SystemDefined" } } }, "Order": { "title": "優先度", "description": "転送ルールアクションの実行順序。値は **1 ~ 50000** です。アクションは値の昇順で実行されます。値は空にできず、繰り返すことはできません。", "type": "integer", "format": "int32", "example": "1" }, "RedirectConfig": { "title": "リダイレクトアクション設定", "description": "リダイレクト設定。", "type": "object", "properties": { "Host": { "title": "ジャンプ先ホストアドレス", "description": "ジャンプ先ホストアドレス。有効値:\n- **${host}** (デフォルト):この値は他の文字と組み合わせて使用できません。\n- その他の値、次の文字セットと形式の制限があります:\n - ホスト名の長さは 3 ~ 128 文字で、小文字の a-z、数字、ハイフン (-)、ピリオド (.)、ワイルドカードのアスタリスク (*) と疑問符 (?) をサポートします。\n - ホスト名は少なくとも 1 つのピリオド (.) を含み、ピリオド (.) は先頭または末尾に表示できません。\n - 右端のドメインラベルには文字とワイルドカードのみを含めることができ、数字やハイフン (-) を含めることはできません。\n - ハイフン (-) は他のドメインラベルの先頭または末尾に表示できません。\n - ワイルドカードのアスタリスク (*) と疑問符 (?) はドメインラベルのどこにでも表示できます。", "type": "string", "example": "www.example.com" }, "HttpCode": { "title": "ジャンプメソッド", "description": "ジャンプメソッド。値は **301**、**302**、**303**、**307**、または **308** です。", "type": "string", "example": "301" }, "Path": { "title": "ジャンプ先パス", "description": "ジャンプ先パス。有効値:\n- **${path}** (デフォルト):**${host}**、**${protocol}**、**${port}** を参照でき、**${host}**、**${protocol}**、**${port}** で構成されます。各変数は最大 1 回表示できます。これらの変数は、以下にリストされている許容値の範囲内の文字列と同時に使用したり、連結したりできます。\n- その他の値、次の文字セットと形式の制限があります:\n - 長さは 1 ~ 128 文字です。\n - スラッシュ (/) で始まり、文字、数字、特殊文字 `$-_.+/&~@:` をサポートします。`“%#;!()[]^,”` はサポートしません。また、ワイルドカードのアスタリスク (*) と疑問符 (?) もサポートします。", "type": "string", "example": "/test" }, "Port": { "title": "ジャンプ先ポート", "description": "ジャンプ先ポート。有効値:\n- **${port}** (デフォルト):この値は他の文字と同時に使用できません。\n- その他の値:**1 ~ 63335**。", "type": "string", "example": "10" }, "Protocol": { "title": "ジャンプ先プロトコル", "description": "ジャンプ先プロトコル。有効値:\n- **${protocol}** (デフォルト):この値は他の文字と組み合わせて使用できません。\n- **HTTP** または **HTTPS**。\n\n \n> HTTPS リスナーは HTTPS プロトコルへのジャンプのみをサポートします。", "type": "string", "example": "HTTP" }, "Query": { "title": "ジャンプ先クエリ文字列", "description": "ジャンプ先クエリ文字列。長さは 1 ~ 128 文字で、小文字と可視文字をサポートします。`#[]{}\\|<>&` はサポートしません。\n", "type": "string", "example": "quert" } } }, "RemoveHeaderConfig": { "title": "HTTP ヘッダーの削除", "description": "HTTP ヘッダー削除設定。", "type": "object", "properties": { "Key": { "title": "HTTP ヘッダー", "description": "削除するヘッダーフィールドの名前。長さは 1 ~ 40 文字で、大文字と小文字の a-z、数字、アンダースコア (_)、ハイフン (-) をサポートします。ヘッダーフィールド名は RemoveHeader で繰り返し使用できません。\n\n* リクエスト方向 (Direction は Request):ヘッダー名は次のフィールドに設定できません (大文字と小文字を区別しない):`slb-id`、`slb-ip`、`x-forwarded-for`、`x-forwarded-proto`、`x-forwarded-eip`、`x-forwarded-port`、`x-forwarded-client-srcport`、`connection`、`upgrade`、`content-length`、`transfer-encoding`、`keep-alive`、`te`、`host`、`cookie`、`remoteip`、`authority`。\n* 応答方向 (Direction は Response):ヘッダー名は次のフィールドに設定できません (大文字と小文字を区別しない):`connection`、`upgrade`、`content-length`、`transfer-encoding`。", "type": "string", "example": "key" } } }, "RewriteConfig": { "title": "内部リダイレクトアクション設定", "description": "書き換え設定。", "type": "object", "properties": { "Host": { "title": "ホスト名", "description": "ジャンプ先ホストアドレス。有効値:\n- **${host}** (デフォルト):この値は他の文字と組み合わせて使用できません。\n- その他の値、次の文字セットと形式の制限があります:\n - ホスト名の長さは 3 ~ 128 文字で、小文字の a-z、数字、ハイフン (-)、ピリオド (.)、ワイルドカードのアスタリスク (*) と疑問符 (?) をサポートします。\n - ホスト名は少なくとも 1 つのピリオド (.) を含み、ピリオド (.) は先頭または末尾に表示できません。\n - 右端のドメインラベルには文字とワイルドカードのみを含めることができ、数字やハイフン (-) を含めることはできません。\n - ハイフン (-) は他のドメインラベルの先頭または末尾に表示できません。\n - ワイルドカードのアスタリスク (*) と疑問符 (?) はドメインラベルのどこにでも表示できます。", "type": "string", "example": "www.example.com" }, "Path": { "title": "パス", "description": "内部ジャンプの宛先パス。長さは 1 ~ 128 文字で、スラッシュ (/) で始まり、文字、数字、アスタリスク (*)、疑問符 (?)、および `$-_.+/&~@:` をサポートします。`“%#;!()[]^,”` はサポートしません。", "type": "string", "example": "/tsdf" }, "Query": { "title": "クエリ", "description": "内部ジャンプのクエリ文字列。長さは 1 ~ 128 文字で、小文字と可視文字をサポートします。`#[]{}\\|<>&` はサポートしません。\n\n", "type": "string", "example": "quedsa" } } }, "TrafficMirrorConfig": { "title": "TrafficMirror アクションに対応する設定。type が TrafficMirror の場合に必須で有効です", "description": "トラフィックミラーリング。", "type": "object", "properties": { "TargetType": { "title": "トラフィックミラーリングの宛先。サーバーグループにすることができます", "description": "トラフィックミラーリングの宛先。サーバーグループにすることができます", "type": "string", "example": "ForwardGroupMirror" }, "MirrorGroupConfig": { "title": "TargetType がサーバーグループの場合に必須。ターゲットサーバーグループ", "description": "サーバーグループへのトラフィックミラーリング。", "type": "object", "properties": { "ServerGroupTuples": { "description": "サーバーグループへのトラフィックミラーリング。", "type": "array", "items": { "type": "object", "properties": { "ServerGroupId": { "description": "サーバーグループ ID。", "type": "string", "example": "sgp-00mkgijak0w4qgz9****" }, "Weight": { "description": "重み。値の範囲は **0** ~ **100** です。", "type": "integer", "format": "int32", "example": "2" } } } } } } } }, "TrafficLimitConfig": { "description": "トラフィックレート制限。", "type": "object", "properties": { "QPS": { "description": "1 秒あたりのリクエスト数。値の範囲は **1** ~ **100000** です。", "type": "integer", "format": "int32", "example": "4" }, "PerIpQps": { "description": "IP あたりの 1 秒あたりのリクエスト数。値の範囲は **1 ~ 100000** です。\n\n> **QPS** パラメーターも設定されている場合、**PerIpQps** パラメーターの値は **QPS** パラメーターの値より小さくする必要があります。", "type": "integer", "format": "int32", "example": "80" } } }, "Type": { "title": "転送ルールのアクションタイプ", "description": "アクションタイプ。有効値:\n\n- **ForwardGroup**:複数の仮想サーバーグループに転送します。\n\n- **Redirect**:リダイレクトします。\n\n- **FixedResponse**:固定コンテンツを返します。\n\n- **Rewrite**:書き換えます。\n\n- **InsertHeader**:ヘッダーフィールドを書き込みます。\n\n- **RemoveHeaderConfig**:ヘッダーフィールドを削除します。\n\n- **TrafficLimitConfig**:トラフィックレート制限。\n\n- **TrafficMirrorConfig**:トラフィックミラーリング。\n\n- **CorsConfig**:クロスドメイン。", "type": "string", "example": "ForwardGroup" }, "CorsConfig": { "title": "クロスドメイン", "description": "クロスドメイン。", "type": "object", "properties": { "AllowOrigin": { "title": "許可されたアクセス元", "description": "許可されたアクセス元。", "type": "array", "items": { "description": "許可されたアクセス元。`*` または 1 つ以上の値として設定できます。値の値は `*` にはできません。\n\n- 単一の値は `http://` または `https://` で始まり、正しいドメイン名または第 1 レベルのワイルドカードドメイン名 (例:`*.test.abc.example.com`) が続く必要があります。\n- 単一の値はポートなしでも、ポートを指定することもできます。ポート範囲は **1** ~ **65535** です。", "type": "string", "example": "http://test.com" } }, "AllowMethods": { "title": "クロスドメインアクセスに許可される HTTP メソッドを選択", "description": "クロスドメインアクセスに許可される HTTP メソッドを選択します。", "type": "array", "items": { "description": "クロスドメインアクセスに許可される HTTP メソッドを選択します。有効値:\n- **GET**。\n- **POST**。\n- **PUT**。\n- **DELETE**。\n- **HEAD**。\n- **OPTIONS**。\n- **PATCH**。", "type": "string", "example": "GET" } }, "AllowHeaders": { "title": "許可されたクロスドメインヘッダーのリスト", "description": "許可されたクロスドメインヘッダーのリスト。", "type": "array", "items": { "description": "許可されたクロスドメインヘッダーのリスト。`*` または 1 つ以上の値として設定でき、カンマ (,) で区切られます。単一の値には、大文字と小文字、数字、アンダースコア (_) とハイフン (-) (先頭または末尾ではない) のみを含めることができます。最大長は 32 文字です。", "type": "string", "example": "test_123" } }, "ExposeHeaders": { "title": "許可された公開ヘッダーのリスト", "description": "許可された公開ヘッダーのリスト。", "type": "array", "items": { "description": "許可されたクロスドメインヘッダーのリスト。`*` または 1 つ以上の値として設定でき、カンマ (,) で区切られます。単一の値には、大文字と小文字、数字、アンダースコア (_) とハイフン (-) (先頭または末尾ではない) のみを含めることができます。最大長は 32 文字です。", "type": "string", "example": "test_123" } }, "AllowCredentials": { "title": "認証情報情報の持ち運びを許可するかどうか", "description": "認証情報情報の持ち運びを許可するかどうか。有効値:\n\n- **on**:はい。\n- **off**:いいえ。", "type": "string", "example": "on" }, "MaxAge": { "title": "ブラウザでのプリフライトリクエストの最大キャッシュ時間", "description": "ブラウザでのプリフライトリクエストの最大キャッシュ時間 (秒)。\n\n値の範囲は **-1** ~ **172800** です。", "type": "integer", "format": "int64", "example": "1000" } } } } } }, "RuleConditions": { "title": "転送ルールの条件", "description": "転送ルールの条件のリスト。", "type": "array", "items": { "description": "転送ルールの条件の構造。", "type": "object", "properties": { "CookieConfig": { "title": "Cookie 条件設定", "description": "Cookie 設定。", "type": "object", "properties": { "Values": { "title": "Cookie キーと値のペアのリスト", "description": "Cookie 値。", "type": "array", "items": { "description": "Cookie 値。", "type": "object", "properties": { "Key": { "title": "Cookie 条件キー", "description": "Cookie キー。長さは 1 ~ 100 文字で、小文字、可視文字、アスタリスク (*)、疑問符 (?) をサポートします。スペースと `#[]{}\\|<>&` はサポートしません。", "type": "string", "example": "test" }, "Value": { "title": "Cookie 条件値", "description": "Cookie 値。長さは 1 ~ 128 文字で、小文字、可視文字、アスタリスク (*)、疑問符 (?) をサポートします。スペースと `#[]{}\\|<>&` はサポートしません。", "type": "string", "example": "test" } } } } } }, "HeaderConfig": { "title": "HTTP ヘッダー条件設定", "description": "ヘッダーフィールド設定。", "type": "object", "properties": { "Key": { "title": "HTTP ヘッダーキー", "description": "ヘッダーフィールドキー。長さは 1 ~ 40 文字です。英字 a-z、数字、ハイフン (-)、アンダースコア (_) をサポートします。Cookie と Host はサポートしません。", "type": "string", "example": "Port" }, "Values": { "title": "HTTP ヘッダー値のリスト", "description": "ヘッダーフィールド値。", "type": "array", "items": { "description": "ヘッダーフィールド値。長さは 1 ~ 128 文字です。ASCII 値の範囲 `ch >= 32 && ch < 127` 内の印刷可能な文字、小文字、アスタリスク (*)、疑問符 (?) をサポートします。先頭と末尾はスペースにできません。", "type": "string", "example": "5006" } } } }, "HostConfig": { "title": "ホスト名条件設定", "description": "ホスト設定。", "type": "object", "properties": { "Values": { "title": "ホスト名のリスト", "description": "ホスト名。", "type": "array", "items": { "description": "ホスト名。命名規則:\n\n- ドメイン名の長さは 3 ~ 128 文字で、小文字の a-z、数字、ハイフン (-)、ピリオド (.)、アスタリスク (*)、疑問符 (?) をサポートします。\n\n- ドメイン名は少なくとも 1 つのピリオド (.) を含み、ピリオド (.) は先頭または末尾に表示できません。\n\n- 右端のドメインラベルには文字、アスタリスク (*)、疑問符 (?) のみを含めることができ、数字やハイフン (-) を含めることはできません。\n\n- ハイフン (-) は他のドメインラベルの先頭または末尾に表示できません。アスタリスク (*) と疑問符 (?) はドメインラベルのどこにでも表示できます。", "type": "string", "example": "www.example.com" } } } }, "MethodConfig": { "title": "HTTP リクエストメソッド条件設定", "description": "リクエストメソッド設定。", "type": "object", "properties": { "Values": { "title": "HTTP リクエストメソッドのリスト", "description": "リクエストメソッド。", "type": "array", "items": { "description": "リクエストメソッド。\n\n有効値:**HEAD**、**GET**、**POST**、**OPTIONS**、**PUT**、**PATCH**、または **DELETE**。", "type": "string", "example": "PUT" } } } }, "PathConfig": { "title": "パス条件設定", "description": "転送パス設定。", "type": "object", "properties": { "Values": { "title": "パス条件のリスト", "description": "転送パス。", "type": "array", "items": { "description": "転送パス。長さは 1 ~ 128 文字で、スラッシュ (/) で始まり、文字、数字、アスタリスク (*)、疑問符 (?)、および `$-_.+/&~@:` をサポートします。`“%#;!()[]^,”` はサポートしません。", "type": "string", "example": "/test" } } } }, "QueryStringConfig": { "title": "クエリ文字列条件設定", "description": "クエリ文字列設定。", "type": "object", "properties": { "Values": { "title": "クエリ文字列条件キーと値のペアのリスト", "description": "クエリ文字列。", "type": "array", "items": { "description": "クエリ文字列。", "type": "object", "properties": { "Key": { "title": "クエリ文字列条件キー", "description": "クエリ文字列キー。長さは 1 ~ 100 文字で、小文字、可視文字、アスタリスク (*)、疑問符 (?) をサポートします。スペースと `#[]{}\\|<>&` はサポートしません。", "type": "string", "example": "test" }, "Value": { "title": "クエリ文字列条件値", "description": "クエリ文字列値。長さは 1 ~ 128 文字で、小文字、可視文字、アスタリスク (*)、疑問符 (?) をサポートします。スペースと `#[]{}\\|<>&` はサポートしません。", "type": "string", "example": "test" } } } } } }, "SourceIpConfig": { "title": "ソース IP サービストラフィックマッチング", "description": "ソース IP サービストラフィックに基づくマッチング。", "type": "object", "properties": { "Values": { "title": "マッチするソース IP のリスト", "description": "マッチするソース IP のリスト。", "type": "array", "items": { "description": "1 つ以上の IP アドレスまたは IP アドレス範囲を追加します。\n\n単一の転送ルールは最大 5 つのソース IP の追加をサポートします。", "type": "string", "example": "192.168.XX.XX/32" } } } }, "ResponseStatusCodeConfig": { "title": "リターンステータスコード条件", "description": "応答ステータスコード設定。", "type": "object", "properties": { "Values": { "title": "リターンステータスコード条件のリスト", "description": "応答ステータスコードのリスト。", "type": "array", "items": { "description": "応答ステータスコード。", "type": "string", "example": "200" } } } }, "ResponseHeaderConfig": { "title": "リターン HTTP ヘッダー", "description": "応答 HTTP ヘッダー設定。", "type": "object", "properties": { "Key": { "title": "リターン HTTP ヘッダーキー", "description": "応答 HTTP ヘッダーキー。長さは 1 ~ 40 文字です。英字 a-z、数字、ハイフン (-)、アンダースコア (_) をサポートします。Cookie と Host はサポートしません。", "type": "string", "example": "key" }, "Values": { "title": "リターン HTTP ヘッダー値", "description": "応答 HTTP ヘッダー値のリスト。", "type": "array", "items": { "description": "応答 HTTP ヘッダー値。長さは 1 ~ 128 文字です。", "type": "string", "example": "value" } } } }, "Type": { "title": "条件タイプ", "description": "転送ルールタイプ。有効値:\n\n- **Host**:ホスト。\n\n- **Path**:パス。\n\n- **Header**:HTTP ヘッダーフィールド。\n\n- **QueryString**:クエリ文字列。\n\n- **Method**:リクエストメソッド。\n\n- **Cookie**:Cookie。\n\n- **SourceIp**:ソース IP。", "type": "string", "example": "Host" } }, "required": true } }, "RuleId": { "title": "転送ルール ID", "description": "転送ルール ID。", "type": "string", "example": "rule-bpn0kn908w4nbw****" }, "RuleName": { "title": "転送ルール名", "description": "転送ルール名。長さは 2 ~ 128 文字の英字または漢字です。大文字または小文字の英字または漢字で始まり、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。", "type": "string", "example": "rule-instance-test" }, "RuleStatus": { "title": "転送ルールステータス", "description": "転送ルールステータス。有効値:\n\n- **Provisioning**:作成中。\n\n- **Configuring**:変更中。\n\n- **Available**:実行中。", "type": "string", "example": "Available" }, "Direction": { "title": "転送ルールの方向", "description": "転送ルールの方向。有効値:\n\n* Request (デフォルト):リクエストタイプ。クライアントから ALB に送信されたメッセージの条件に一致し、対応するアクションを実行します。\n\n* Response:応答タイプ。バックエンドサーバーグループから ALB に返されたメッセージの条件に一致し、対応するアクションを実行します。\n\n> Basic Edition ALB インスタンスは Response タイプをサポートしていません。", "type": "string", "example": "Request" }, "Tags": { "description": "タグ。", "type": "array", "items": { "description": "タグの構造。", "type": "object", "properties": { "Key": { "description": "タグキー。最大 128 文字で、aliyun または acs: で始めることはできません。http:// または https:// を含めることはできません。", "type": "string", "example": "env" }, "Value": { "description": "タグ値。最大 128 文字で、aliyun または acs: で始めることはできません。http:// または https:// を含めることはできません。", "type": "string", "example": "product" } } } } } } }, "TotalCount": { "title": "このリクエストの条件下のデータ総量。", "description": "このリクエストの条件に基づいて返されるデータレコードの総数。", "type": "integer", "format": "int32", "example": "1000" } } } } }, "errorCodes": { "403": [ { "errorCode": "Forbidden.LoadBalancer", "errorMessage": "Authentication is failed for %s." } ] }, "responseDemo": "[{\"type\":\"json\",\"example\":\"{\\n \\\"MaxResults\\\": 50,\\n \\\"NextToken\\\": \\\"FFmyTO70tTpLG6I3FmYAXGKPd****\\\",\\n \\\"RequestId\\\": \\\"CEF72CEB-54B6-4AE8-B225-F876F******\\\",\\n \\\"Rules\\\": [\\n {\\n \\\"Listener\\\": \\\"lsn-i35udpz3pxsmnf****\\\",\\n \\\"LoadBalancerId\\\": \\\"alb-x30o38azsuj0sx****\\\",\\n \\\"Priority\\\": 1,\\n \\\"RuleActions\\\": [\\n {\\n \\\"FixedResponseConfig\\\": {\\n \\\"Content\\\": \\\"dssacav\\\",\\n \\\"ContentType\\\": \\\"text/plain\\\",\\n \\\"HttpCode\\\": \\\"HTTP_2xx\\\"\\n },\\n \\\"ForwardGroupConfig\\\": {\\n \\\"ServerGroupTuples\\\": [\\n {\\n \\\"ServerGroupId\\\": \\\"sgp-atstuj3rtoptyui****\\\",\\n \\\"Weight\\\": 2\\n }\\n ],\\n \\\"ServerGroupStickySession\\\": {\\n \\\"Enabled\\\": true,\\n \\\"Timeout\\\": 100\\n }\\n },\\n \\\"InsertHeaderConfig\\\": {\\n \\\"Key\\\": \\\"key\\\",\\n \\\"Value\\\": \\\"ClientSrcPort\\\",\\n \\\"ValueType\\\": \\\"SystemDefined\\\"\\n },\\n \\\"Order\\\": 1,\\n \\\"RedirectConfig\\\": {\\n \\\"Host\\\": \\\"www.example.com\\\",\\n \\\"HttpCode\\\": \\\"301\\\",\\n \\\"Path\\\": \\\"/test\\\",\\n \\\"Port\\\": \\\"10\\\",\\n \\\"Protocol\\\": \\\"HTTP\\\",\\n \\\"Query\\\": \\\"quert\\\"\\n },\\n \\\"RemoveHeaderConfig\\\": {\\n \\\"Key\\\": \\\"key\\\"\\n },\\n \\\"RewriteConfig\\\": {\\n \\\"Host\\\": \\\"www.example.com\\\",\\n \\\"Path\\\": \\\"/tsdf\\\",\\n \\\"Query\\\": \\\"quedsa\\\"\\n },\\n \\\"TrafficMirrorConfig\\\": {\\n \\\"TargetType\\\": \\\"ForwardGroupMirror\\\",\\n \\\"MirrorGroupConfig\\\": {\\n \\\"ServerGroupTuples\\\": [\\n {\\n \\\"ServerGroupId\\\": \\\"sgp-00mkgijak0w4qgz9****\\\",\\n \\\"Weight\\\": 2\\n }\\n ]\\n }\\n },\\n \\\"TrafficLimitConfig\\\": {\\n \\\"QPS\\\": 4,\\n \\\"PerIpQps\\\": 80\\n },\\n \\\"Type\\\": \\\"ForwardGroup\\\",\\n \\\"CorsConfig\\\": {\\n \\\"AllowOrigin\\\": [\\n \\\"http://test.com\\\"\\n ],\\n \\\"AllowMethods\\\": [\\n \\\"GET\\\"\\n ],\\n \\\"AllowHeaders\\\": [\\n \\\"test_123\\\"\\n ],\\n \\\"ExposeHeaders\\\": [\\n \\\"test_123\\\"\\n ],\\n \\\"AllowCredentials\\\": \\\"on\\\",\\n \\\"MaxAge\\\": 1000\\n }\\n }\\n ],\\n \\\"RuleConditions\\\": [\\n {\\n \\\"CookieConfig\\\": {\\n \\\"Values\\\": [\\n {\\n \\\"Key\\\": \\\"test\\\",\\n \\\"Value\\\": \\\"test\\\"\\n }\\n ]\\n },\\n \\\"HeaderConfig\\\": {\\n \\\"Key\\\": \\\"Port\\\",\\n \\\"Values\\\": [\\n \\\"5006\\\"\\n ]\\n },\\n \\\"HostConfig\\\": {\\n \\\"Values\\\": [\\n \\\"www.example.com\\\"\\n ]\\n },\\n \\\"MethodConfig\\\": {\\n \\\"Values\\\": [\\n \\\"PUT\\\"\\n ]\\n },\\n \\\"PathConfig\\\": {\\n \\\"Values\\\": [\\n \\\"/test\\\"\\n ]\\n },\\n \\\"QueryStringConfig\\\": {\\n \\\"Values\\\": [\\n {\\n \\\"Key\\\": \\\"test\\\",\\n \\\"Value\\\": \\\"test\\\"\\n }\\n ]\\n },\\n \\\"SourceIpConfig\\\": {\\n \\\"Values\\\": [\\n \\\"192.168.XX.XX/32\\\"\\n ]\\n },\\n \\\"ResponseStatusCodeConfig\\\": {\\n \\\"Values\\\": [\\n \\\"200\\\"\\n ]\\n },\\n \\\"ResponseHeaderConfig\\\": {\\n \\\"Key\\\": \\\"key\\\",\\n \\\"Values\\\": [\\n \\\"value\\\"\\n ]\\n },\\n \\\"Type\\\": \\\"Host\\\"\\n }\\n ],\\n \\\"RuleId\\\": \\\"rule-bpn0kn908w4nbw****\\\",\\n \\\"RuleName\\\": \\\"rule-instance-test\\\",\\n \\\"RuleStatus\\\": \\\"Available\\\",\\n \\\"Direction\\\": \\\"Request\\\",\\n \\\"Tags\\\": [\\n {\\n \\\"Key\\\": \\\"env\\\",\\n \\\"Value\\\": \\\"product\\\"\\n }\\n ]\\n }\\n ],\\n \\\"TotalCount\\\": 1000\\n}\",\"errorExample\":\"\"},{\"type\":\"xml\",\"example\":\"<ListRulesResponse>\\n <MaxResults>50</MaxResults>\\n <NextToken>FFmyTO70tTpLG6I3FmYAXGKPd****</NextToken>\\n <RequestId>CEF72CEB-54B6-4AE8-B225-F876FF7BA984</RequestId>\\n <Rules>\\n <ListenerId>lsn-i35udpz3pxsmnf****</ListenerId>\\n <LoadBalancerId>alb-x30o38azsuj0sx****</LoadBalancerId>\\n <Priority>1</Priority>\\n <RuleActions>\\n <FixedResponseConfig>\\n <Content>dssacav</Content>\\n <ContentType>text/plain</ContentType>\\n <HttpCode>HTTP_2xx</HttpCode>\\n </FixedResponseConfig>\\n <ForwardGroupConfig>\\n <ServerGroupTuples>\\n <ServerGroupId>sg-atstuj3rtoptyui****</ServerGroupId>\\n <Weight>2</Weight>\\n </ServerGroupTuples>\\n </ForwardGroupConfig>\\n <InsertHeaderConfig>\\n <Key>key</Key>\\n <Value>ClientSrcPort</Value>\\n <ValueType>SystemDefined</ValueType>\\n </InsertHeaderConfig>\\n <Order>1</Order>\\n <RedirectConfig>\\n <Host>www.example.com</Host>\\n <HttpCode>301</HttpCode>\\n <Path>/test</Path>\\n <Port>10</Port>\\n <Protocol>HTTP</Protocol>\\n <Query>quert</Query>\\n </RedirectConfig>\\n <RewriteConfig>\\n <Host>www.example.com</Host>\\n <Path>/tsdf</Path>\\n <Query>quedsa</Query>\\n </RewriteConfig>\\n <TrafficMirrorConfig>\\n <MirrorGroupConfig>\\n <ServerGroupTuples>\\n <ServerGroupId>srg-00mkgijak0w4qgz9****</ServerGroupId>\\n <Weight>2</Weight>\\n </ServerGroupTuples>\\n </MirrorGroupConfig>\\n </TrafficMirrorConfig>\\n <TrafficLimitConfig>\\n <QPS>4</QPS>\\n <PerIpQps>80</PerIpQps>\\n </TrafficLimitConfig>\\n <Type>ForwardGroup</Type>\\n <CorsConfig>\\n <AllowOrigin>http://test.com</AllowOrigin>\\n <AllowMethods>GET</AllowMethods>\\n <AllowHeaders>test_123</AllowHeaders>\\n <ExposeHeaders>test_123</ExposeHeaders>\\n <AllowCredentials>on</AllowCredentials>\\n <MaxAge>1000</MaxAge>\\n </CorsConfig>\\n </RuleActions>\\n <RuleConditions>\\n <CookieConfig>\\n <Values>\\n <Key>test</Key>\\n <Value>test</Value>\\n </Values>\\n </CookieConfig>\\n <HeaderConfig>\\n <Key>Port</Key>\\n <Values>5006</Values>\\n </HeaderConfig>\\n <HostConfig>\\n <Values>www.example.com</Values>\\n </HostConfig>\\n <MethodConfig>\\n <Values>PUT</Values>\\n </MethodConfig>\\n <PathConfig>\\n <Values>/test</Values>\\n </PathConfig>\\n <QueryStringConfig>\\n <Values>\\n <Key>test</Key>\\n <Value>test</Value>\\n </Values>\\n </QueryStringConfig>\\n <SourceIpConfig>\\n <Values>192.168.XX.XX/32</Values>\\n </SourceIpConfig>\\n <Type>Host</Type>\\n </RuleConditions>\\n <RuleId>rule-bpn0kn908w4nbw****</RuleId>\\n <RuleName>rule-instance-test</RuleName>\\n <RuleStatus>Available</RuleStatus>\\n </Rules>\\n <TotalCount>1000</TotalCount>\\n</ListRulesResponse>\",\"errorExample\":\"\"}]", "title": "転送ルールの照会" } }, "endpoints": [ { "regionId": "cn-wulanchabu", "endpoint": "alb.cn-wulanchabu.aliyuncs.com" } ] } -
送信認証:前のステップで作成した AccessKey 認証情報を選択します。
-
Function Compute
この例では、数学計算 Web 関数を統合します。
Function Compute サービスを追加する前に、Function Compute コンソールで Web 関数を作成してデプロイする必要があります:
-
関数を作成 をクリックします。 「関数タイプ」には Web 関数 を選択します。 関数名 を入力します。 「ランタイム環境」には カスタム実行時 > Python > Python 3.10 (Debian 11) を選択します。 コードのアップロード方法 には サンプルコードの使用 を選択します。 起動コマンド には コマンドモード を選択し、
python app.pyと入力します。 作成 をクリックします。 -
WebIDE で、サンプルコードを次の数学計算サービスコードに置き換えます。ファイル名を
app.pyに変更して保存し、デプロイメントコード をクリックします。 -
インターフェイスの右側で、ARN をコピーする をクリックします。これは後でサービスを追加するときに必要になります。
数学計算を提供する Web 関数のサンプルコード
from http.server import HTTPServer, BaseHTTPRequestHandler
import urllib
import json
class MathHandler(BaseHTTPRequestHandler):
def do_GET(self):
"""GET リクエストを処理します: /?a=10&b=5&op=add"""
params = urllib.parse.parse_qs(urllib.parse.urlparse(self.path).query)
try:
a = float(params.get('a', [0])[0])
b = float(params.get('b', [0])[0])
op = params.get('op', ['add'])[0]
# 計算を実行
if op == 'add':
result = a + b
elif op == 'sub':
result = a - b
elif op == 'mul':
result = a * b
elif op == 'div':
result = a / b
else:
raise ValueError(f"サポートされていない操作: {op}")
response = {'result': result, 'message': f'{a} {op} {b} = {result}'}
self.send_response(200)
except (ValueError, ZeroDivisionError) as e:
response = {'error': str(e)}
self.send_response(400)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps(response).encode())
if __name__ == "__main__":
server = HTTPServer(('0.0.0.0', 9000), MathHandler)
print("Server running on http://localhost:9000")
server.serve_forever()準備が完了したら、MCP サーバーグループに戻り、MCP サービスを追加 をクリックし、次の設定を完了して、OK をクリックします。
-
サービス名:LLM が理解しやすい名前を入力します。このトピックでは、数学計算サービスを表す
math-calculatorを使用します。 -
サービスタイプ: Function Compute を選択します。
-
Function Compute ARN:コピーした関数の ARN を入力します。
-
OpenAPI 設定:次の OpenAPI 設定ファイルを貼り付けるか、インポートします。
-
送信認証:RAM ロール を選択します。
上記の関数の OpenAPI 設定
{
"openapi": "3.1.0",
"info": {
"title": "Math Calculator API",
"version": "1.0.0",
"description": "加算、減算、乗算、除算をサポートする数学計算機"
},
"paths": {
"/": {
"get": {
"summary": "数学計算",
"description": "基本的な数学演算 (加算、減算、乗算、除算) を実行します",
"operationId": "calculate",
"parameters": [
{
"name": "op",
"in": "query",
"required": true,
"description": "操作タイプ: add=加算, sub=減算, mul=乗算, div=除算",
"schema": {
"type": "string",
"enum": ["add", "sub", "mul", "div"]
}
},
{
"name": "a",
"in": "query",
"required": true,
"description": "最初のオペランド",
"schema": {
"type": "number"
}
},
{
"name": "b",
"in": "query",
"required": true,
"description": "2 番目のオペランド",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"description": "計算成功",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"result": {
"type": "number",
"description": "計算結果"
},
"message": {
"type": "string",
"description": "計算の説明"
}
}
}
}
}
}
}
}
}
}
}3. リスナーの作成
-
ALB コンソールで、ターゲットインスタンス ID をクリックして インスタンスの詳細 ページを開きます。リスナー タブで、リスナーの作成 をクリックします。
-
リスナーの設定 ステップで、リスナープロトコルの選択 を [HTTPS] に、リスニングポート を
443に設定します。次に、次へ をクリックします。 -
SSL 証明書の設定 ステップで、カスタムドメイン名に一致するサーバー証明書を選択し、次へ をクリックします。
-
サーバーグループの選択 ステップで、サーバタイプ とサーバーグループ
sgp-defaultを選択し、次へ をクリックします。ここで選択したサーバーグループは、リスナーのデフォルトルールに使用されます。このルールは、他のどの転送ルールにも一致しないリクエストを処理します。このトピックでは、すべての MCP リクエストは転送ルールによって正確に照合されるため、このルールでは処理されません。
-
設定の確認 ステップで、設定を確認し、送信 をクリックします。
4. 転送ルールの設定
リクエストは、優先度の昇順で転送ルールと照合されます。リクエストがルールに一致すると、その転送アクションが実行され、それ以上のルールは照合されません。条件を パス に設定した転送ルールを作成して、MCP 関連のリクエストを MCP サーバーグループにルーティングします。
-
インスタンスの リスナー タブで、ターゲットリスナー ID をクリックします。リスナーの詳細 ページで、転送ルール タブをクリックします。
-
新しいルールの追加 をクリックし、次の設定を完了して、OK をクリックします。
-
転送条件:パス を選択し、照合方法を 完全一致 に設定し、
/mcpと入力します。 -
サービス拡張 (オプション):テンプレートから作成 を選択し、MCP 認証プロキシ を選択して 作成 をクリックします。拡張名 を入力し、セマンティック検索を有効にする を選択して 作成 をクリックします。このテンプレートは自動的に API Key 認証 コンポーネントを追加し、認証情報を生成します。
-
転送操作:転送先 を
sgp-mcpサーバーグループに設定します。
-
-
転送ルールリストで、新しく作成したサービス拡張の ID をクリックして詳細ページを開きます。ページの下部で、API Key 認証 コンポーネントを展開します。認証情報 フィールドで、API キーを取得します。これは後で検証テストに必要になります。
5. ドメイン名の名前解決の設定
CNAME レコードを使用して、カスタムドメイン名を ALB インスタンスの DNS 名にポイントします。これにより、クライアントはカスタムドメイン名を通じて ALB にアクセスできるようになります。
このトピックでは、Alibaba Cloud DNS を例に説明します。Alibaba Cloud に登録されていないドメイン名の場合は、まず クラウド DNS コンソールにドメイン名を追加する必要があります。
-
ALB コンソールで、ターゲットインスタンスのドメイン名をコピーします。
-
ドメイン名解決コンソールにログオンします。対象のドメインのActions 列で、解決設定 をクリックします。解決設定 ページで、Add Record をクリックします。
-
次の情報で CNAME レコードを追加し、OK をクリックします。
-
Record Type:[CNAME] を選択します。
-
Hostname:
mcpなどのドメインプレフィックスを入力します。ルートドメインがexample.comの場合、ALB にアクセスするためのドメインはmcp.example.comになります。 -
Query Sourceと TTL は、デフォルト値のままにします。
-
Record Value:ALB インスタンスの DNS 名を入力します。
-
-
Change Resource Record Confirmation ダイアログボックスで、解決情報を確認し、OK をクリックします。
6. 検証とテスト
上記の設定が完了したら、次のいずれかの方法で MCP サービスが正しく実行されていることを確認できます。
MCP Inspector のデバッグ
-
Node.js 環境をインストールし、次のコマンドを実行して MCP Inspector を起動します。
npx @modelcontextprotocol/inspector -
[Transport Type] を [Streamable HTTP] に切り替えます。[URL] フィールドに、ALB の MCP サービスエンドポイント (例:
https://mcp.example.com/mcp) を入力します。[Authentication] を展開し、[Custom Headers] にヘッダーを追加します。名前をAuthorization、値をBearer <API キー認証情報>(ステップ 4 で取得した認証情報) に設定します。ヘッダーのスイッチを有効にします。[Connect] をクリックします。[Connected] ステータスは接続が成功したことを示します。 -
[List Tools] をクリックして、現在マウントされているすべてのツールのリストを取得します。各サービスタイプを個別に検証します。
-
MCP サーバ タイプ:
temperature-converter::celsius_to_fahrenheitツールを選択できます。celsiusに22を入力し、[Run Tool] をクリックします。結果は華氏 71.6 度です。 -
Function Compute タイプ:数学計算ツール
math-calculator::calculateを選択します。opをadd、aを10、bを5に選択します。[Run Tool] をクリックして、計算結果 15 を取得します。 -
REST API タイプ:ALB 管理ツール
alb-operator::ListLoadBalancersを選択し、[Run Tool] をクリックして、宛先アカウントの ALB インスタンスのリストを取得します。 -
セマンティック検索:
x-aliyun-alb-searchツールを選択して、MCP プロキシコンポーネントの組み込みセマンティック検索機能を使用して、一致するツールを検索します。たとえば、queryにquery load balancer information、topkに2と入力します。これにより、最も一致する 2 つのツールが返され、ツールリスト全体をロードする必要がなくなり、LLM トークンの消費が節約されます。
-
エージェントテスト
次の例では、LangChain に基づいてエージェントを構築します。MCP プロキシコンポーネントのセマンティック検索機能を使用して、ツールを動的に取得して呼び出します。
-
Python (バージョン 3.10 以降) と依存関係をインストールします。
pip install "langchain>=1.2.4" "langchain-community>=0.4.1" "langchain-mcp-adapters>=0.2.1" "langchain-openai>=1.0.1" "langgraph>=1.0.1" -
次のコードを
agent.pyとして保存します。# -*- coding: utf-8 -*- import asyncio import os import httpx from langchain.agents import create_agent from langchain_openai import ChatOpenAI from mcp import ClientSession from mcp.client.streamable_http import streamable_http_client from mcp.types import Tool from langchain_mcp_adapters.tools import convert_mcp_tool_to_langchain_tool async def search_alb_tools(session: ClientSession, query: str, topk: int = 3) -> list: """MCP プロトコル経由で関連ツールを検索します。""" result = await session.call_tool( "x-aliyun-alb-search", {"query": query, "topk": topk} ) payload = result.structuredContent or {} allowed_fields = {"name", "title", "description", "inputSchema"} mcp_tools = [ Tool(**{k: v for k, v in t.items() if k in allowed_fields and v}) for t in payload.get("tools", []) ] return [convert_mcp_tool_to_langchain_tool(session, t) for t in mcp_tools] class AlbChatAgent: def __init__(self, session: ClientSession, llm: ChatOpenAI): self.session = session self.llm = llm async def chat(self, user_query: str) -> None: print(f"\nUser: {user_query}") tools = await search_alb_tools(self.session, user_query) system_prompt = ( "あなたは専門家のアシスタントです。提供された ALB ツールのみを使用して質問に答えてください。" "ツールが不十分な場合は、ユーザーに明確に伝えてください。簡潔かつ専門的に。" ) agent = create_agent( model=self.llm, tools=tools, system_prompt=system_prompt ) try: response = await agent.ainvoke( {"messages": [{"role": "user", "content": user_query}]}, ) print(f"Assistant: {response['messages'][-1].content}") except Exception as e: print(f"Error: {type(e).__name__}: {str(e)}") async def main(): mcp_url = os.getenv("MCP_URL") mcp_api_key = os.getenv("MCP_API_KEY") qwen_api_key = os.getenv("QWEN_API_KEY") if not mcp_url: raise EnvironmentError("環境変数が設定されていません: MCP_URL") if not mcp_api_key: raise EnvironmentError("環境変数が設定されていません: MCP_API_KEY") if not qwen_api_key: raise EnvironmentError("環境変数が設定されていません: QWEN_API_KEY") async with httpx.AsyncClient( headers={"Authorization": f"Bearer {mcp_api_key}"}, timeout=httpx.Timeout(60, read=300), ) as http_client: async with streamable_http_client( mcp_url, http_client=http_client, ) as (reader, writer, _): async with ClientSession(reader, writer) as session: await session.initialize() llm = ChatOpenAI( model="qwen-plus", api_key=qwen_api_key, base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" ) agent = AlbChatAgent(session, llm) while True: try: query = input("\n>>> ").strip() if query: await agent.chat(query) except (KeyboardInterrupt, EOFError): break if __name__ == "__main__": asyncio.run(main()) -
次の環境変数を設定し、スクリプトを実行します。
-
MCP_URL:ALB インスタンスの MCP サービスエンドポイント。このトピックでは、https://mcp.example.com/mcpです。 -
MCP_API_KEY:ステップ 4 で生成された API キー認証情報。 -
QWEN_API_KEY:Alibaba Cloud Model Studio を有効にした後、Model Studio コンソールから API キーを取得します。
Linux/macOS
export MCP_URL=https://mcp.example.com/mcp export MCP_API_KEY=your_api_key export QWEN_API_KEY=sk-xxx python agent.pyWindows
$env:MCP_URL="https://mcp.example.com/mcp" $env:MCP_API_KEY="your_api_key" $env:QWEN_API_KEY="sk-xxx" python agent.py -
-
スクリプトが実行されたら、自然言語で質問を入力します。エージェントは
x-aliyun-alb-searchを使用して一致するツールを取得して呼び出します。>>> 摂氏 22 度を華氏に変換してください ユーザー: 摂氏 22 度を華氏に変換してください アシスタント: 摂氏 22 度は華氏 71.6 度です。 >>> 22 * 33 を計算してください ユーザー: 22 * 33 を計算してください アシスタント: 22 × 33 = 726 >>> 現在の ALB インスタンスをリストアップしてください ユーザー: 現在の ALB インスタンスをリストアップしてください アシスタント: 現在 2 つの ALB インスタンスがあります。詳細は次のとおりです。 | インスタンス ID | 名前 | アドレスタイプ | ステータス | |--------|------|----------|------| | alb-xxxx1 | my-alb-1 | Internet | Active | | alb-xxxx2 | my-alb-2 | Intranet | Active |
関連情報
課金
-
ALB Enhanced Edition は現在 パブリックプレビュー 中で、無料で利用できます。
-
ドメイン名と DNS 解決料金:プロバイダーからのドメイン名料金に加えて、Alibaba Cloud で DNS 解決を設定すると パブリック権威解決料金が発生します。
-
証明書料金:Alibaba Cloud から証明書を購入するか、Alibaba Cloud に証明書をアップロードすると サーバー証明書料金が発生します。
-
Function Compute 料金:料金は Function Compute によって課金されます。
-
Model Studio モデル料金:Model Studio API を呼び出すと モデル料金が発生します。
ALB Enhanced Edition をサポートするリージョン
|
エリア |
リージョン |
ゾーン |
|
中国 |
中国 (ウランチャブ) |
ゾーン A、ゾーン B、ゾーン C |
|
中国 (杭州) |
ゾーン J、ゾーン K |
|
|
中国 (北京) |
ゾーン I、ゾーン K、ゾーン L |
|
|
中国 (上海) |
ゾーン B、ゾーン F |
|
|
中国 (香港) |
ゾーン B、ゾーン C、ゾーン D |
|
|
アジアパシフィック |
シンガポール |
ゾーン A、ゾーン B、ゾーン C |
|
日本 (東京) |
ゾーン B、ゾーン C、ゾーン E |
|
|
マレーシア (クアラルンプール) |
ゾーン A、ゾーン B、ゾーン C |
|
|
ヨーロッパおよびアメリカ |
ドイツ (フランクフルト) |
ゾーン A、ゾーン B |
|
米国 (シリコンバレー) |
ゾーン A、ゾーン B |
|
|
中東 |
UAE (ドバイ) |
ゾーン A、ゾーン B |
提案
-
ツールリスト取得戦略:ツールが少ない場合は、
tools/listを直接呼び出して完全なリストを取得できます。ツールが多い場合は、x-aliyun-alb-searchを使用してセマンティック検索を行い、関連ツールを見つけてトークン消費を削減することを推奨します。 -
ツール説明の最適化:OpenAPI 設定のツール説明は、セマンティック検索のマッチング精度に直接影響します。各ツールの目的を自然言語で正確に記述することを推奨します。必要に応じて、大規模言語モデル (LLM) を使用して説明テキストを最適化できます。
-
内部ネットワークドメイン名の名前解決:ALB Enhanced Edition は、パブリック DNS を通じて MCP サーバーアドレスを解決します。MCP サーバーが VPC にデプロイされている場合は、パブリック DNS でドメイン名を対応するプライベート IP アドレスに解決し、ALB インスタンスがサーバーにアクセスできることを確認する必要があります。
-
セキュリティ:クライアントコードに API キーをハードコーディングすることは避けてください。環境変数またはキー管理サービスを使用して管理することを推奨します。
よくある質問
MCP サーバー接続がタイムアウトし、「upstream connect error」または「connection timeout」と報告される
-
ALB インスタンスと MCP サーバー間のネットワークが到達可能であることを確認してください。
-
MCP サービスが VPC にデプロイされている場合:ALB インスタンスがプライベートネットワークを通じて MCP サービスにアクセスできることを確認してください。同じ VPC 内ではデフォルトで接続が確立されます。クロス VPC またはクロスリージョンのシナリオでは、Cloud Enterprise Network などの製品を使用してプライベートネットワークを接続する必要があります。また、セキュリティグループルールが ALB インスタンスが MCP サービスポートにアクセスすることを許可していることを確認してください。
-
MCP サービスがパブリックネットワークにデプロイされている場合:ALB インスタンスが属する vSwitch がパブリック SNAT 用に正しく設定されていることを確認してください。
-
-
パブリック DNS でドメイン名の名前解決が正しく設定されていることを確認してください。
-
MCP サーバープロセスが起動し、期待されるポートでリッスンしていることを確認してください。
セマンティック検索が期待されるツールを返さない
-
ツールの説明が十分に正確であるかどうかを確認してください。セマンティック検索は、説明とクエリ間のセマンティックな類似性に依存します。
-
topkパラメーターの値を増やして、より多くの候補ツールを返すようにしてください。
Function Compute タイプのサービスが追加後に呼び出せない
-
OpenAPI 設定ファイルの形式が正しく、API パスとパラメーターが関数の実際の動作と一致していることを確認してください。
-
コードが Function Compute サービスに正常にデプロイされていることを確認してください。