我应该在哪里将AWS凭据集成到我的php框架中?

时间:2015-02-20 09:56:26

标签: php amazon-s3

我正在使用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',带有消息'The   config必须作为数组或集合提供。'

2 个答案:

答案 0 :(得分:0)

请阅读AWS SDK for PHP用户指南的Providing Credentials to the SDK部分。该页面上的第1,2和3部分介绍了设置凭据的技巧,而无需将其放入应用程序的代码或存储库中。

答案 1 :(得分:0)

您是否尝试过使用composer autoloader

require 'vendor/autoload.php'

然后,您可以在项目的任何位置实例化您的客户端