在“https://s3.ap-south-1.amazonaws.com/buckn/uploads/5th.jpg”上执行“PutObject”时出错; AWS HTTP错误:客户端错误:`PUT

时间:2017-05-17 02:54:59

标签: php amazon-s3

这是我得到的错误 在“https://s3.ap-south-1.amazonaws.com/infosecure.buck/uploads/5th.jpg”上执行“PutObject”时出错; AWS HTTP错误:客户端错误:PUT https://s3.ap-south-1.amazonaws.com/infosecure.buck/uploads/5th.jpg导致了403 Forbidden响应:AccessDeniedAccess Denied69DC61(截断...)存取遭拒(客户端):访问被拒绝 - AccessDeniedAccess Denied69DC6155E0F5042AHg2jvV2iLEsOHnmsvxM2meASpYr9Z3I6zPxEPedneHixIaPZpfESW1 / SCO0UwlVnTKBXwkatE0M =

<?php
use Aws\S3\Exception\S3Exception;

require 'app/start.php';

if(isset($_FILES['file']))
{
   $file=$_FILES['file'];

  $name= $file['name'];

  $tmp_name = $file['tmp_name'];

  $extension = explode('.',$name);

  $extension=strtolower(end($extension));

  $key = md5(uniqid());

  $tmp_file_name= "{$key}.{$extension}";
  $tmp_file_path = "files/{$tmp_file_name}";
  move_uploaded_file($tmp_name,$tmp_file_path);
  try{

     $s3->putObject([
     'Bucket' => $config['s3']['bucket'],
     'Key' => "uploads/{$name}",
     'Body' => fopen($tmp_file_path,'rb'),
     'ACL' => 'public-read'

     ]); 

  unlink($tmp_file_path);}
  catch(S3Exception $e)
  {
      echo $e->getmessage();
  }




}
?>

这是我的存储桶政策

{     “版本”:“2012-10-17”,     “声明”:[         {             “效果”:“允许”,             “校长”:{                 “AWS”:“arn:aws:iam :: 601825519382:user / admin-infosecure”             },             “行动”:“s3:*”,             “资源”:“arn:aws:s3 ::: infosecure.buck”         }     ] }

2 个答案:

答案 0 :(得分:1)

似乎是一个许可问题。

如果您通过本地计算机访问,请确保您的IAM用户具有对该存储区的写入权限。

如果您在EC2实例上运行此代码,请确保Instance Role具有对此存储桶的写访问权。

答案 1 :(得分:0)

对于PutObject / GetObject,ARN需要引用存储桶中的对象,因此,代替:

{
  "Version": "2012-10-17"
, "Statement": [ {
    "Effect": "Allow"
  , "Principal": { "AWS": "arn:aws:iam::601825519382:user/admin-infosecure" }
  , "Action": "s3:*"
  , "Resource": "arn:aws:s3:::infosecure.buck" 
  } ] 
}

你想要

{
  "Version": "2012-10-17"
, "Statement": [ {
    "Effect": "Allow"
  , "Principal": { "AWS": "arn:aws:iam::601825519382:user/admin-infosecure" }
  , "Action": "s3:*"
  , "Resource": [
      "arn:aws:s3:::infosecure.buck"
    , "arn:aws:s3:::infosecure.buck/*" 
    ]
  } ] 
}