AWS

「AWS SDK for PHP 3.x」を使ってDynamoDBにテーブルを作成する

AWS EC2 にPHP7.1と「AWS SDK for PHP3.x」を使ってDynamoDBにテーブルを作成する方法です。

 

接続するユーザーは 、IAMでユーザー登録したユーザを使います。

 

 

 

Amazon Web Servicesのコンソールに接続してIAMでユーザーを作成

ユーザーを作成するのはアクセスキーでPHPのプログラムからDynamoDBにアクセスするためです。

 

今回は「dynamodb」というユーザーを作成しました。

アクセスとしては、「AmazonDynamoDBFullAccess」ポリシーをアタッチしました。

 

アクセスキーが取得できたら、~/.aws/credentialsファイルを編集します。

以下を追記します。

[profile1]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

 

 

 

AWS SDK for PHPのセットアップ

今回はテストなので、Apacheで公開されないところにセットアップしました。

わたしは、/var/www/php_libs/classというディレクトリを作成し、/var/www/php_libs/classにcdしてから作業を行っています。

作業はec2-userで行いますので、このディレクトリにはec2-userの書込権限などを前もって与えておいてください。

$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar require aws/aws-sdk-php

 

/var/www/php_libs/class/vendorというフォルダーが作成され、その中にawsフォルダーが作成されていればセットアップ完了となります。

 

 

 

DynamoDBにテーブルを作成するPHPプログラム

CreateTable.phpとファイル名で作成します。

<?php
require ‘vendor/autoload.php’;

date_default_timezone_set(‘UTC’);

$sdk = new Aws\Sdk([
    ‘profile’ => ‘profile1’,
    ‘endpoint’ => ‘http://dynamodb.ap-northeast-1.amazonaws.com/’,
    ‘region’ => ‘ap-northeast-1’,
    ‘version’ => ‘latest’ ]);

$dynamodb = $sdk->createDynamoDb();

$params = [
    ‘TableName’ => ‘Movies’,
    ‘KeySchema’ => [
        [
            ‘AttributeName’ => ‘year’,
            ‘KeyType’ => ‘HASH’ //Partition key
        ],
        [
            ‘AttributeName’ => ‘title’,
            ‘KeyType’ => ‘RANGE’ //Sort key
        ]
    ],
    ‘AttributeDefinitions’ => [
        [
            ‘AttributeName’ => ‘year’,
            ‘AttributeType’ => ‘N’
        ],
        [
            ‘AttributeName’ => ‘title’,
            ‘AttributeType’ => ‘S’
        ],
    ],
    ‘ProvisionedThroughput’ => [
        ‘ReadCapacityUnits’ => 10,
        ‘WriteCapacityUnits’ => 10
    ]
];
$result = $dynamodb->createTable($params);
var_dump($result);

profileを指定しているところが重要です。

これを省くと[default」が利用されます。

 

実行します。

$ php CreateTable.php

 

 

NoSQLはとても進歩が早いのでしっかりした技術を身につけておきましょう