我在AWS sdk中使用了larvel 4。我想添加另一个具有不同密钥和区域的AWS服务。当我只使用一个AWS服务,例如SES时,我将我的密钥放在数组'secret' => 'xxxxxxxxxxxxx',
中的/ app / config / aws / aws-sdk-php-laravel中,一切正常,我想要添加另一个服务,例如S3 。所以我在同一目录中创建自定义配置文件:
configaws.php(使用chmod 777):
require 'vendor/autoload.php';
use Aws\Ses\SesClient;
use Aws\S3\S3Client;
// Create a client that uses the us-west-1 region
$client = SesClient::factory(array(
'key' => 'xxxxx',
'secret' => 'xxxxx',
'region' => 'eu-west-1'
));
$client = S3Client::factory(array(
'key' => 'xxxxx',
'secret' => 'xxxxx',
'region' => 'us-west-2'
));
并在我的config.php文件'config_file' => 'configaws.php',
中使用此行
问题是Laravel无法找到这个文件,我得到了例外情况'无法打开configaws.php进行阅读'。
我的简单问题是我应该将configaws.php
文件放在哪里?
因为我尝试了很多选择,没有什么对我有用。
是否有其他选项可以使用2个不同的密钥进行亚马逊服务?
solution:
I used amazon's service IAM to create new user with permissions for S3 and SES
and used his key for my app.
答案 0 :(得分:0)
如果您使用的是Laravel 4.1+,最好使用dot
文件存储敏感信息。
对于"真实"应用程序,建议将所有敏感配置保留在配置文件之外。应尽可能将数据库密码,条带API密钥和加密密钥等内容保留在配置文件之外。那么,我们应该把它们放在哪里?值得庆幸的是,Laravel使用" dot"提供了一个非常简单的解决方案来保护这些类型的配置项。文件。
假设您的环境为production
,或者您可以通过阅读以下文档来检查您的环境。
http://laravel.com/docs/configuration#environment-configuration
对于生产环境,请在应用程序的项目根目录中创建.env.php
,并添加AWS信息。
// .env.php
<?php
return array(
//SesClient
'AWS_SES_KEY' => 'XXX',
'AWS_SES_SECRET' => 'XXX',
'AWS_SES_REGION' => 'XXX',
//S3Client
'AWS_S3_KEY' => 'XXX',
'AWS_S3_SECRET' => 'XXX',
'AWS_S3_REGION' => 'XXX',
);
现在,当您需要api信息时,请使用PHP的超级全局变量$_ENV
或$_SERVER
来检索信息。例如,要检索Amazon s3 api信息,您可以执行以下操作:
<?php
echo $_ENV['AWS_S3_KEY'];
echo $_ENV['AWS_S3_SECRET'];
有关详细信息,请查看Laravel文档:
http://laravel.com/docs/configuration#protecting-sensitive-configuration