OssController.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Http\Controllers;
  3. use AliCloud\Core\Profile\DefaultProfile;
  4. use AliCloud\Core\DefaultAcsClient;
  5. use AliCloud\Core\Exception\ServerException;
  6. use AliCloud\Core\Exception\ClientException;
  7. use AliCloud\STS\AssumeRoleRequest;
  8. class OssController extends Controller
  9. {
  10. public function getSts()
  11. {
  12. $regionID = "cn-zhangjiakou";
  13. $endpoint = "sts.cn-zhangjiakou.aliyuncs.com";
  14. DefaultProfile::addEndpoint($regionID, $regionID, "Sts", $endpoint);
  15. $iClientProfile = DefaultProfile::getProfile($regionID, 'LTAIG3B3vMgxdnGg', 'EJY6vwMje1npqZYmIwrmUWlVTiVW18');
  16. $client = new DefaultAcsClient($iClientProfile);
  17. // 指定角色ARN
  18. $roleArn = "acs:ram::1211062998797452:role/ramoss-sts";
  19. // 在扮演角色时,添加一个权限策略,进一步限制角色的权限
  20. // 以下权限策略表示拥有可以读取所有OSS的只读权限
  21. $policy = <<<POLICY
  22. {
  23. "Statement": [
  24. {
  25. "Action": [
  26. "oss:Get*",
  27. "oss:List*"
  28. ],
  29. "Effect": "Allow",
  30. "Resource": "*"
  31. }
  32. ],
  33. "Version": "1"
  34. }
  35. POLICY;
  36. $request = new AssumeRoleRequest();
  37. // RoleSessionName即临时身份的会话名称,用于区分不同的临时身份
  38. $request->setRoleSessionName("alice");
  39. $request->setRoleArn($roleArn);
  40. $request->setPolicy($policy);
  41. $request->setDurationSeconds(3600);
  42. try {
  43. $response = $client->getAcsResponse($request);
  44. $result['region'] = $regionID;
  45. $result['accessKeyId'] = $response->Credentials->AccessKeyId;
  46. $result['accessKeySecret'] = $response->Credentials->AccessKeySecret;
  47. $result['stsToken'] = $response->Credentials->SecurityToken;
  48. $result['bucket'] = 'uptoyo';
  49. return $result;
  50. } catch (ServerException $e) {
  51. return $this->response->error($e->getMessage(), 500);
  52. } catch (ClientException $e) {
  53. return $this->response->error($e->getMessage(), 500);
  54. }
  55. }
  56. }