我试图在 registerStreamWrapper 上捕获错误的 key 异常,但它并没有发生。
我的问题是在尝试验证对象是否存在时产生的,如果有人打电话帮助我(最好的方法),那就太棒了,但这是另一个问题。回到问题。
我使用此代码通过 registerStreamWrapper 检查对象是否存在:
try{
$s3Client = new \Aws\S3\S3Client($sharedConfig);
$s3Client->registerStreamWrapper();
$file = 's3://'."mybucket".'/'."testpath/testpic.jpg";
if(file_exists($file)){
echo "true";
}else{
echo "false";
}
} catch (S3Exception $e) {
// Catch an S3 specific exception.
echo $e->getMessage();
} catch (AwsException $e) {
// This catches the more generic AwsException. You can grab information
// from the exception using methods of the exception object.
echo $e->getAwsRequestId() . "\n";
echo $e->getAwsErrorType() . "\n";
echo $e->getAwsErrorCode() . "\n";
}
如果我提供了错误的 key ,它只会返回 false。无论如何要验证访问 key ID 和 secret 访问 key ?这将使我的生活变得如此轻松。
在这里找不到任何东西:http://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html或此处:http://docs.aws.amazon.com/aws-sdk-php/v3/guide/
最佳答案
这是 AWS 命令行界面 (CLI) 的技巧。 可以使用下一个命令验证它们:
aws iam get-account-authorization-details
即使用户没有执行 GetAccountAuthorizationDetails 操作的授权,如果 AWS 访问 key 是正确的,那么您将获得如下输出:
An error occurred (AccessDenied) when calling the
GetAccountAuthorizationDetails operation:
User: arn:aws:iam::012345678901:user/username is not authorized to perform:
iam:GetAccountAuthorizationDetails
这意味着 AWS 不仅拥有经过验证的凭据,而且还向您返回了这些凭据所链接到的账户 ID 和用户名。
如果Access Key ID错误,那么您将得到下一个回复: 调用 GetAccountAuthorizatio 时发生错误 (InvalidClientTokenId) n详情操作:请求中包含的安全 token 无效。
或者,对于 S3 等其他一些服务,如果您尝试执行“aws s3 ls”,它可能会显示 (InvalidAccessKeyId)。
如果 Secret Access Key 错误,那么您将得到下一个回复: 调用 GetAccountAuthorizati 时发生错误 (SignatureDoesNotMatch) onDetails操作:我们计算的请求签名与签名不符 你提供的特性。检查您的 AWS secret 访问 key 和签名方法。咨询 有关详细信息,请参阅服务文档。
关于php - Amazon S3 如何验证访问 key ID 和 secret 访问 key ? PHP SDK v3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32191289/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我想从then子句中访问case语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案
我理解(我认为)Ruby中类变量和类的实例变量之间的区别。我想知道如何从该类外部访问该类的实例变量。从内部(即在类方法中而不是实例方法中),它可以直接访问,但是从外部,有没有办法做MyClass.class.[@$#]variablename?我没有任何具体原因要这样做,只是学习Ruby并想知道是否可行。 最佳答案 classMyClass@my_class_instance_var="foo"class上述yield:>>foo我相信Arkku演示了如何从类外部访问类变量(@@),而不是类实例变量(@)。我从这篇文章中提取了上述内
我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token
是否有可能以某种方式访问Class.new范围内的a?a=5Class.new{defb;aend}.new.b#NameError:undefinedlocalvariableormethod`a'for#:0x007fa8b15e9af0>#:in`b' 最佳答案 即使@MarekLipka的回答是正确的——改变变量范围总是有风险的。这是可行的,因为每个block都带有创建它的上下文,因此您的局部变量a突然变得不那么局部了——它变成了一个“隐藏的”全局变量:a=5object=Class.new{define_method(
使用散列定义的访问器方法动态创建对象的最简单方法是什么?例如,如果我有一个散列:{foo:"Foo",bar:"Bar"}我想要一个具有访问器方法foo、foo=、bar和bar=的对象,其初始值分别为"Foo"和"Bar"。我可以想到这样做:moduleObjectWithAccessordefself.newh;Struct.new(*h.keys).new(*h.values)endendo=ObjectWithAccessor.new(foo:"Foo",bar:"Bar")o.foo#=>"Foo"但是,我不需要它们的多个实例具有相同的特定键集,而是希望每次都使用可能不同的键
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT
我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re