美文网首页程序员
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