Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在哪里将AWS凭据集成到我的php框架中?_Php_Amazon S3 - Fatal编程技术网

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

我应该在哪里将AWS凭据集成到我的php框架中?,php,amazon-s3,Php,Amazon S3,我正在使用php迷你框架 现在我在控制器的index方法中有以下内容。但感觉最好将它放在我的config/config.php文件中。如何做到这一点,以便在控制器/模型中使用它 // Instantiate the S3 client with your AWS credentials $client = S3Client::factory(array( 'key' => 'YOUR_AWS_ACCESS_KEY_ID', 'secret'

我正在使用php迷你框架

现在我在控制器的index方法中有以下内容。但感觉最好将它放在我的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',
    ));
在service builder中使用配置文件

我将此代码放在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” 配置必须作为数组或集合提供。'


请阅读AWS SDK for PHP用户指南的一节。该页的第1、2和3部分介绍了设置凭据的技术,而无需将凭据放入应用程序的代码或repo中。

您是否尝试过要求composer自动加载程序

需要“vendor/autoload.php”


然后您可以在项目中的任何地方实例化您的客户机

请不要使用panique的代码作为示例。这很糟糕,与MVC架构模式无关。这是最好的方法。我的首选是
与service builder一起使用配置文件
。本文档还特别说明了您的问题“。但是,请注意不要在应用程序中硬编码您的凭据。硬编码您的凭据可能是危险的,因为很容易意外地将您的凭据提交到SCM存储库中,从而可能将您的凭据暴露给比预期更多的人。这也会使将来轮换凭证变得困难。”我现在用两种方法进行了测试(更新了我的问题)但它不起作用。我做错了什么?猜测错误是因为我不知道应该在代码中的何处实例化客户端。配置文件仅用于
Aws\Common\Aws
类,看起来您混淆了文档中的两个代码示例。请尝试以下方法:使用Aws\Common\Aws;$Aws=Aws::factory('APP./config/config.php');$s3Client=$aws->get('s3');