この方法では、MaxCompute のユーザー定義関数 (UDF)、Spark、MapReduce (MR)、PyODPS、または Mars を使用して、パブリック IP アドレスまたはドメイン名にアクセスできます。
適用範囲
サポートされているトップレベルドメイン名:aliyun.com、amap.com、dingtalk.com、alicloudapi.com、cainiao.com、alicdn.com、taobao.com、alibaba.com、alipaydev.com、alibabadns.com。
IPv6 アドレスは設定できません。パブリック IP アドレスの数に制限はありません。
外部ネットワークアドレスが自動検証に失敗した場合は、アドレスを削除して再送信してください。アドレスが引き続き必要な場合は、リクエストフォームを送信して外部ネットワークアドレスを設定できます。詳細については、「ネットワークアクティベーションプロセス」をご参照ください。
操作手順
ステップ 1:アカウントとプロジェクトの準備
MaxCompute とターゲットサービス間のネットワーク接続を有効にする前に、次の条件が満たされていることを確認してください。
MaxCompute プロジェクトを作成します。データレイクハウスのシナリオでは、MaxCompute プロジェクトのデータ型を Hive 互換タイプに設定します。
VPC 内のターゲットサービスにアクセスするには、VPC オーナーアカウント、MaxCompute プロジェクトへのアクセスに使用する Alibaba Cloud アカウント、およびターゲットサービス環境またはクラスターの管理者アカウントが同じルートアカウントに属していることを確認してください。
ステップ 2:プロジェクト管理での外部ネットワークアドレスの編集
aliyun.com などの頻繁に使用されるパブリック IP アドレスまたはドメイン名については、MaxCompute コンソールの プロジェクト管理 セクションで直接追加および削除できます。
MaxCompute コンソールにログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
プロジェクト管理 ページで、目的のプロジェクトを見つけ、操作 列の 管理 をクリックします。
プロジェクト設定 ページで、パラメーター設定 タブを選択できます。
[MaxCompute外部ネットワーク]セクションで、[編集]をクリックします。
MaxCompute がアクセスを許可する外部ネットワークアドレスを設定します。
提出 をクリックします。
自動検証に失敗したパブリック IP アドレスまたはドメイン名については、次の手順を実行します:
リクエストフォームを送信して、パブリック IP アドレスまたはドメイン名とポートをホワイトリストに追加します。
MaxCompute テクニカルサポートチームがリクエストを受信した後、レビューを行い、設定を完了します。リクエストは通常 3 営業日以内に処理されます。リクエストが処理された後、後続のステップに進むことができます。レビュー結果に異議がある場合は、チケットを送信できます。
ステップ 3:パブリックネットワークアドレスへのアクセス
SQL UDF、Spark、または MaxFrame ジョブを使用してパブリックネットワークにアクセスする場合は、次の設定を追加します。
他の種類のジョブについては、ジョブの種類に基づいて設定情報を調整してください。
SQL ユーザー定義関数 (UDF) ジョブ
パラメーターは次のように設定されます。
-- ネットワーク接続リクエストフォームで設定したパブリック IP アドレスまたはドメイン名とポートを設定します。これは、次の SQL 文がアクセスするパブリック IP アドレスまたはドメイン名です。 -- 複数のドメイン名またはポートにアクセスするには、カンマ (,) で区切ります。 SET odps.internet.access.list=<ip_address:port|realm_name:port>; -- SQL 文を実行して UDF を呼び出します。 SELECT <UDF_name>("<http://ip_address|realm_name>");ip_address:port | domain_name:port:必須。ターゲットのパブリック IP アドレスまたはドメイン名とポート。
UDF_name:パブリック IP アドレスまたはドメイン名へのアクセスに使用される UDF の名前。
次のコードはジョブの例です。
package com.aliyun.odps.test.udf; import com.aliyun.odps.udf.UDF; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class <UDF_name> extends UDF { public String evaluate(String urlStr) throws IOException { URL url = new URL(urlStr); StringBuilder sb = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) { String line; while ((line = reader.readLine()) != null) { sb.append(line).append('\n'); } } return sb.toString(); } }実行:サンプルコードに基づいて作成された UDF の名前が
url_fetchであると仮定します。ネットワーク接続リクエストが承認された後、次のサンプルコマンドを実行できます。SET odps.internet.access.list=www.aliyun.com:80; SELECT url_fetch("http://www.aliyun.com");
Spark on MaxCompute ジョブ
この設定項目を Spark クライアントの conf ファイル、または DataWorks で Spark ジョブを送信する際の設定項目に追加します。
spark.hadoop.odps.cupid.smartnat.enable = true;
spark.hadoop.odps.cupid.internet.access.list=<ip_address:port>MaxFrame ジョブ
パラメーターは次のように設定されます。
from maxframe import options
options.sql.settings = {
"odps.internet.access.list": "<host>:80,<host>:443",
}(任意) ステップ 4:ホワイトリストへの IP アドレスの追加
サーバー側でアクセス制御が有効になっている場合は、MaxCompute がパブリックネットワークへのアクセスに使用するエグレス IP アドレスをサービスホワイトリストに追加します。