Symfony2 Amazon SDK动态设置凭据

时间:2012-03-15 03:42:11

标签: php symfony amazon-web-services

我已经Amazon SDK Symfony2 配合得很好。它涉及将sdk.class.php权限加载到autoload.php。我不确定这是不是最好,但似乎是。

但我的主要问题是加载凭证。 亚马逊也希望你...... 修改config.inc.php并将其放在vendor directoryHOME中。选项1不好,因为它涉及修改将在更新时被覆盖的Repo,而HOME不起作用,因为它在我的项目目录之外。

我现在正在做什么, autoload.php 内正在加载sdk.class.php,然后正在运行CFCredentionals:set(array()); ..我的代码在下面。通常我想要做一个依赖注入或使用参数..但我无法弄清楚任何其他方式来加载凭据。此外,我不想在实例化服务时加载它们。比如$e3 = new AmazonE3(array($a,$s));。它是如此清晰和流线型,以预先加载凭据,因此您可以使用$e3 = new AmazonE3();

所以这是有效的 - 但必须有更好的方法

 require_once __DIR__. '../../vendor/AmazonPHPSDK/sdk.class.php';
    CFCredentials::set(array(
       '@default' => array(
            'key' => '1dfXXXXXXXXXXXXXXXXXXXXXZ82',
            'secret' => '8tCXXXXXXXXXXXXXXXXXXXXXXfjB+Q',
            'default_cache_config' => 'apc',
             'certificate_authority' => false
        )));

亚马逊希望我们如何加载凭据并没有错。它只是似乎与Symfony2框架不太合适。在autoload.php中使用具有访问凭据的数组似乎不正确。

1 个答案:

答案 0 :(得分:2)

为什么不使用类似AmazonWebServicesBundle的内容,它可以通过parameters.iniconfig.yml进行配置?


此文档为here-link。目前,通过parameters.iniconfig.yml设置凭据的步骤在步骤6中,它看起来像这样..

// app/config/parameters.ini
[parameters]
    ...

    ; Amazon Web Services Configuration. Found in the AWS Security Credentials.
    aws_key                        = YOUR_KEY
    aws_secret                     = YOUR_SECRET_KEY
    aws_account_id                 = YOUR_ACCOUNT_ID
    aws_canonical_id               = YOUR_CONONICAL_ID
    aws_canonical_name             = YOUR_CONONICAL_NAME
    aws_mfa_serial                 = YOUR_MFA_SERIAL
    aws_cloudfront_keypair_id      = YOUR_CLOUDFRONT_KEYPAIR_ID
    aws_cloudfront_private_key_pem = YOUR_CLOUDFRONT_PRIVATE_KEY_PEM