Package的使用方法
Package的使用涉及到兩個主體:Package建立者和Package使用者。
- Package建立者項目空間是資源提供方,它將需要分享的資源及其存取權限進行打包,然後許可Package使用方來安裝使用。
- Package使用者項目空間是資源使用方,它在安裝資源提供方發布的Package之後,便可以直接跨項目空間訪問資源。
下面分別介紹Package建立者和Package使用者所涉及的操作。
Package建立者
- 建立Package
create package <pkgname>;
说明- 僅project的owner有許可權進行該操作。
- 目前建立的package名稱不能超過128個字元。
- 將分享的資源添加到Package
add project_object to package package_name [with privileges privileges];--將對象添加到Package remove project_object from package package_name;--將對象從Package移除 project_object ::= table table_name | instance inst_name | function func_name | resource res_name privileges ::= action_item1, action_item2, ...
说明- 目前支援的物件類型不包括Project類型,也就是不允許通過Package在其他Project中創對象。
- 添加到Package中的不僅僅是對象本身,還包括相應的操作許可權。當沒有通過[with privileges privileges]來指定操作許可權時,預設為唯讀許可權,即Read/Describe/Select。“對象及其許可權”被看作一個整體,添加後不可被更新。若有需要,只能刪除和重新添加。
- 許可其他項目空間使用Package
allow project <prjname> to install package <pkgname> [using label <number>];
- 撤銷其他項目空間使用Package的許可
disallow project <prjname> to install package <pkgname>;
- 刪除Package
delete package <pkgname>;
- 查看已建立和已安裝的Package列表
show packages;
- 查看Package詳細資料
describe package <pkgname>;
Package使用者
- 安裝Package
install package <pkgname>;
對於安裝Package來說,要求pkgName的格式為:<projectName>.<packageName>
。说明 僅project的Owner有許可權進行該操作。 - 卸載Package
uninstall package <pkgname>;
對於卸載Package來說,要求pkgName的格式為:
<projectName>.<packageName>
- 查看Package
show packages; --查看已建立和已安裝的package列表 describe package <pkgname>; --查看package詳細資料
- 使用方項目給本項目其他成員授權訪問Package
被安裝的Package是一種獨立的MaxCompute物件類型。若要訪問Package裡的資源(即其他項目空間分享給您的資源),您必須擁有對該Package的Read許可權。
如果要求者沒有Read許可權,則需要向ProjectOwner或Admin申請。ProjectOwner或Admin可以通過ACL授權機制來完成。
比如,如下的ACL授權允許雲帳號使用者LIYUN$odps_test@aliyun.com訪問Package裡的資源:use prj2; install package prj1.testpkg; grant read on package prj1.testpackage to user aliyun$odps_test@aliyun.com;
情境樣本
情境描述:Jack是項目空間prj1的管理員。John是項目空間prj2的管理員。由於業務需要, Jack希望將其項目空間prj1中的某些資源(比如datamining.jar及sampletable表)分享給John的項目空間prj2。 如果項目空間prj2的使用者Bob需要訪問這些資源,那麼管理員John可以通過ACL給Bob自主授權,無需Jack參與。
操作步驟:
- 項目空間prj1的管理員Jack在項目空間prj1中建立資源套件(package)。
use prj1; create package datamining; --建立一個package add resource datamining.jar to package datamining; --添加資源到package add table sampletable to package datamining; --添加table到package allow project prj2 to install package datamining; --將package分享給項目空間prj2
- 項目空間prj2管理員Jhon在項目空間prj2中安裝package。
use prj2; install package prj1.datamining; --安裝一個package describe package prj1.datamining; --查看package中的資源清單
- Jhon對package給Bob進行自主授權。
use prj2; grant Read on package prj1.datamining to user aliyun$bob@aliyun.com; --通過ACL授權Bob使用package