Amazon S3 php SDK getBucketPolicy返回空
我使用的是AmazonS3SDK,getBucketPolicy调用似乎没有为我返回任何东西,因为其他人也有类似的问题 如果我跑Amazon S3 php SDK getBucketPolicy返回空,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我使用的是AmazonS3SDK,getBucketPolicy调用似乎没有为我返回任何东西,因为其他人也有类似的问题 如果我跑 $client = S3Client::factory(array( 'key' => 'key', 'secret' => 'secret' )); $result = $client->getBucketPolicy(array( // Bucket is required
$client = S3Client::factory(array(
'key' => 'key',
'secret' => 'secret'
));
$result = $client->getBucketPolicy(array(
// Bucket is required
'Bucket' => 'bucket',
));
print_r($result->toArray());
它回来了
Policy {}
但当我使用AmazonS3控制台查看属性时,请在我的bucket上单击edit policy(编辑策略)
{
"Id": "Policy123456789",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
我遗漏了什么吗?您是否在.aws/config中配置了IAM策略或存储了凭据 如果您使用的代码没有作为提供的凭据
$result = $client->getBucketPolicy(array(
// Bucket is required
'Bucket' => 'bucket',
));
它假定在AWS控制台为您的实例配置了IAM策略,或者您将凭据存储到了~/.AWS/config
如果没有,那么应该将配置作为
$result = $client->getBucketPolicy(array(
// Bucket is required
'Bucket' => 'bucket',
'key' => 'put your key',
'secret' => 'put your secret',
'region' => 'put your region',
));
我找到了!它是如此简单。。。然而如此艰难。。。因为我在文件里找不到 执行时得到的响应:
$response=$this->S3Client
->getBucketPolicy(['Bucket'=>$bucketName])
->获取(“策略”);
是以下类型的对象:GuzzleHttp\Psr7\Stream
必须使用getContents()
方法获取流的上下文:
$response=$this->S3Client
->getBucketPolicy(['Bucket'=>$bucketName])
->获取('策略')
->getContents();
Hi evgeniy我已经更新了我的问题,我正在正确调用代码给它一个go向您的bucket添加策略,并在添加了策略的bucket上运行上面的代码,看看它是否返回json策略,谢谢如果凭据不存在,您会得到一个异常。