今天在使用AWS中,由于原来的 key和secrect是放在配置文件ini里面的。现在需要改成从DB里面获取,所以需要自定义Credential.在AWS中重写这个挺简单的。

我这里是继承原先的CredentialProvider类,然后写了一个bucketProvider方法

使用方法:


//调用自定义provider
$provider = \app\library\Aws\S3CredentialProvider::bucketProvider();
$provider = Aws\Credentials\CredentialProvider::memoize($provider);
try {
$s3Client = new Aws\S3\S3Client([
'region' => $region,
'version' => '2006-03-01',
'credentials' => $provider,
]);
}catch (Aws\Exception\CredentialsException $ex){
return null;
}
<?php
namespace app\library\Aws; use Yaf\Registry; use Aws\Credentials\CredentialProvider;
use GuzzleHttp\Promise;
use Aws\Exception\CredentialsException;
use GuzzleHttp\Promise\RejectedPromise;
use Aws\Credentials\Credentials; /**
* Class DB
* @package app\library\Aws
* awazon 自定义credential,根椐存储桶,去获取access_id 和 access_secrect;
*/
class S3CredentialProvider extends CredentialProvider
{ public static function bucketProvider()
{
return function () {
$bucketInfo = [];
try {
$bucketInfo = \app\library\Aws\Bucket::instance()->getBucketRegion(); //获取bucket信息。
}catch(\Exception $ex){
return new Promise\RejectedPromise(new CredentialsException("获取s3认证文件失败"));
} $accessKey = isset($bucketInfo['accessKey']) && $bucketInfo['accessKey'] ? json_decode($bucketInfo['accessKey'],true) : [];
$key = isset($accessKey['id']) && $accessKey['id'] ? $accessKey['id'] : '';
$secret = isset($accessKey['key']) && $accessKey['key'] ? $accessKey['key'] : '';
if ($key && $secret) {
return Promise\promise_for(
new Credentials($key, $secret,NULL)
);
}
return new Promise\RejectedPromise(new CredentialsException("找不到s3的key,secrect用于认证"));
};
} }

在AWS中自定义Credential Provider实现Client连接的更多相关文章

  1. 如何在ASP.NET Core中自定义Azure Storage File Provider

    文章标题:如何在ASP.NET Core中自定义Azure Storage File Provider 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p ...

  2. SharePoint 2013 中自定义WCF服务

    在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...

  3. 15、自定义Content Provider

     自定义Content Provider的步骤    1. 编写一个类,该类必须继承自ContentProvider类. 实现ContentProvider类中所有的抽象方法. 定义Content ...

  4. AWS中,如果使用了ELB,出现outofservice

    平台:亚马逊AWS EC2 出现状况: 我创建了弹性平衡负载,也注册了实例,但是实例的状态一直是outofservice.为什么? 为什么会出现这个问题呢? 1:实例有问题: 2:负载平衡器创建的有问 ...

  5. 『转』credential Provider 简易改写攻略

    本次小学期的题目是windows下的凭证改编.本人负责的是Win7 下的credentials Provider 的编写以及其他杂七杂八的工作.当然给我印象最深的就是credentials provi ...

  6. 6.2 dubbo在spring中自定义xml标签源码解析

    在6.1 如何在spring中自定义xml标签中我们看到了在spring中自定义xml标签的方式.dubbo也是这样来实现的. 一 META_INF/dubbo.xsd 比较长,只列出<dubb ...

  7. Html中自定义鼠标的形状

    Html中自定义鼠标的形状 <html> <head> <title>自定义的鼠标形状</title> <meta http-equiv=&quo ...

  8. 教你一招:在PowerPoint中自定义可输入文本的占位符

    日常生活中,当我们设计多媒体课件时,默认的版式其实已经够用了.但是,很多时候,我们需要更加个性一点,所以,我们需要自定义很多东西.本文介绍在PowerPoint中自定义可输入文本的占位符. 一.占位符 ...

  9. 在AWS中创建NAT节点

    NAT, Network Address Translation,即网络地址转换.当内部网络的主机想要访问外网,但是又不想直接暴露给公网,可以通过NAT节点来访问外网.这样做有两个好处,第一是内网的主 ...

随机推荐

  1. OpenGL入门(一):使用GLFW创建简单的窗口

    如果使用QT,那么创建一个OpenGL渲染窗口其实很容易,不过出于初学的角度,使用GLFW库来创建新窗口. 1. 下载并配置GLFW GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体 ...

  2. qt需求

    1.登录框 账号密码 复杂度判断 2.监控  权限认证 (5分钟必须锁定,退回登录状态)--b/s 3.exe 嵌入exe (什么时间触发了什么消息,任何消息触发都可以,日志文件zlog,5分钟没有写 ...

  3. JAVA大数的一些操作

    参考: https://www.cnblogs.com/tonyyy/p/10433460.html https://www.cnblogs.com/wkfvawl/p/9377441.html (d ...

  4. 莫烦TensorFlow_11 MNIST优化使用CNN

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #number 1 to 10 d ...

  5. pom文件详解(自己没看过)

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. [LeetCode] 450. Delete Node in a BST 删除二叉搜索树中的节点

    Given a root node reference of a BST and a key, delete the node with the given key in the BST. Retur ...

  7. [LeetCode] 208. Implement Trie (Prefix Tree) 实现字典树(前缀树)

    Implement a trie with insert, search, and startsWith methods. Example: Trie trie = new Trie(); trie. ...

  8. sqlserver数据库使用navicat生成数据字典

    https://blog.csdn.net/Honnyee/article/details/86156832 SELECT 表名 then d.name else '' end, 表说明 then i ...

  9. 运维工程师打怪升级进阶之路 V2.0

    在此之前,发布过两个版本: 运维工程师打怪升级之路 V1.0 版本发布 运维工程师打怪升级必经之路 V1.0.1 很多读者伙伴们反应总结的很系统.很全面,无论是0基础初学者,还是有基础的入门者,或者是 ...

  10. 动手学深度学习9-多层感知机pytorch

    多层感知机 隐藏层 激活函数 小结 多层感知机 之前已经介绍过了线性回归和softmax回归在内的单层神经网络,然后深度学习主要学习多层模型,后续将以多层感知机(multilayer percetro ...