カテゴリー
AWS EC2 IAM PHP

AWS EC2にPHP7.4をインストールする

経緯

テスト環境を作成する為にAmazonLinux2のEC2インスタンス上にPHP7.4をインストールしました。

PHPは最低限のものだけをインストールします。

設定

EC2インスタンスの起動

作成手順は省略します。
今回はテストで使用しますので、インスタンスタイプをt2.microとしました。

PHPのインストール

SSHでEC2インスタンスに接続して下記コマンドを実行します。

# パッケージのアップデート
sudo yum update

# インストールできるトピックを確認
sudo amazon-linux-extras

# php7.4のトピックのレポジトリの有効化
sudo amazon-linux-extras enable php7.4

# メタデータ削除
yum clean metadata

# php7.4インストール
sudo amazon-linux-extras install php7.4

# インストールの確認
php -v
Composerのインストール
# composerのインストール
curl -sS https://getcomposer.org/installer | php

# pharファイルを環境PATH内に移動
sudo mv composer.phar /usr/local/bin/composer
AWS SDKのインストール

テスト用にプロジェクトフォルダを作成して、そこにAWS SDKをインストールします。

# AWS SDKのインストール
mkdir ~/App-test

cd ~/App-test

composer require aws/aws-sdk-php

composer require aws/aws-sdk-phpで下記エラーとなりました。

  Problem 1
    - aws/aws-sdk-php[3.198.0, ..., 3.198.4] require ext-simplexml * -> it is missing from your system. Install or enable PHP's simplexml extension.
    - Root composer.json requires aws/aws-sdk-php ^3.198 -> satisfiable by aws/aws-sdk-php[3.198.0, ..., 3.198.4].

simpexmlのextensionが無いようなのでインストールします。

sudo yum install php-xml

再度実行すると成功しました。

composer require aws/aws-sdk-php

# インストール確認
aws --version
AWS CLIの初期設定

今回はIAMロールでアクセス制限するので、AccessKeyとSecretAccessKeyは未入力としました。

# AWS CLI初期設定
aws configure

AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-1
Default output format [None]: json
IAMロールのアタッチ

検証用にEC2インスタンスにAmazonEC2ReadOnlyAccessのポリシーをアタッチしたロールを割り当てます。

AmazonEC2ReadOnlyAccessのポリシーを選択

[ロール名]:test-ec2-role

手順は省略しますが、作成されたロールをEC2インスタンスにアタッチします。

アタッチ後、下記コマンドを実行して、AWS CLIでEC2インスタンスの情報が取得できることを確認します。

# AWS CLIでEC2インスタンスの情報を取得
aws ec2 describe-instances
phpファイル作成

下記の内容でec2DescribeInstance.phpファイルを作成します。

<?php

require 'vendor/autoload.php';
use Aws\Ec2\Ec2Client;
use Aws\Exception\AwsException;

try{
    $client = new Ec2Client([
        'region' => 'ap-northeast-1',
        'version' => '2016-11-15',
    ]);

    $result = $client->describeInstances();
    var_dump($result);

} catch(AwsException $e){
    error_log($e->getMessage());
}

PHPを実行してEC2インスタンスの情報が取得できることが確認できました。

php ec2DescribeInstance.php

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です