Amazon S3 php SDK 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

我使用的是AmazonS3SDK,getBucketPolicy调用似乎没有为我返回任何东西,因为其他人也有类似的问题

如果我跑

$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策略,谢谢如果凭据不存在,您会得到一个异常。