■AWS SDK(バージョン2)
AWSのサービスをプログラムで操作できる
AWS SDK for PHP
https://aws.amazon.com/jp/sdk-for-php/
AWS SDK for PHP v2 で S3 にファイルをアップロード
http://tetsuwo.tumblr.com/post/102677580377/aws-s3-image-upload
2015/12/09時点で、この方法ならPHPからS3にアップロードできた。
■バージョン2の廃止
バージョン2は2019年6月24日に廃止されるので注意
できるだけ早くバージョン3に移行する
【超重要】対応しないと使えなくなるかも?!今、全S3ユーザがチェックすべき署名バージョン2の廃止について | DevelopersIO
https://dev.classmethod.jp/cloud/aws/s3-sigv2-abolition/
廃止予定のS3署名バージョン2によるアクセスを調査する方法まとめ | DevelopersIO
https://dev.classmethod.jp/cloud/aws/how-to-check-s3-signature-ver2/
入っているAWS SDK for PHPのバージョンを雑に調べる - Qiita
https://qiita.com/inouet/items/83ae7bdedd5d7810232f
…だったが、2019年6月15日になって延期された
2020年6月24日以降に作成された新しいバケットは対応が必要となるが、既存のバケットは引き続きそのまま使えるとのこと
Amazon S3 アップデート - SigV2 の廃止時期、延期と変更 | Amazon Web Services ブログ
https://aws.amazon.com/jp/blogs/news/amazon-s3-update-sigv2-deprecation-period-extended-modified/
S3の署名バージョン2(SigV2)の廃止スケジュールが延期、2020年6月以降も既存のS3バケットはSigV2が継続サポートとなりました!! | DevelopersIO
https://dev.classmethod.jp/cloud/aws/s3-sigv2-deprecation-period-extended-20200624/
■稼働中のEC2を取得する例
<?php
require_once 'Aws/vendor/autoload.php';
use Aws\Common\Aws;
try {
//アクセスキーとシークレットアクセスキーとリージョンを指定して接続
$aws = Aws::factory(array(
'key' => 'XXXXX',
'secret' => 'YYYYY',
'region' => 'ap-northeast-1',
));
$client = $aws->get('ec2');
//インスタンスの情報を取得
$result = $client->describeInstances(array(
'Filters' => array(
array(
'Name' => 'instance-state-name',
'Values' => array('running'),
),
)
));
//結果を出力
foreach ($result['Reservations'] as $reservation) {
$instance = $reservation['Instances'][0];
echo 'InstanceId ... ' . $instance['InstanceId'] . '<br />';
echo 'PrivateIpAddress ... ' . $instance['PrivateIpAddress'] . '<br />';
echo '<hr />';
}
} catch (Exception $e) {
exit('Exception: ' . $e->getMessage());
}
■S3のファイルを取得する例
<?php
require_once 'Aws/vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
try {
//アクセスキーとシークレットアクセスキーを指定して接続
$client = S3Client::factory(array(
'key' => 'XXXXX',
'secret' => 'YYYYY',
));
//バケットとファイルを指定して取得
$result = $client->getObject(array(
'Bucket' => 'ZZZZZ',
'Key' => 'images/sample.jpg',
));
//ファイルを表示
header('Content-Type: image/jpeg');
echo $result['Body'];
exit;
} catch (S3Exception $e) {
exit('S3Exception: ' . $e->getMessage());
} catch (Exception $e) {
exit('Exception: ' . $e->getMessage());
}