はじめに
真・三国無双ORIGINSに嵌ってる @___nix___ です。
呂布が強過ぎるので難易度下げました(´・ω・`)
背景
さて、AWSを利用していると頻繁に更新の通知が届きますね。
随時対応していかないと後で大変になるのでしっかりと更新していきましょう。
今回はいきなり期限を 2025年2月10日 に設定された Amplify です。
概要
2025 年 2 月 10 日より、AWS Amplify コンソールはオペレーティングシステムとして Amazon Linux 2023 (AL2023) を使用するようにビルドホスト群をアップグレードします。
現在、ビルドホストのオペレーティングシステムは Amazon Linux 2 (AL2) です。
Amplify Console が提供する AL2 コンテナイメージは AL2023 ホストと互換性があり、操作を必要とせずに引き続き実行されます。
ビルドでホストオペレーティングシステムが AL2 であることを前提としている場合や、AL2023 で削除されたホストオペレーティングシステムの AL2 機能に依存している場合にのみ、buildspec とカスタムイメージの更新が必要になる可能性があります [1]。
これはホストの特定の OS カーネルバージョンにおけるビルドテストに該当する場合があります。
ご質問やご不明点等ございましたら、AWS サポート [2] までお問い合わせください。
[1] https://docs.aws.amazon.com/linux/al2023/ug/deprecated-al2.html
[2] https://aws.amazon.com/support
状況確認
まずは現状確認をしたいですね。
以下のスクリプトで一覧を作成できます。
確認用スクリプト
#!/bin/bash
set -e
regions=("ap-northeast-1" "us-east-1")
echo "| リージョン | アプリ名 | アプリID | ブランチ | ビルドホスト | N/A の理由 |"
echo "|------------|----------|-----------|-----------|--------------|------------|"
for region in "${regions[@]}"; do
apps=$(aws amplify list-apps --region $region --query "apps[].{appId:appId,name:name}" --output json)
if [ "$apps" == "[]" ]; then
continue
fi
echo "$apps" | jq -c '.[]' | while read app; do
appId=$(echo $app | jq -r '.appId')
name=$(echo $app | jq -r '.name')
reason=""
branches=$(aws amplify list-branches --app-id $appId --region $region --query "branches[].branchName" --output json)
if [ "$branches" == "[]" ] || [ "$branches" == "null" ]; then
echo "| $region | $name | $appId | N/A | N/A | ブランチが存在しない |"
continue
fi
branch=$(echo $branches | jq -r '.[0]')
if [ ! -z "$branch" ]; then
latestJob=$(aws amplify list-jobs --app-id $appId --branch-name $branch --region $region --max-items 1 --output json)
jobId=$(echo $latestJob | jq -r '.jobSummaries[0].jobId // empty')
if [ ! -z "$jobId" ]; then
jobDetails=$(aws amplify get-job --app-id $appId --branch-name $branch --job-id "$jobId" --region $region)
buildHost=$(echo "$jobDetails" | jq -r '.job.steps[] | select(.stepName=="BUILD") | .context // empty')
if [ -z "$buildHost" ]; then
buildHost="N/A"
reason="ビルド情報が取得できない"
fi
else
buildHost="N/A"
reason="ビルドジョブが存在しない"
fi
else
buildHost="N/A"
reason="ブランチ名が空"
fi
if [ "$buildHost" == "N/A" ]; then
echo "| $region | $name | $appId | $branch | $buildHost | $reason |"
else
echo "| $region | $name | $appId | $branch | $buildHost | |"
fi
done
done
実行結果
リージョン | アプリ名 | アプリID | ブランチ | ビルドホスト | N/A の理由 |
---|---|---|---|---|---|
ap-northeast-1 | appa | d**** | prod | Image: amplify:al2 | |
ap-northeast-1 | appb | d**** | prod | Image: amplify:al2023 | |
us-east-1 | appc | d**** | prod | N/A | ビルド情報が取得できない |
us-east-1 | appd | d**** | N/A | N/A | ブランチが存在しない |
変更
AWSマネージドコンソール
実は環境変数の _CUSTOM_IMAGE
と連動しています。
AWS CLI
環境変数は Amplify CLI では変更できませんので、AWS CLI を使って直接変更します。
# 1. 現在の設定を取得
aws amplify get-app --app-id <app_id> --region <region> > app_config.json
# 2. _CUSTOM_IMAGEの値を更新
jq '.app.environmentVariables._CUSTOM_IMAGE = "amplify:al2023"' app_config.json > updated_config.json
# 3. 環境変数を更新
aws amplify update-app \
--app-id <app_id> \
--region <region> \
--environment-variables "$(jq -c '.app.environmentVariables' updated_config.json)"
終わりに
「更新作業がこれだけ多くなってくるとオンプレと変わらないじゃないか」なんて感じる方もおられるのでしょうか。
でもマネージドサービスを正しく使った方が固定費+人件費の合計は間違い無くクラウドが勝つと思ってます。
一言
政界やメディア、元気が出るような話題が中々無いですね。
ホワイトナイトの登場を心より期待してます、はい。(他力本願)
この記事良かったと少しでも思って頂けたら是非 @___nix___ をフォローしてあげてください。或いは記事に対してリアクションをお願い致します。