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

Tablestore:クロスアカウント認証

最終更新日:Dec 28, 2024

このトピックでは、Alibaba Cloudアカウント間でTablestoreとMaxCompute間のシームレスな接続を確立する方法について説明します。

前提条件

Tablestore用のAlibaba CloudアカウントAとMaxCompute用のAlibaba CloudアカウントBの2つを準備します。アカウントAを使用してアカウントBに権限を付与し、アカウントBがTablestore内のアカウントAのすべてのテーブルデータにアクセスできるようにします。次の表は、アカウントの基本情報を示しています。

説明

表の情報は例示のみを目的としています。操作時には実際の情報に置き換えてください。

項目

Tablestore

MaxCompute

Alibaba Cloudアカウント名

アカウントA

アカウントB

UID

1234567890****

5678901234****

MaxComputeを使用してTablestoreにアクセスする前に、以下の準備が完了していることを確認してください。

  • MaxCompute製品詳細ページでアカウントBのMaxComputeをアクティブ化し、ワークスペースを作成します。詳細については、ワークスペースの作成をご参照ください。

  • アカウントAとアカウントBのAccessKeyペアを取得します。詳細については、AccessKeyペアの取得をご参照ください。

  • アカウントAを使用して、アカウントBのResource Access Management(RAM)ロールを作成し、RAMロールの信頼ポリシーを編集します。詳細については、信頼できるAlibaba CloudアカウントのRAMロールの作成RAMロールの信頼ポリシーの編集をご参照ください。

    説明

    ポリシーでは、5678901234****はアカウントBのUIDです。

    次の例は、作成されたRAMロールの名前がAliyunODPSRoleForOtherUserであると仮定した信頼ポリシーを示しています。この例は、アカウントBのMaxComputeによってRAMロールを引き受けることができることを示しています。

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "5678901234****@odps.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }
                            
  • アカウントAのAliyunODPSRoleForOtherUserロールのARNを記録します。例:acs:ram::1234567890****:role/aliyunodpsroleforotheruser。ARNは外部テーブルの作成に使用されます。fig_20220706_arn

  • ポリシーを作成し、アカウントAのRAMロールであるAliyunODPSRoleForOtherUserにアタッチします。詳細については、カスタムポリシーの作成RAMロールへの権限の付与をご参照ください。

    次の例は、RAMロールが中国(杭州)リージョンにあるアカウントAのリソース(cap1という名前のインスタンスとcap1に属するすべてのテーブル)に対する読み取りおよび書き込み権限を持つカスタムポリシーを示しています。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ots:*",
          "Resource": [
          "acs:ots:cn-hangzhou:1234567890****:instance/cap1",
          "acs:ots:cn-hangzhou:1234567890****:instance/cap1/table/*"
          ],
          "Condition": {}
        }
      ]
    }

    詳細については、カスタムポリシーの作成をご参照ください。

  • Tablestoreコンソールで、インスタンスとデータテーブルを作成します。詳細については、Tablestoreコンソールでのワイドカラムモデルの管理トピックの「手順2:インスタンスの作成」セクションと「手順3:データテーブルの作成」セクションをご参照ください。

    前の例では、次のTablestoreインスタンスとデータテーブルが作成されています。

    • インスタンス名:cap1

    • データテーブル名:vehicle_track

    • プライマリキー情報:vid(整数)とgt(整数)

    • エンドポイント:https://cap1.cn-hangzhou.ots-internal.aliyuncs.com

      説明

      MaxComputeを使用してTablestoreにアクセスする場合は、Tablestoreのプライベートエンドポイントを使用することをお勧めします。

    • インスタンスのアクセスタイプをカスタムに設定し、許可されたネットワークタイプにVPC、クラシックネットワーク、インターネットを選択し、許可されたソースタイプに信頼できるゲートウェイ(コンソール)を選択します。

MaxComputeを使用してTablestoreにアクセスする

アカウントを跨いでのTablestoreへのアクセス手順は、1つのアカウント内でのTablestoreへのアクセス手順と同じですが、異なるアカウントで外部テーブルを作成するには、ロールのARNを使用する必要があります。

アカウントBはMaxComputeで外部テーブルを作成し、準備で作成したロールARNを指定してTablestoreにアクセスします。

CREATE EXTERNAL TABLE ads_log_ots_pt_external
(
vid bigint,
gt bigint,
longitude double,
latitude double,
distance double,
speed double,
oil_consumption double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
WITH SERDEPROPERTIES (
'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption',
'tablestore.table.name'='vehicle_track',
'odps.properties.rolearn'='acs:ram::1234567890****:role/aliyunodpsroleforotheruser'
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'
USING 'odps-udf-example.jar'