Где я должен интегрировать учетные данные AWS в мою среду php?

0

Я использую php mini framework https://github.com/panique/mini

Сейчас у меня есть следующий метод индекса в моем контроллере. Но похоже, что лучше иметь его в файле config/config.php. Как это сделать, чтобы я мог использовать его в моем контроллере/модели?

// Instantiate the S3 client with your AWS credentials
        $client = S3Client::factory(array(

        'key' => 'YOUR_AWS_ACCESS_KEY_ID',
        'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',

        ));

Обновить

Я проверил два разных метода, но он не работает. Мои ключи, конечно, правильные.

Использование файлов учетных данных AWS и учетных данных

Создал новый файл в ~/.aws/credentials/credentials.ini со следующим кодом:

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

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

use Aws\S3\S3Client;    
$s3Client = S3Client::factory(array(
        'profile' => 'default',
        'region'  => 'us-west-1',
    ));

Использование файла конфигурации с помощью сервис-строителя

Я поместил этот код в config.php

return array(
    // Bootstrap the configuration file with AWS specific features
    'includes' => array('_aws'),
    'services' => array(
        // All AWS clients extend from 'default_settings'. Here we are
        // overriding 'default_settings' with our default credentials and
        // providing a default region setting.
        'default_settings' => array(
            'params' => array(
                array(
                    'credentials' => array(
                        'key'    => 'YOUR_AWS_ACCESS_KEY_ID',
                        'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
                    )
                ),
                'region' => 'us-west-1'
            )
        )
    )
);

И в моем контроллере, где я, чтобы получить доступ к aws, я пишу это в верхней части файла.

use Aws\S3\S3Client;
$s3Client = S3Client::factory('APP . '/config/config.php');
$client = $s3Client->get('s3');

Но я получаю сообщение об ошибке

Неустранимая ошибка: исключить исключение "Aws\Common\Exception\InvalidArgumentException" с сообщением "Конфигурация должна быть предоставлена в виде массива или коллекции".

  • 1
    Пожалуйста, не используйте код Panique в качестве примера. Это ужасно и не имеет ничего общего с архитектурным паттерном MVC.
Теги:
amazon-s3

2 ответа

0

Попробовали ли вы, чтобы автозагрузчик композитора

require 'vendor/autoload.php'

Затем вы можете создать экземпляр своего клиента в любом месте вашего проекта

0

Прочтите раздел " Предоставление учетных данных" в разделе SDK руководства AWS SDK для PHP. Части 1, 2 и 3 на этой странице описывают методы настройки ваших учетных данных, не помещая их в код приложения или репо.

  • 0
    Это лучший способ. Я предпочитаю Using a configuration file with the service builder Также в этом документе конкретно говорится о вашей озабоченности ». Однако будьте осторожны, чтобы не жестко закодировать ваши учетные данные в ваших приложениях. Кодирование ваших учетных данных может быть опасным, поскольку его легко случайно зафиксируйте ваши учетные данные в репозитории SCM, потенциально открывая ваши учетные данные большему количеству людей, чем предполагалось. Это также может затруднить поворот учетных данных в будущем ».
  • 0
    Сейчас я проверил двумя способами (обновил мой вопрос), но это не работает. Что я делаю неправильно? Предполагаю, что ошибка в том, что я не знаю, где в моем коде я должен создать экземпляр клиента.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню