PHPでAWSのAIサービスを呼び出すには、AWS SDK for PHPを使うのが良い。
これから作業する過程でいくつかのファイルができるので、適当な作業用ディレクトリを作って、その配下で作業すると良い。
mkdir awsai-php
cd awsai-php
SDKのインストール
SDKのインストールにはComposerが必要なので、公式サイトの説明に従い先にインストールしておく。composer.phar
というファイルが1つ、作業ディレクトリの直下に作成される。このcomposer.phar
がComposerのすべて。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
次に、SDKのインストールを行う。SDKは作業ディレクトリ直下のvendor
というディレクトリに配置される。
php composer.phar require aws/aws-sdk-php
認証
AWSコンソールで使用したいサービスの権限を含むIAMユーザーを作成し、認証情報を取得する。
認証の方法はいろいろあるが、ひとまずPHPファイル内に認証情報を書いてしまう方法が手っ取り早い。
<?php
require 'vendor/autoload.php';
use Aws\Rekognition\RekognitionClient;
$credentials = new Aws\Credentials\Credentials('<アクセスキーID>', '<シークレットキー>');
Rekognitionを使用する
HTMLフォームから画像をアップロードし、Rekognitionで分類を行うには、下記のようにする。(先ほどの認証情報のPHPコードの下に続けて書く。)
$options = [
'region' => 'ap-northeast-1',
'version' => 'latest',
'credentials' => $credentials,
];
if (!empty($_FILES)) {
try {
// Rekognitionインスタンスを得る
$rekognition = new RekognitionClient($options);
// detectLabelを行う
$result = $rekognition->detectLabels([
'Image' => [
'Bytes' => file_get_contents($_FILES['image']['tmp_name']),
],
]);
} catch (Exception $e) {
echo $e->getMessage();
}
// 結果の出力
var_dump($result["Labels"]);
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AWS Rekognition Sample</title>
</head>
<body>
<h1>AWS Rekognition Sample</h1>
<form method="post" enctype="multipart/form-data">
<div>
<p>画像ファイル</p>
<input type="file" name="image" id="">
</div>
<div style="margin-top: 2em;">
<input type="submit" value="送信">
</div>
</form>
</body>
</html>