2015-03-04 5 views
1

Я получаю AccessDeniedException от AWS PHP SDK, когда пытаюсь поместить объект в ведро S3 с использованием Laravel. Я сконфигурировал ключ, секрет и область в application/config/packages/aws/aws-sdk-php-laravel/config.php. Затем я пытаюсь выполнить простой putObject используя следующий код:AWS AccessDeniedException с Laravel для S3

try { 
    AWS::get('s3')->putObject(array(
     'Bucket' => Config::get('settings.AWS_BUCKET'), 
     'Key' => 'hello_.txt', 
     'Body' => 'hi', 
     'ACL' => 'public-read' 
    )); 

    return 'great success'; 
} catch (Exception $e) { 
    return $e; 
} 

, который, как вы можете ожидать от моего Задавая этот вопрос, чтобы начать с, терпит неудачу и возвращает что-то вроде этого (с запросом ID меняющегося каждый раз) :

Aws\S3\Exception\AccessDeniedException: AWS Error Code: AccessDenied, Status Code: 403, AWS Request ID: CA0E8181A5F2D740, AWS Error Type: client, AWS Error Message: Access Denied, User-Agent: aws-sdk-php2/2.7.20 Guzzle/3.9.2 curl/7.40.0 PHP/5.4.37 Laravel/4.2.17 L4MOD/1.1.0 

Из того, что я могу сказать, мне отказывают в доступе к ведру. Если я изменю ключ или секрет, я получаю InvalidAccessKeyIdException и SignatureDoesNotMatchException соответственно. Что мне здесь не хватает?

ответ

6

Наконец-то я обнаружил, что если бы я добавил политику AmazonS3FullAccess под разрешение пользователя в IAM, приложение наконец-то сработало, и я смог создать и загрузить элементы в ведро.

Смежные вопросы