我应该在哪里将AWS凭据集成到我的php框架中?
我正在使用php迷你框架 现在我在控制器的index方法中有以下内容。但感觉最好将它放在我的config/config.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'
// 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');