概要
PHPでAWSを使うことがあったので調べた内容をメモしておく
AWS SDK for PHP
最新だと3.53のようなので、それと使ってみる。
phpのComposerを使ってインストールします。
ターミナル
$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar require aws/aws-sdk-php
まずやってみる
とりあえず、接続してデータを取ってきてみる。
example1.php
<?php
require __DIR__ . '/vendor/autoload.php';
use Aws\S3\S3Client;
// AWSのS3からCSVファイルを取得する
$client = Aws\S3\S3Client::factory([
'credentials' => [
'key' => '***************',
'secret' => '********************************',
],
'region' => 'ap-northeast-1',
'version' => 'latest'
]);
$result = $client->getObject([
'Bucket' => 'hoge-data',
'Key' => 'goods/20180101.csv'
]);
// CSVファイルの中身を取得する
$data = array();
if ($result['Body']) {
$stream = $result['Body'];
$stream->rewind();
$csv = $stream->getContents();
$fp = tmpfile();
fwrite($fp, $csv);
rewind($fp);
while ($row = fgetcsv($fp, 4096)) {
$data[] = $row
}
fclose($fp);
}
var_dump($data);
credentials情報を分離する (credentials.ini)
credentials情報をPHPファイルに記述したくないので、分離してみる。
credentials.ini
[default]
aws_access_key_id = '****************'
aws_secret_access_key = '**************************'
example2.php
<?php
require __DIR__ . '/vendor/autoload.php';
use Aws\Credentials\CredentialProvider;
// AWSのS3からCSVファイルを取得する
$ini = __DIR__ . '/credentials.ini';
$iniProvider = CredentialProvider::ini('default', $ini);
$iniProvider = CredentialProvider::memoize($iniProvider);
$client = new Aws\S3\S3Client([
'credentials' => $iniProvider,
'region' => 'ap-northeast-1',
'version' => 'latest'
]);
$result = $client->getObject([
'Bucket' => 'hoge-data',
'Key' => 'fuga/20180101.csv'
]);
// CSVファイルの中身を取得する
$data = array();
if ($result['Body']) {
$stream = $result['Body'];
$stream->rewind();
$csv = $stream->getContents();
$fp = tmpfile();
fwrite($fp, $csv);
rewind($fp);
while ($row = fgetcsv($fp, 4096)) {
$data[] = $row
}
fclose($fp);
}
var_dump($data);
credentials情報を分離する (~/.aws/credentials)
credentials情報をPHPファイルに記述したくないので、分離してみる。
~/.aws/credentials
[default]
aws_access_key_id = '****************'
aws_secret_access_key = '**************************'
example3.php
<?php
require __DIR__ . '/vendor/autoload.php';
use Aws\Sdk;
// AWSのS3からCSVファイルを取得する
$sdk = new Sdk([
'profile' => 'default',
'region' => 'ap-northeast-1',
'version' => 'latest'
]);
$client = $sdk->createS3();
$result = $client->getObject([
'Bucket' => 'hoge-data',
'Key' => 'fuga/20180101.csv'
]);
// CSVファイルの中身を取得する
$data = array();
if ($result['Body']) {
$stream = $result['Body'];
$stream->rewind();
$csv = $stream->getContents();
$fp = tmpfile();
fwrite($fp, $csv);
rewind($fp);
while ($row = fgetcsv($fp, 4096)) {
$data[] = $row
}
fclose($fp);
}
var_dump($data);