【やりたいこと】
CloudFront署名付きURLを発行したい
参考:【初心者向け】CloudFrontで署名付きURLを発行する【やってみた】
【環境】
AmazonLinux2のEC2インスタンスを作成して、PHPをインストール
参考:AWS EC2上にPHPサイトを立ち上げて、独自ドメインでアクセスできるようにするまでの全手順
【やったこと】
Composerをインストール
参考:AWS SDK for PHPバージョン 3 のインストール
署名付きURL作成用の「test.php」は
【初心者向け】CloudFrontで署名付きURLを発行する【やってみた】
のphpファイルを元に作成しています。
# cd /usr/local/bin
# curl -s https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 2.0.9) successfully installed to: /usr/local/bin/composer.phar
Use it: php composer.phar
# ll
total 2164
-rwxr-xr-x 1 root root 2205196 Feb 18 16:33 composer.phar
-rwxrwxrwx 1 root root 31 Feb 18 16:28 test.php
# ./composer.phar require aws/aws-sdk-php
Using version ^2.8 for aws/aws-sdk-php
./composer.json has been created
Running composer update aws/aws-sdk-php
Loading composer repositories with package information
Updating dependencies
Lock file operations: 3 installs, 0 updates, 0 removals
- Locking aws/aws-sdk-php (2.8.31)
- Locking guzzle/guzzle (v3.9.3)
- Locking symfony/event-dispatcher (v2.8.52)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
- Downloading symfony/event-dispatcher (v2.8.52)
- Downloading guzzle/guzzle (v3.9.3)
- Downloading aws/aws-sdk-php (2.8.31)
- Installing symfony/event-dispatcher (v2.8.52): Extracting archive
- Installing guzzle/guzzle (v3.9.3): Extracting archive
- Installing aws/aws-sdk-php (2.8.31): Extracting archive
7 package suggestions were added by new dependencies, use `composer suggest` to see details.
Package guzzle/guzzle is abandoned, you should avoid using it. Use guzzlehttp/guzzle instead.
Generating autoload files
【躓いたこと】
エラーメッセージ
# php test.php
PHP Fatal error: Class 'Aws\Sdk' not found in /usr/local/bin/test.php on line 22
# ls ./vendor/aws/aws-sdk-php/src/Sdk.php
ls: cannot access ./vendor/aws/aws-sdk-php/src/Sdk.php: No such file or directory
「Aws¥Sdk」クラスがないらしい
(原因を探すこと半日……)
ここに正解があった
バージョン 2 からのアップグレードAWS SDK for PHP
SDK バージョン 3 から
主な相違点:
Aws\Common\Aws ではなく Aws\Sdk クラスを使用します。
よく見たらAWS SDK for PHP 2がインストールされてますね……。
Installing aws/aws-sdk-php (2.8.31): Extracting archive
【解決方法】
AWS SDK for PHP 3をインストールしたい。
AWS SDK for PHPバージョン 3 の要件と推奨事項
PHP 拡張機能AWS SDK for PHPを有効にした PHP バージョン 5.5.0 以降を使用する必要があります。
# php -v
PHP 5.4.16 (cli) (built: Oct 31 2019 18:34:05)
AmazonLinux2に入っているPHPは5.4なので、バージョンアップをしなければならない
参考:Amazon Linux 2でPHP7.2をインストールする
# yum remove php php-*
# amazon-linux-extras install php7.2
# yum install php php-mbstring
AWS SDK for PHP 2を消して3をインストール
# rm -rf ./vendor
# vi composer.json
# cat composer.json
{
"require": {
"aws/aws-sdk-php": "3.*"
}
}
# php composer.phar install
# php composer.phar update
# ls ./vendor/aws/aws-sdk-php/src/Sdk.php
./vendor/aws/aws-sdk-php/src/Sdk.php
# php test.php
https://xxxxxx.cloudfront.net/index.html?Expires=xxxxxxxxxxxxxxxxxxxx
動いた!!