LoginSignup
6
6

More than 5 years have passed since last update.

DynamoDBLocalとAWS SDK for PHP2でごにょごにょする1 - 接続

Last updated at Posted at 2015-03-02

DynamoDB Localを使ってみるにてとりあえず動作確認はできたので、
次はPHPを使って色々と触ってみようと思います。

まずはAWS SDK for PHP2を用意します。

環境


  • VirtualBox 4.3
  • ubuntu 14.04
  • PHP 5.5.9-1ubuntu4.5 (cli)

PHP ComposerでAWS SDK for PHP2をインストールする


composer.json
$ cd ~
$ vim composer.json
-----
{
    "require": {
        "guzzle/guzzle": "3.9.*",
        "aws/aws-sdk-php": "2.6.*"
    }
}
-----
$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar install

接続クラスを作ってみる


DynamoDB.class.php
<?php
require_once "../vendor/autoload.php";
use Aws\Common\Enum\Region;
use Aws\DynamoDb\DynamoDbClient;
class DynamoDB
{
    public static function conn(){
        return DynamoDBClient::factory(array(
            'key' => 'aws_key',
            'secret' => 'aws_secret_key',
            'region' => Region::TOKYO,
            'base_url' => 'http://localhost:8000'
        ));
    }
}

※「require_once」で取得したAWS SDK for PHP2のライブラリを指定します
※「base_url」にはDynamoDB Localを起動したときのポートを指定します。
※「key」「secret」は本来発行された値を利用しますが、Localの場合は上記でも構わないようです

DynamoDB Localに接続してみよう


DescribeTable.class.php
<?php
require_once 'DynamoDB.class.php';
class DescribeTable{
    private $dynamo;
    public function __construct() {
        $this->dynamo = DynamoDB::conn();
    }

    public function execute() {
        $param = array(
            'TableName' => 'test'
        );
        try {
            $result = $this->dynamo->describeTable($param);
        } catch (DynamoDbException $e) {
            print $e;
        }
    }
}
$describeTable = new DescribeTable;
$describeTable->execute();
$ php DescribeTable.class.php
PHP Fatal error:  Uncaught Aws\DynamoDb\Exception\ResourceNotFoundException: AWS Error Code: ResourceNotFoundException, Status Code: 400, AWS Request ID: d4227200-37d7-4960-88fb-ac1275f3f5c9, AWS Error Type: client, AWS Error Message: Cannot do operations on a non-existent table …

まだテーブルを作成していないので「test」というテーブルは無い(non-existent table)
と表示されます。

どうやら接続は問題無さそうです。
次はテーブルを作成してみます。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6