阿里云oss安全令牌获取
阿里云oss帐号方面搞得比较复杂,关系层层嵌套,也是最烦人的地方,简单的事搞得这么复杂!!
首先需要理清楚 用户、角色、权限 这三个关系,
创建流程
1 创建用户
2 为该用户添加 AliyunOSSFullAccess 权限 (调用STS服务AssumeRole接口的权限)ps: 意思应该就是调用STS服务的角色权限,有了他就可以调用指定角色
3 创建角色
4 为角色添加 AliyunOSSFullAccess权限 (管理对象存储服务(OSS)权限) ps:用户调用oss接口权限
5 这一步根据需要可以省略,例:指定上传文件权限,权限策略-》创建权限-》 脚本编辑-》回到角色管理,添加该权限
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:PutObject",
"Resource": [
"acs:oss:*:*:51zuso/exampledir",
"acs:oss:*:*:51zuso/exampledir/*"
]
}
]
}6 php api获令牌
帐号添加操作过程
1 进入到RAM 访问控制

2 创建用户

3 用户添加 AliyunOSSFullAccess 权限


4 创建角色

选 阿里去帐号

选 当前云帐号

5 为角色添加 AliyunOSSFullAccess权限


php aip调用
1 下载阿里云sdk类库
composer require alibabacloud/sts
2 调用
<?php
if (is_file(__DIR__ . '/vendor/autoload.php')) {
require_once __DIR__ . '/vendor/autoload.php';
}
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Sts\Sts;
AlibabaCloud::accessKeyClient('你的用户用AccessKey', '你的用户用access-key-secret')
->regionId('你的Bucket 列表地域')
->asDefaultClient()->options([
]);
try {
$request = Sts::v20150401()->assumeRole();
$result = $request
->withRoleArn("你的角色ARN")
->withRoleSessionName("你的角色名")
->withDurationSeconds(3600)
->debug(true) // Enable the debug will output detailed information
->request();
echo '<pre>';
print_r($result->toArray());
} catch (ClientException $exception) {
echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
echo $exception->getMessage() . PHP_EOL;
echo $exception->getErrorCode() . PHP_EOL;
echo $exception->getRequestId() . PHP_EOL;
echo $exception->getErrorMessage() . PHP_EOL;
}最终返回

阿里云在线api调式
在这里测试发现,怎么测试都是报错,

后面下载的了相关的sdk与示例代码,在自已服务器上运行是可以的
https://next.api.aliyun.com/api/Sts/2015-04-01/AssumeRole?lang=PHP&sdkStyle=old¶ms={}

//自已引入下载到的sdk
if (is_file(__DIR__ . '/vendor/autoload.php')) {
require_once __DIR__ . '/vendor/autoload.php';
}