laravel 4:aws - 使用自定义配置文件

时间:2014-07-12 09:37:15

标签: amazon-web-services laravel-4 config

我在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. 

1 个答案:

答案 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