3

現在の laravel プロジェクトで DynamoDB Local を起動して実行しようとして問題が発生しました。

Laravel AWS SDK では、いくつかのキーを .env ファイルに設定してキー/シークレット/リージョンを変更できますが、エンドポイントの変更をサポートしていないようで、DynamoDB ローカルを使用するために必要になります (キー オプションはここの readme: https://github.com/aws/aws-sdk-php-laravel )。

Dynamo DB Local のセットアップ方法については、通常の PHP SDKのドキュメントに非常にわかりやすく書かれています。

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

Laravel AWS SDK では、本番 DynamoDB 接続に必要な一連のものをハッキングせずに DynamoDBClient に直接アクセスすることはできません。

たとえば、Laravel AWS SDK では、次のような方法で DynamoDB にアクセスします。

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

プロダクションとローカルを簡単に切り替えることができるように変更できる環境変数のようなものを本当に探していますが、見つかりません。

Laravel AWS SDK を使用して DynamoDB Local をセットアップする簡単な方法はありますか?

4

2 に答える 2

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 用の簡単な環境設定が付属していればよかったのですが、これは私の用途ではうまくいくようです。

于 2015-09-15T19:42:28.840 に答える