有没有办法使用Laravel AWS SDK设置DynamoDB Local?

时间:2015-09-15 18:49:42

标签: php laravel amazon-web-services amazon-dynamodb dynamo-local

我在尝试使用当前的laravel项目启动和运行DynamoDB Local时遇到了问题。

Laravel AWS SDK允许在.env文件中设置几个密钥来更改密钥/机密/区域,但似乎不支持更改端点,并且需要使用DynamoDB Local(密钥)选项在这里自述:https://github.com/aws/aws-sdk-php-laravel)。

常规PHP SDK的documentation似乎非常简单,关于如何设置Dynamo DB Local:

$client = DynamoDbClient::factory(array(
    'profile' => 'default',
    'region' => 'us-west-2', #replace with your desired region
    'endpoint' => 'http://localhost:8000'
));

使用Laravel AWS SDK,我无法直接访问DynamoDBClient,而无需破解生产DynamoDB连接所需的大量内容。

例如,使用Laravel AWS SDK,可以通过以下方式访问DynamoDB:

$dynamoDB = AWS::get('DynamoDb');

我真的在寻找可以改变的环境变量,以便我可以轻松地在制作和本地之间切换,但我找不到它。

有没有简单的方法可以使用Laravel AWS SDK设置DynamoDB Local?

1 个答案:

答案 0 :(得分:1)

我最终得到这个的方法是创建我自己的环境变量,然后检查它是否在我获得DynamoDBClient时设置。

AWS::get('DynamoDb')

以上内容返回自动使用您的AWS配置的DynamoDBClient。

因此,我检查了env变量,如果设置了env变量,则返回带有本地配置的DynamoDBClient。我不得不使用Aws DynamoDBClient类:

use Aws\DynamoDb\DynamoDbClient;

然后我做了:

if( env("DYNAMODB_LOCAL")) {
    $this->client = DynamoDbClient::factory(array(
        'key' => 'YOUR_KEY', // Doesn't actually matter what it is since it won't be verified
        'secret' => 'YOUR_SECRET', // Doesn't actually matter what it is since it won't be verified
        'profile' => 'default',
        'region' => 'us-west-2', #replace with your desired region
        'endpoint' => 'http://localhost:8000' // Replace if your local endpoint is different than default
    ));
}
else {
    $this->client = AWS::get('DynamoDb');
}

如果Laravel AWS SDK为DynamoDB Local提供了某种简单的环境配置,那会很不错,但这似乎适用于我的用途。