在插件、詞典等上傳場景中,如果您的原始文件在OSS中,您可以按照控制臺引導使用提供OSS地址的方式完成文件的上傳。該過程依賴普通服務角色,需要您授權阿里云Elasticsearch(簡稱ES)平臺訪問您提供的OSS路徑的權限,從而加載您需要上傳的文件。
ES普通服務角色介紹
普通服務角色(Service Role)是一種可信實體為阿里云服務的RAM角色,旨在解決跨云服務的授權訪問問題。更多信息,請參見RAM角色概覽。
在您根據控制臺指引,使用提供OSS路徑的方式更新詞典時,如果不存在具有執行任務權限的角色,需要您主動授權,確認創建普通服務角色。ES通過扮演該角色訪問您提供的OSS路徑中的文件,更新ES實例中相應類型的詞典,且無需您再將OSS Bucket的讀權限修改為公共讀,數據安全更有保障。
該角色的相關說明如下:
授權服務名稱:elasticsearch.aliyuncs.com
角色名稱:AliyunElasticsearchAccessingOSSRole
角色權限策略名稱:AliyunElasticsearchAccessingOSSRolePolicy
角色權限策略內容
{ "Version": "1", "Statement": [ { "Action": [ "oss:GetObject", "oss:GetObjectMetadata", "oss:GetObjectMeta" ], "Resource": "*", "Effect": "Allow" } ] }
刪除普通服務角色
普通服務角色您可以在RAM控制臺手動刪除。具體操作,請參見刪除RAM角色。
刪除普通服務角色后,依賴該角色的對應功能將無法正常使用,請謹慎刪除。
服務角色權限收斂示例
普通服務角色的授權策略,還可進行二次干預和收斂。
設置Bucket標簽
利用Bucket標簽來管理OSS存儲空間的權限。更多信息,請參見管理存儲空間標簽。
登錄OSS管理控制臺。
單擊Bucket 列表,然后單擊目標Bucket名稱。
在左側導航欄,選擇 。
在Bucket 標簽頁面,單擊創建標簽。
設置Bucket標簽
新建RAM策略。具體操作,請參見通過腳本編輯模式創建自定義權限策略。
可限制Bucket(修改Resource),或者指定標簽下的Bucket(修改Condition)訪問。腳本示例如下:
{ "Version": "1", "Statement": [ { "Action": [ "oss:GetObject", "oss:GetObjectMetadata", "oss:GetObjectMeta" ], "Resource": [ "acs:oss:*:193248xxxxxxx:*" ], "Effect": "Allow", "Condition": { "StingEquals": { "oss:BuckteTag/key1":"value1" } } } ] }
編輯 AliyunElasticsearchAccessingOSSRole 權限,新增上一步創建的自定義策略。
常見問題
Q:使用UpdateDict、UpdateHotIkDicts、UpdateSynonymsDicts、UpdateAliwsDict等OpenAPI請求出現錯誤碼ElasticsearchNoPermissionForCurrentBucket
?
A:云原生管控實例(如7.16、8.5、8.9等版本實例),僅支持通過阿里云普通服務角色授權實現讀取OSS內的詞典文件功能,不支持直接訪問公共讀的OSS地址,請及時進入授權頁完成授權。影響的場景包括以OSS方式更新同義詞、IK詞典冷更新和熱更新、aliws詞庫更新等。