デフォルトでは、MaxCompute Spark は Virtual Private Cloud (VPC) 内のサービスにアクセスできません。特定の IP アドレス、ドメイン名、ApsaraDB RDS、HBase クラスター、Hadoop クラスターなど、VPC 内のサービスにアクセスするには、MaxCompute と VPC 間のネットワーク接続を確立する必要があります。
制限事項
アカウントの制限
Spark ジョブを実行する MaxCompute プロジェクトとターゲット VPC は、同じ Alibaba Cloud アカウントに属している必要があります。つまり、プロジェクトを所有する Alibaba Cloud アカウントの UID が、VPC を所有するアカウントの UID と一致する必要があります。一致しない場合、ジョブは次のエラーで失敗します:
"You are not allowed to use this vpc - vpc owner and project owner must be the same person"。この手順では、単一の VPC への接続方法について説明します。ジョブが複数の VPC に同時にアクセスする必要がある場合は、専用線と Elastic Network Interface (ENI) を使用して、接続された VPC を追加の VPC にリンクできます。詳細については、Alibaba Cloud VPC のテクニカルサポートにお問い合わせください。
操作手順
詳細については、「VPC アクセスソリューション (専用線直接接続)」をご参照ください。
ステップ 1:アカウントとプロジェクトの準備
MaxCompute とターゲットサービス間のネットワーク接続を確立する前に、次の条件が満たされていることを確認してください。
MaxCompute プロジェクトの作成。データレイクハウスソリューションを使用する場合は、MaxCompute プロジェクトのデータ型エディションを Hive 互換データ型エディションに設定することを推奨します。
VPC 内のターゲットサービスにアクセスするには、VPC の所有者アカウント、MaxCompute プロジェクトへのアクセスに使用される Alibaba Cloud アカウント、およびターゲットサービス環境またはクラスターの管理者アカウントがすべて同じ Alibaba Cloud アカウントに属していることを確認してください。
ステップ 2:権限の付与
操作ユーザーにネットワーク接続オブジェクトを作成する権限を付与します。
許可されるユーザーは、Project Owner またはテナントレベルの Super_Administrator もしくは Admin ロールを持つユーザーである必要があります。詳細については、「ロール計画」をご参照ください。
権限付与手順については、「テナント内のオブジェクト権限リスト」をご参照ください。
MaxCompute への権限付与:これにより、MaxCompute はご利用の VPC に ENI を作成し、MaxCompute から VPC へのネットワーク接続を有効にできます。Alibaba Cloud アカウントにログインした状態で、権限付与 をクリックします。
ステップ 3:セキュリティグループルールの追加
VPC 接続インスタンスでは、個別のセキュリティグループを作成する必要があります。このグループは、MaxCompute から VPC 内のリソースへのアクセスを制御するために使用されます。
新しい基本セキュリティグループを作成する必要があります。他のタイプのセキュリティグループや既に使用中のセキュリティグループは使用しないでください。MaxCompute は、ご利用のサービスにアクセスするために VPC 内に ENI を作成し、自動的にこのセキュリティグループに配置します。
このセキュリティグループのアウトバウンドルールを設定して、ENI 上で実行される MaxCompute ジョブがアクセスできる宛先アドレスを制御します。特別な要件がない場合は、デフォルトのアウトバウンドルールを維持できます。
ENI に入るトラフィックは戻りトラフィックです。したがって、すべてのインバウンドトラフィックを許可する必要があります。
Virtual Private Cloud (VPC) コンソールにログインします。
左側のナビゲーションウィンドウで、VPC を選択します。左上隅でリージョンを選択します。
VPC ページで、ターゲット VPC の ID/名前 をクリックします。
VPC 詳細ページで、リソース タブをクリックします。
リソース タブの VPC リソース セクションで、セキュリティグループ の値にカーソルを合わせ、追加 をクリックします。
[セキュリティグループのタイプ] を [基本セキュリティグループ] に設定します。
基本セキュリティグループ は、デフォルトでアウトバウンドトラフィックを許可します。アドバンストセキュリティグループ は、デフォルトでアウトバウンドトラフィックを拒否するため、VPC 内のサービスへのアクセスが妨げられます。
接続サービスで使用されるものと同じ VPC [ネットワーク] を選択します。
詳細については、「セキュリティグループの作成」をご参照ください。
MaxCompute からのアクセスを許可するようにセキュリティグループルールを設定します。
ターゲットセキュリティグループの [操作] 列で、[ルールの管理] をクリックします。
[アクセスルール] エリアの [インバウンド] タブで、ターゲットルールの [アクション] 列にある [編集] をクリックします。すべての [インバウンド] トラフィックを許可するように設定を構成します。
[アクション] を [許可] に設定します。
「[優先度]」が 1 に設定されています。
[プロトコル] で、[すべてのトラフィック] を選択します。
[ソース] は、アクセスする Alibaba Cloud サービスを含む VPC または VSwitch の CIDR ブロックです。
[宛先 (現在のインスタンス)] は、デフォルトで ALL(-1/-1) になります。
詳細については、「セキュリティグループの適用ガイドと例」をご参照ください。
HBase シナリオで、HBase がセキュリティグループにネットワークアクセスを許可できない場合は、MaxCompute によって作成された ENI の IP アドレスをホワイトリストに追加できます。ENI の IP アドレスは変更される可能性があるため、VPC 接続インスタンスの vSwitch の CIDR ブロックをホワイトリストに追加することを推奨します。ECS コンソールにログインします。左側のナビゲーションウィンドウで、[Elastic Compute Service] をクリックして ENI の IP アドレスを取得します。
ネットワーク接続の作成プロセス中に、MaxCompute は帯域幅の要件に基づいて 2 つの ENI を自動的に作成します。これらの ENI は無料で、このセキュリティグループに配置されます。
ステップ 4:MaxCompute とターゲット VPC 間のネットワーク接続の作成
MaxCompute コンソールで、Alibaba Cloud アカウントまたは MaxCompute テナントレベルで Super_Administrator もしくは Admin ロールを持つ RAM ユーザーが、VPC ネットワークへの接続を作成できます。詳細については、「MaxCompute テナントレベルのロール」をご参照ください。接続を作成するには、次の手順を実行します。
MaxCompute コンソールにログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
ネットワーク接続 ページで、新しいネットワーク接続 をクリックします。
新しいネットワーク接続 ダイアログボックスで、プロンプトに従ってパラメーターを設定し、OK をクリックします。初めてネットワーク接続を追加する場合、まず 権限を付与 して、MaxCompute プラットフォームプロキシがネットワークインターフェースカードをリクエストできるようにする必要があります。そうしないと、接続を作成できません。
新しいネットワーク接続 ダイアログボックスで、プロンプトに従ってパラメーターを設定し、OK をクリックします。初めてネットワーク接続を追加する場合、まず 権限を付与 して、MaxCompute プラットフォームプロキシがネットワークインターフェースカードをリクエストできるようにする必要があります。そうしないと、接続を作成できません。
次の表にパラメーターを示します。
パラメーター
必須
説明
接続名:
必須
接続のカスタム名。名前は次の要件を満たす必要があります:
文字で始まること。
文字、アンダースコア (_)、数字のみを含むこと。
長さが 1〜63 文字であること。
タイプ:
必須
デフォルト値は パススルー接続 (パススルー) です。
パススルー接続 (パススルー) 接続は VPC 接続です。
エリア:
必須
システムは、左上隅で選択したリージョンに基づいてこのパラメーターを自動的に入力します。詳細については、「サポートされているリージョン」をご参照ください。
選択されたVPC:
必須
Virtual Private Cloud (VPC) は、分離された仮想ネットワークです。従来のデータセンターと同様に、安全で設定可能なプライベートネットワークスペースを提供します。
VPC の ID。新しい VPC を作成するには、「VPC の作成または削除」をご参照ください。
ID を取得するには:
Virtual Private Cloud (VPC) コンソールにログインします。
左側のナビゲーションウィンドウで、VPC を選択します。左上隅でリージョンを選択します。
VPC ページで、VPC の ID/名前 を取得します。
HBase または Hadoop クラスターに接続する場合、対応するコンソールのネットワーク接続詳細でこの情報を見つけることができます。
スイッチ:
必須
vSwitch はサブネットを作成するために使用されます。同じ VPC 内の異なる vSwitch は、内部ネットワークを介して相互に通信できます。異なるゾーンの vSwitch にまたがってクラウドリソースをデプロイすることで、単一ゾーンの障害からアプリケーションを保護できます。
VPC にアタッチされている vSwitch の ID。利用可能な vSwitch がない場合は、「vSwitch の作成または削除」をご参照ください。
ID を取得するには:
Virtual Private Cloud (VPC) コンソールにログインします。
左側のナビゲーションウィンドウで、vSwitch を選択します。左上隅でリージョンを選択します。
vSwitch ページで、vSwitch の ID/名前 を取得します。
HBase または Hadoop クラスターに接続する場合、対応するコンソールのネットワーク接続詳細でこの情報を見つけることができます。
セキュリティグループ:
必須
セキュリティグループは、クラウドリソースの仮想ファイアウォールとして機能します。セキュリティグループとそのルールを管理することで、詳細なネットワーク分離とアクセス制御を実装できます。
セキュリティグループの ID。セキュリティグループを作成するには、「セキュリティグループの作成」をご参照ください。
ステップ 5:ジョブの設定
専用線ネットワーク接続 を設定した後、Spark が VPC にアクセスできるように、次の設定項目を spark-defaults.conf ファイルまたは DataWorks の構成に追加します。
spark.hadoop.odps.cupid.eni.enable = true
# フォーマット:region:vpcid。vpcid を専用線設定時に使用したターゲット VPC ID に置き換えます。
spark.hadoop.odps.cupid.eni.info = regionid:vpc-**********
# 例:cn-hangzhou:vpc-bp1wth********04ug3s