Интеграция Amazon AWS с yii 2.0

Как мне интегрировать мой проект Yii 2.0 с Aws? Я установил его с помощью композитора

"aws/aws-sdk-php": "2.*",

и включил

require '../vendor/aws/aws-autoloader.php';

Но когда я пытаюсь создать экземпляр своего клиента S3, он продолжает говорить мне, что Aws не существует.


person Karate_Dog    schedule 21.04.2015    source источник


Ответы (4)


Вы можете сослаться на следующую ссылку на github

https://github.com/JDpawar/yii2-aws-s3-sdk

В нем есть точные сведения о том, как использовать S3 SDK вместе с приложением Yii 2.

person JDpawar    schedule 09.06.2015
comment
Ответы только по ссылкам не приветствуются в Stack Overflow. Будет лучше, если вы добавите немного информации. - person Federico Nicolas Motta; 26.06.2015

AWS SDK для Yii2 — используйте Amazon Web Services в своем проекте Yii2

Это расширение обеспечивает интеграцию AWS SDK 3 для платформы Yii2.

Установка

Предпочтительный способ установки этого расширения — через composer.

Либо запустить

php composer.phar требует --prefer-dist fedemotta/yii2-aws-sdk "*"

или добавить

"fedemotta/yii2-aws-sdk": "*"

в требуемый раздел вашего composer.json файла.

Примечание. Вы по-прежнему можете использовать AWS версии 2, если укажете fedemotta/yii2-aws-sdk «1.*»

Применение

Чтобы использовать это расширение, просто добавьте следующий код в конфигурацию вашего приложения:

<?php
return [
//....
'components' => [
    'awssdk' => [
        'class' => 'fedemotta\awssdk\AwsSdk',
        'credentials' => [ //you can use a different method to grant access
            'key' => 'your-aws-key',
            'secret' => 'your-aws-secret',
        ],
        'region' => 'your-aws-region', //i.e.: 'us-east-1'
        'version' => 'your-aws-version', //i.e.: 'latest'
    ],
],
];
?>

Получение всех имен балансировщиков из AWS:

<?php
$aws = Yii::$app->awssdk->getAwsSdk();
$elb = $aws->createElasticloadbalancing();
$load_balancers = $elb->describeLoadBalancers()->toArray();
if (isset($load_balancers['LoadBalancerDescriptions'])){
    foreach ($load_balancers['LoadBalancerDescriptions'] as $balancer){
        if (isset($balancer['LoadBalancerName'])){ 
            echo $balancer['LoadBalancerName'];
        }
    }
}
?>

Загрузите объект из S3:

<?php
//specify the region if it is different than the main configuration region
Yii::$app->awssdk->region = 'sa-east-1';
$aws = Yii::$app->awssdk->getAwsSdk();
//use s3
$s3 = $aws->createS3();
$result = $s3->listObjects(['Bucket' => 'your-bucket-id',
                            "Prefix" =>   "your-path"])->toArray();
//get the last object from s3
$object = end($result['Contents']);
$key = $object['Key'];
$file = $s3->getObject([
'Bucket' => 'your-bucket-id',
'Key' => $key
]);
//download the file
header('Content-Type: ' . $file['ContentType']);
echo $file['Body'];
?>
person Federico Nicolas Motta    schedule 23.04.2015
comment
Ответы только по ссылкам не приветствуются в Stack Overflow. Будет лучше, если вы добавите немного информации. - person arogachev; 23.04.2015
comment
Отредактированный ответ выше. Спасибо за ваши Коментарии. - person Federico Nicolas Motta; 23.04.2015
comment
твой ответ не имеет смысла. зачем балансировщик нагрузки? Парень хочет знать, как загружать, просматривать и удалять файлы на S3 - person Michael Nguyen; 26.06.2015
comment
Парень хочет интегрировать Amazon AWS с yii2. AWS SDK для Yii2 обеспечивает эту интеграцию. Где написано, что он хочет загружать, просматривать и удалять файлы? Это был просто пример использования. - person Federico Nicolas Motta; 26.06.2015
comment
the ... Но когда я пытаюсь создать экземпляр своего клиента S3, он продолжает говорить мне, что AWS не существует .... часть. Однако я считаю, что ваш ответ решает проблему, из-за которой OP не может взаимодействовать с импортированной библиотекой. - person David J Eddy; 09.05.2018

Запустите команду Composer, чтобы установить расширение s3. композитору требуется морозное состояние/yii2-aws-s3 ~1.0@stable

Open common/config/main.php file and add below code into "components" section. "s3bucket" => [ "class" => \frostealth\yii2\aws\s3\Storage::className(), "region" => "Your region", "credentials" => [ "key" => "your aws s3 key", "secret" => "your aws s3 secret", ], "bucket" => "your aws s3 bucket", "defaultAcl" => \frostealth\yii2\aws\s3\Storage::ACL_PUBLIC_READ, "debug" => false, // bool|array ],

Use below code to upload image on s3 $s3 = Yii::$app->get('s3bucket')->upload('upload image name', 'path of local folder where image located');

After uploading you get status code and image url. you can get like below $status = $s3["@metadata"]["statusCode"]; $imageUrl = $s3["@metadata"]["effectiveUri"];
person Patrick R    schedule 23.12.2016

Я повторно импортирую свое расширение с помощью композитора и добавляю

require (\Yii::getAlias('@vendor/autoload.php'));

Каким-то образом я заработал, добавив «автозагрузку» в json composer

"autoload": {
        "psr-4": {
            "vendor\\aws\\" :""
        }
    }

а затем запустить

php composer.phar dumpautoload
person Karate_Dog    schedule 23.04.2015