美文网首页程序员
OSS生成sts临时上传凭证

OSS生成sts临时上传凭证

作者: 响呼雷 | 来源:发表于2019-09-29 09:26 被阅读0次

框架:tp5


image.png

这是一些配置,我想大家都应该清楚,介入第三方这都是一些常识了。

sdk:


image.png

引入这三个sdk,一个是核心,一个ram,一个是sts

代码:

public function token()
    {
        include_once '../extend/fast/aliyun-php-sdk-core/Config.php';
        $accessKeyId = Env::get('sts.key');
        $accessKeySecret = Env::get('sts.secret');
        $region_id = Env::get('sts.region_id');
        $endpoint = Env::get('sts.endpoint');
        \DefaultProfile::addEndpoint($region_id, $region_id, "Sts", $endpoint);
        $iClientProfile = \DefaultProfile::getProfile($region_id, $accessKeyId, $accessKeySecret);
        $client = new \DefaultAcsClient($iClientProfile);
        $roleArn = Env::get('sts.arn');
        $policy = <<<POLICY
            {
                "Version": "1",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Action": [
                            "oss:GetObject",
                            "oss:PutObject",
                            "oss:ListParts",
                            "oss:AbortMultipartUpload",
                            "oss:ListObjects"
                        ],
                        "Resource": "acs:oss:*:*:*"
                    },
                    {
                        "Effect": "Allow",
                        "Action": "oss:*",
                        "Resource": [
                            "acs:oss:*:*:rebot",
                            "acs:oss:*:*:rebot/*"
                        ]
                    }
                ]
            }
POLICY;
        $request = new Sts\AssumeRoleRequest();
        $request->setRoleSessionName("LXJ");
        $request->setRoleArn($roleArn);
        $request->setPolicy($policy);
        $request->setDurationSeconds(3600);
        try {
            $response = $client->getAcsResponse($request);
            $response = (array)$response;
            $credentials = (array)$response['Credentials'];
            $data = [
                'AccessKeySecret'   =>  $credentials['AccessKeySecret'],
                'AccessKeyId'   =>  $credentials['AccessKeyId'],
                'SecurityToken' =>  $credentials['SecurityToken'],
                'Expiration'    =>  $credentials['Expiration'],
                'Time'  =>  3600
            ];
            return json(['code' => 1,'data' => $data]);
        } catch(\ServerException $e) {
            print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
        } catch(\ClientException $e) {
            print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
        }
    }

相关文章

网友评论

    本文标题:OSS生成sts临时上传凭证

    本文链接:https://www.haomeiwen.com/subject/jkbkuctx.html