分兩個部分:
RAM子帳號權限
1.建立子帳號,生成AccessKeyID和AccessKeySecret
2.建立一個受權策略,能夠上傳和讀取視頻OSS的bucket
3.將管理視頻點播的權限(AliyunVODFullAccess)、管理視頻直播(Live)的權限(AliyunLiveFullAccess)、管理短視頻生產平臺(SVGP)的權限(AliyunSVGPFullAccess)、調用STS服務AssumeRole接口的權限(AliyunSTSAssumeRoleAccess)以及上面新建的受權策略受權給這個子帳號php
臨時用戶權限
1.建立角色
2.將視頻點播服務播放權限(AliyunVODPlayAuth)、只讀訪問視頻直播的權限(AliyunLiveReadOnlyAccess)以及子帳號創建的受權策略一塊兒給這個角色編程
示例:ide
1.阿里雲https://ram.console.aliyun.com/,建立用戶video-manager,描述名稱就是視頻管理,訪問方式選擇「編程訪問」阿里雲
2.建立帳號成功,保存下子帳號的key和密鑰3d
3.進入視頻點播控制檯(https://vod.console.aliyun.com/),查看視頻點播的OSS-bucket,而且記錄下來,這裏是baae800163e1a3b4a.oss-cn-shanghai.aliyuncs.com,可是咱們只要baae800163e1a3b4a和cn-shanghaicode
4.回到RAM權限控制檯,選擇「權限管理」---「權限策略管理」--「新增」,到了」新建自定義權限策略(https://ram.console.aliyun.com/policies/new)"視頻
策略名稱:video-upload-playblog
備註:視頻點播,OSS臨時用戶權限接口
配置模式:選擇「腳本配置」ci
策略內容以下:(注意baae800163e1a3b4a是OSS bucket的名稱,按照你本身實際的狀況來寫,Action:我這裏是所有權限)
{ "Statement": [ { "Action": "oss:*", "Effect": "Allow", "Resource": "acs:oss:*:*:baae800163e1a3b4a/*" } ], "Version": "1" }
5.給video-manager授予權限(https://ram.console.aliyun.com/users/video-manager),可直接「用戶管理」--「用戶」,點擊「video-manager」,增長
AliyunSTSAssumeRoleAccess
AliyunLiveFullAccess
AliyunVODFullAccess
AliyunSVGPFullAccess
video-upload-play 自定義的受權策略
子帳號的權限已經弄好了
臨時用戶權限:
1.建立角色: 選擇"阿里雲帳號"
2.輸入角色名稱video-upload-play,備註爲「視頻上傳播放角色」,選擇雲帳號「當前雲帳號」
3.爲角色受權
4.爲角色受權,爲角色增長之前權限
AliyunLiveReadOnlyAccess
AliyunVODPlayAuth
video-upload-play
5.獲取ARN
<?php use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; //構建一個阿里雲客戶端,用於發起請求。 //構建阿里雲客戶端時須要設置AccessKey ID和AccessKey Secret。 AlibabaCloud::accessKeyClient('<accessKeyId>', '<accessSecret>') ->regionId('cn-hangzhou') ->asDefaultClient(); //設置參數,發起請求。 try { $result = AlibabaCloud::rpc() ->product('Sts') // ->scheme('https') // https | http ->version('2015-04-01') ->action('AssumeRole') ->method('POST') ->host('sts.aliyuncs.com') ->options([ 'query' => [ 'RegionId' => "cn-hangzhou", 'RoleArn' => "<RoleArn>", //這裏填寫上面獲取到的Arn便可 'RoleSessionName' => "<RoleSessionName>", //這裏隨便填寫,好比xxxxx ], ]) ->request(); print_r($result->toArray()); } catch (ClientException $e) { echo $e->getErrorMessage() . PHP_EOL; } catch (ServerException $e) { echo $e->getErrorMessage() . PHP_EOL; }
至此結束