EC2 上に PHP での AWS-SDK 利用環境を作ってみる

Yossy
2023-03-20
2023-03-20

EC2 (Amazon Linux 2) に、 PHP8.0とComposer をインストーして、AWS-SDK 利用環境の構築を目指します。

(1) EC2 を起動します。

検証用なので、とりあえずの設定で起動します。

・t2.micro / Amazon Linux 2
・ログイン用のキーペアは新規で作成
・セキュリティーグループは新規作成 (SSH で接続できるようにしてくれます)

上記だけ設定入れて、EC2 を起動します。その後、ユーザー名を ec2user、キーペアで作成した鍵を利用して EC2 にログインします。
この後、以下の手順で PHP で AWS-SDK が使えるようにしていきます。

(2) php 8.0 インストール (8.2 とかは、別の方法が必要なようです)
 

> sudo amazon-linux-extras install php8.0


(3) composer インストール (wget とか使ってもいいのかも)

> php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
> php composer-setup.php
> php -r "unlink('composer-setup.php');"
> sudo mv composer.phar /usr/local/bin/composer


(4) php 用の aws-sdk インストール

> composer require aws/aws-sdk-php
> composer require ext-simplexml

※CredentialProvider を利用するのに、smimplexml ライブラリがないとエラーになったので、それもインストールしておきます。

(5) AWS-SDK を利用して認証情報を作成します。

認証情報は、いくつかの仕組み(プロバイダー)で取得することができるようなのですが、今回は ini ファイルから読み取る仕組みとしたいと思います。

【参考】https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/guide_credentials_provider.html

<?php
require __DIR__ . '/vendor/autoload.php';
use Aws\Credentials\CredentialProvider;

// 認証情報 (ini プロバイダー指定)
$provider = CredentialProvider::ini('default', __DIR__.'/credentials.ini');
$provider = CredentialProvider::memoize($provider);

credentials.ini ファイルは、以下のように記述しておきます。**** の部分は、IAM ユーザーの画面から、アクセスキーを設定したものを利用します。
※アクセスキーを使うことの是非はありそう?あと、この例では、credentials.ini を、PHP ファイルと同一フォルダに置いてますが、実際の運用ではきちんとセキュリティー的に問題の場所に置くのがよさそうです。Laravel とかだと、.env とかに書くのがいいのかな?

[default]
aws_access_key_id = '**********'
aws_secret_access_key = '**********'

上記設定で、とりあえず、EC2 上から AWS-SDK を利用できるようになりましたので、AWS-SDK を色々利用してみたいと思います。