OssManage.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\api\controller;
  3. use AlibabaCloud\SDK\Sts\V20150401\Sts;
  4. use \Exception;
  5. use AlibabaCloud\Tea\Exception\TeaError;
  6. use AlibabaCloud\Tea\Utils\Utils;
  7. use Darabonba\OpenApi\Models\Config;
  8. use AlibabaCloud\SDK\Sts\V20150401\Models\AssumeRoleRequest;
  9. use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
  10. use AlibabaCloud\SDK\Vod\V20170321\Models\GetVideoPlayAuthRequest;
  11. require_once '../vendor/aliyunmail/aliyun-php-sdk-core/Config.php'; // 假定您的源码文件和aliyun-php-sdk处于同一目录
  12. $path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
  13. if (file_exists($path)) require_once $path;
  14. date_default_timezone_set('PRC');
  15. /**
  16. * @title OssManage
  17. * @controller OssManage
  18. * @group base
  19. */
  20. class OssManage extends Base
  21. {
  22. protected $access_key = 'LTAI5tGJE1WU5ytYK2zBxnDx';// key
  23. protected $access_secret = 'uNyByodVajsN1lrMSCxpbrJF46Pwx3';//secret
  24. protected $role_arn= 'acs:ram::1122764885952286:role/ramoss';//role_arn
  25. protected $role_session_name= 'RamOss';//role_session_name
  26. /**
  27. * 使用AK&SK初始化账号Client
  28. * @param string $accessKeyId
  29. * @param string $accessKeySecret
  30. * @return Sts Client
  31. */
  32. public static function createClient($accessKeyId, $accessKeySecret){
  33. $config = new Config([
  34. // 您的 AccessKey ID
  35. "accessKeyId" => $accessKeyId,
  36. // 您的 AccessKey Secret
  37. "accessKeySecret" => $accessKeySecret
  38. ]);
  39. // 访问的域名
  40. $config->endpoint = "sts.cn-shanghai.aliyuncs.com";
  41. return new Sts($config);
  42. }
  43. /**
  44. * @title 获取STS临时身份凭证
  45. * @desc 获取STS临时身份凭证
  46. * @author qc
  47. * @url /api/Oss_manage/getOssCredentials
  48. * @method GET
  49. * @tag 视频播放凭证
  50. * @header name:Authorization require:1 desc:Token
  51. * @return name:RequestId type:string default:-- desc:RequestId
  52. * @return name:Arn type:string default:-- desc:RoleArn(Arn)
  53. * @return name:AssumedRoleId type:string default:-- desc:AssumedRoleId
  54. * @return name:SecurityToken type:string default:-- desc:SecurityToken
  55. * @return name:AccessKeyId type:string default:-- desc:AccessKeyId
  56. * @return name:AccessKeySecret type:string default:-- desc:AccessKeySecret
  57. * @return name:Expiration type:string default:-- desc:Expiration
  58. */
  59. public function getOssCredentials()
  60. {
  61. $client = self::createClient($this->access_key,$this->access_secret);
  62. $assumeRoleRequest = new AssumeRoleRequest([
  63. 'roleArn' => $this->role_arn,
  64. 'roleSessionName' =>$this->role_session_name,
  65. ]);
  66. $runtime = new RuntimeOptions([]);
  67. try {
  68. // 复制代码运行请自行打印 API 的返回值
  69. $res = $client->assumeRoleWithOptions($assumeRoleRequest, $runtime);
  70. $json_res = json_encode($res,true);
  71. $res_arr = json_decode($json_res,true);
  72. }
  73. catch (Exception $error) {
  74. if (!($error instanceof TeaError)) {
  75. $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
  76. }
  77. $this->error($error->message);
  78. }
  79. $this->success('ok',$res_arr['body'] );
  80. }
  81. }