ここでは、プロジェクトスペースのパッケージ作成者とパッケージユーザーの操作について説明します。
パッケージの使用方法
- パッケージ作成者は、共有するリソースと、共有するリソースへのアクセス権限を提供します。 また、パッケージユーザーに共有リソースのインストールと使用を許可します。
- パッケージユーザーはパッケージを使用します。 パッケージが公開された後、ユーザーはプロジェクト間でリソースに直接アクセスできます。
以下にパッケージ作成者とパッケージユーザーの操作を説明します。
パッケージ作成者
- パッケージの作成
create package <pkgname>;
注- プロジェクト所有者だけがパッケージの作成権限を持っています。
- パッケージの名前は 128 文字を超えることはできません。
- 共有するリソースをパッケージに追加
Add project_object to package package_name [with privileges] -- add objects to package Remove project_object from package package_name; -- remove object from package project_object ::= table table_name | instance inst_name | function func_name | resource res_name privileges ::= action_item1, action_item2, ...
注- 現在、プロジェクトは、サポート対象外のオブジェクトタイプです。 したがって、パッケージを使用して、他のプロジェクトのオブジェクトを作成することはできません。
- オブジェクトとオブジェクトに対する操作権限は、同時にパッケージに追加されます。 privileges オプションを指定しても、操作権限を指定していない場合、デフォルトは読み取り専用、つまり ead/describe/select です。 オブジェクトと権限は、1 つのまとまりとして扱われ、追加した後に更新することはできません。 必要に応じて、削除と再追加のみ可能です。
- オブジェクトがパッケージに追加されると、そのオブジェクトはスナップショットとしてパッケージ化されません。そのため、後でオブジェクトデータが変更された場合、パッケージを介してオブジェクトにアクセスすると、オブジェクトの最新データにアクセスすることになります。
パッケージに対してさまざまな操作を実行するには、次のコマンドを使用します。
- 他のプロジェクトにパッケージの使用を許可
allow project <prjName> to install package <pkgName> [using label <num>]
- 他のプロジェクトでパッケージを使用する権限の取り消し
disallow project <prjName> to install package <pkgName>
- パッケージの削除
Delete package <pkgname>;
- 既に作成し、インストール済みのパッケージの一覧表示
Show packages;
- パッケージの詳細の表示
Describe package <pkgname>;
パッケージユーザー
- パッケージのインストール
Install package <pkgname>;
パッケージのインストールの場合、pkgName の形式は <projectName>.<packageName> です。注 この操作の権限を持つのは、プロジェクト所有者だけです。 - パッケージのアンインストール
Uninstall package <pkgname>;
パッケージのインストールの場合、pkgName の形式は <projectName>.<packageName>.
<projectName>.<packageName>
です。 - パッケージの表示
Show packages; View the list of packages already created and installed Describe package <pkgname>; View details of package
- クライアントプロジェクトから、このプロジェクトの他のメンバーまたはロールにパッケージへのアクセス権限を付与
インストールされたパッケージは、独立したタイプの MaxCompute オブジェクトです。 パッケージ内のリソース (他のプロジェクトで共有されているリソース) にアクセスするには、パッケージの読み取り権限が必要です。
読み取り権限がない場合は、プロジェクトの所有者か管理者に権限を申請する必要があります。 プロジェクトの所有者または管理者は、ACL 権限付与またはポリシー権限付与を介して権限を付与できます。
パッケージをユーザーまたはロールに権限付与します。
grant actions on package <pkgName> to user <username>; grant actions on package <pkgName> to role <role_name>;
注 権限付与後、ユーザーはこのプロジェクト内でのみパッケージ内のオブジェクトにアクセスできます。たとえば、次の ACL 権限付与では、クラウドアカウントユーザー odps_test@aliyun.com がパッケージ内のリソースにアクセスできます。]use prj2; install package prj1.testpkg; grant read on package prj1.testpackage to user aliyun$odps_test@aliyun.com;
または、ロール role_dev のすべてのメンバーにパッケージ内のリソースへのアクセスを許可します。
use prj2; install package prj1.testpkg; grant read on package prj1.testpackage to role role_dev;
例
Jack は prj1 の管理者です。 John は prj2 の管理者です。 ビジネスニーズに対処するため、Jack は prj1 のリソース (datamining.jar や sampletable など) を John の prj2 と共有したいと考えています。 prj2 のユーザー Bob がこれらのリソースにアクセスする必要がある場合、prj2 の管理者は、Jack の関与なしに、ACL 管理者またはポリシー権限付与を介して Bob に独立した権限を付与できます。
- Prj1 の管理者 Jack は、リソースパッケージを prj1 に作成します。
Use prj1; Create package datamicing; -- creating a package Add Resource dating. jar to package dating;-add resource to package Add Table sampletable to package dating; -- adding table to package Allow project prm9 to install package dating; -- sharing package to Project Space prm9
- Prj2 の管理者 Bob は、パッケージを prj2 にインストールします。
use prj2; install package prj1.datamining; -- installs a package describe package prj1.datamining; -- view a list of resources in the package
- Bob はパッケージへ独立した権限を付与します。
use prj2; grant Read on package prj1.datamining to user aliyun$bob@aliyun.com; -- authorization of Bob to use package via ACL