ニフティクラウドとAWSを併用する方法

このガイドでは、このSDKを利用して、AWSとニフティクラウドを併用する方法について解説します。

はじめに

ニフティクラウド (2013年12月9日現在) が API を提供しているエンジニアリングパーツの機能 (サービス) は下記の3つがあります。

  1. RDB: AWS RDS 相当
  2. メッセージキュー: AWS SQS 相当
  3. DNS: AWS Route53 相当

この SDK が現時点で機能的な差分を吸収し、対応しているものは RDB と MQ の2つです。 ですが、基本的には ニフティクラウド エンジニアリングパーツ AWS と互換性がありますので、差分表にない機能は利用可能です。

ニフティクラウド インスタンスの作成

インスタンスの生成を行う方法は クイックスタート と同様です。 異なっている点は 必ずエンドポイント ( base_url ) を設定しなければならない ことです。

ニフティクラウドで指定できるエンドポイントの一覧は こちら を御覧ください。

<?php

// Composer autoloader を利用した SDK の読み込み
require 'vendor/autoload.php';

use Aws\Sqs\SqsClient;

// ニフティクラウド 証明書とエンドポイント を与えて MQ (Sqs) をインスタンス化
$niftyClient = SqsClient::factory(array(
    'key'      => 'your-niftycloud-access-key-id',
    'secret'   => 'your-niftycloud-secret-access-key',
    'base_url' => 'niftycloud-endpoint',
    'region' => 'jp-east-1',
));

注: エンドポイントを指定しているので厳密にはリージョンの指定は不要ですが、AWSとの互換性のため指定が必須となっています。

クライアントから各種の操作は AWS と同様に利用することが可能です。

ニフティクラウド と AWS の併用

ニフティクラウド と AWS のサービスを併用するためには、クライアントを2つ生成し、それらを使い分けることで容易に行うことができます。 注意しなければならないことは、 設定 で説明したように aws-config.php では一方しか利用することができません。そのためどちらかは明示的に指定する必要があります。

ただし、異なるサービスを利用する場合には次のコードのように記述することでひとつの aws-config.php で指定することができます。 次のコードは基本的には ニフティクラウド を利用し、指定したサービス (elasticmapreduce) は AWS を利用するという設定です。

<?php return array(
    'services' => array(
        'default_settings' => array(
            'params' => array(
                'key'      => 'your-niftycloud-access-key-id',
                'secret'   => 'your-niftycloud-secret-access-key',
                'base_url' => 'niftycloud-endpoint',
                'region'   => 'jp-east-1'
            )
        ),
        'dynamodb' => array(
            'key'    => 'your-aws-access-key-id',
            'secret' => 'your-aws-secret-access-key',
            'region' => 'us-west-2'
        )
    )
);

aws-config.php を利用するか、直接指定するかのどちらかで生成したクライアントを利用する具体的なコードは次のようになります。

<?php

use Aws\DynamoDb\DynamoDbClient;
use Aws\Sqs\SqsClient;

$mapReduceAWSClient = DynamoDbClient::factory();
# or
$mapReduceAWSClient = DynamoDbClient::factory(array(
    'key'      => 'your-aws-access-key-id',
    'secret'   => 'your-aws-secret-access-key',
    'region'   => 'us-east-1',
));


$mqNIFTYCloudClient = SqsClient::factory();
# or
$mqNIFTYCloudClient = SqsClient::factory(array(
    'key'      => 'your-niftycloud-access-key-id',
    'secret'   => 'your-niftycloud-secret-access-key',
    'base_url' => 'niftycloud-endpoint',
    'region'   => 'jp-east-1',
));

このようにすることで、 ニフティクラウド と AWS のふたつのサービスをハイブリッドに利用することが可能です。