PHP7.4プラットフォームでElastic Beanstalkを本番運用している奴は誰だ!俺だ!!!
という事でいい加減PHP7.4プラットフォームで動くアプリをPHP8化したい(エンジニア側の都合でDocker化は難しいらしい、Why?)との事でプラットフォームをアップデートしようと思った所、GUI経由ではなぜかAmazon Linux2023のPHP8.2でしか動かない。アプリケーションのマイグレーションの都合、PHP8.1がどうしても使いたかったのでCLIから実行して解決しましたというお話。
なぜPHP8.1がRecommendedなのに選択できないのか?
使う人が減ってきたElastic Beanstalk固有のバグかも。知らんけど。
aws cliで解決する
作業としては2コマンド打つだけで終わります。
- 希望のPlatformのArnを手に入れる
- 上記で手に入れたArnを指定してupdate-environmentを実行
$ aws elasticbeanstalk list-platform-versions --filters='[{"Type":"PlatformBranchName","Operator":"begins_with","Values":["PHP"]}]'
まずこのコマンドでお目当てのPlatformのブランチ名(PHP 8.1 running on 64bit Amazon Linux 2 みたいな)を探します。
JSONのブロック内にPlatformArnが書いてあるのでコピー。
$ aws elasticbeanstalk update-environment --environment-name xxxx-env --platform-arn "arn:aws:elasticbeanstalk:ap-northeast-1::platform/PHP 8.1 running on 64bit Amazon Linux 2/3.5.10"
その後 `update-environment` コマンドでPlatformArnだけ与えて実行してあげると、環境の状態のJSONが返ってくるのでWebコンソールから確認してみてください。
余談
ダウングレードも出来るので、間違ってPlatformを新しくしちゃった場合もCLIが使える。
参考
AWS-CLIのリファレンスって割と不親切な作りしてるよね
- aws elasticbeanstalk list-platform-versionsコマンド
- aws elasticbeanstalk update-environmentコマンド
エンジニアとして働く90年生まれ。Web系技術を追っかけたり、PCガジェットや自転車いじりが趣味。オーディオオタク。