🔍 はじめに
AWS Amplify Hostingでのデプロイ操作を、毎回コンソールから行うのは面倒ですよね。 そこで今回は、AWS CLI(amplifyコマンド)を使って、S3やローカルZIPから自動でデプロイする方法を紹介します。
実際に動作確認済みのコマンドを掲載しているので、そのままコピペで使えます。
📦 前提条件
- AWS CLI がインストール済み(
aws --versionで確認) - Amplify Hosting アプリを作成済み(Git連携なしの「手動デプロイ」タイプ)
- AWS IAM ユーザーに
amplify:*権限があること
🚀 ステップ1:Amplifyのアプリ情報を設定
#!/usr/bin/env zsh
set -euo pipefail
APP_ID="xxxx" # あなたの Amplify App ID
BRANCH="develop" # ブランチ名(Amplifyで作成済み)
REGION="ap-northeast-1"
ZIP_PATH="../deploy.zip" # ローカルZIPファイル
export AWS_PAGER="" # CLIのless出力を無効化
環境変数を一度設定しておくことで、スクリプト内で使い回せます。
🧹 ステップ2:未完了ジョブを停止
running_ids=$(aws amplify list-jobs \
--region "$REGION" --app-id "$APP_ID" --branch-name "$BRANCH" \
--query "jobSummaries[?status=='PENDING'||status=='RUNNING'].jobId" --output text)
if [[ -n "${running_ids:-}" ]]; then
for jid in ${(z)running_ids}; do
aws amplify stop-job --region "$REGION" --app-id "$APP_ID" --branch-name "$BRANCH" --job-id $jid --output text
done
fi
Amplifyのジョブが「PENDING」や「RUNNING」で残っていると新しいデプロイが作成できません。 このコマンドで既存の進行中ジョブを自動停止します。
💾 ステップ3:新しいデプロイを作成(ZIPアップロードURLの取得)
{ read -r JOB_ID; read -r UPLOAD_URL; } < <(
aws amplify create-deployment \
--region "$REGION" \
--app-id "$APP_ID" \
--branch-name "$BRANCH" \
--query 'join(`\n`, [jobId, zipUploadUrl])' \
--output text
)
echo "JOB_ID=$JOB_ID"
echo "UPLOAD_URL=$UPLOAD_URL"
これで一時的な 署名付きURL が発行されます(有効期限3時間)。
📤 ステップ4:ZIPをアップロード
curl --fail --show-error --silent \
-X PUT -T "$ZIP_PATH" "$UPLOAD_URL" \
-H "Content-Type: application/zip"
このコマンドで署名付きURLへ直接ZIPをPUTします。認証不要でOKです。
🏁 ステップ5:デプロイを開始
aws amplify start-deployment \
--region "$REGION" \
--app-id "$APP_ID" \
--branch-name "$BRANCH" \
--job-id "$JOB_ID"
これでAmplify Hostingが自動的にデプロイを実行します。 開始後は、CLIまたはAmplifyコンソールから進捗を確認できます。
🔁 ステップ6(任意):進行状況をポーリング
while :; do
status=$(aws amplify get-job \
--region "$REGION" \
--app-id "$APP_ID" \
--branch-name "$BRANCH" \
--job-id "$JOB_ID" \
--query "job.summary.status" --output text)
echo "Status: $status"
case "$status" in
SUCCEED) echo "✅ Deployment succeeded"; break ;;
FAILED|CANCELED) echo "❌ Deployment $status"; exit 1 ;;
*) sleep 5 ;;
esac
done
これでCLI上から直接デプロイ完了を検知できます。
🎯 まとめ
aws amplify create-deployment→ 一時URL発行curl -T ZIP→ ZIPをアップロードaws amplify start-deployment→ デプロイ開始
この3ステップをスクリプト化すれば、Amplifyコンソールを開かずに1コマンドでデプロイ完了。 CI/CDを組まなくても、ローカルやS3から即デプロイできるのが大きな利点です。
🪶 補足:S3から直接デプロイしたい場合
aws amplify start-deployment \
--region ap-northeast-1 \
--app-id xxxxxx \
--branch-name develop \
--source-url s3://your-bucket/builds/latest.zip \
--source-url-type ZIP
S3にZIPを置く運用をしている場合はこちらが最短です。
📚 関連タグ
.htaccessは階層で引き継がれる?Apacheの挙動を徹底解説
SEO対策に必須!検索上位を狙うsitemap.xmlの完全ガイド
Google Search Consoleの「代替ページ(適切なcanonicalタグあり)」とは?原因と解決法を徹底解説!
Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法
Googleサイト確認のTXTレコードをnslookupで確認する方法【SEO対策】
Googleサーチコンソールに反映されるための最低限のSEO構造とは
【Anker Soundcore Liberty 4】イヤーピース紛失!代替品はAmazonで購入
JavaScriptでタイムゾーン変換!UTCとJST(日本時間)の変換方法
git switchの使い方とgit checkoutとの違い
HTMLとJavaScriptモジュールでクラスを定義し、ボタンから呼び出す方法
JavaScriptでTensorFlow.jsを動的に読み込む方法|HTMLに直接書かずに機械学習を実行する
ffmpegでMOVファイルを逆再生する方法【音声付き対応】
Windows 11でタスクマネージャー以外からアプリを終了させる方法【PowerShell・コマンドプロンプト】
JavaScriptでPCの空き容量やメモリ量を取得できる?Chromeの制限と代替手法
PowerShellでNode.jsの最新バージョン一覧を確認する方法【Volta/Windows対応】
Next.jsでbasePathを/homepage2にしてS3へ静的デプロイする完全手順
NextAuthなし・APIルートなしで実装:Next.js + AWS Amplify だけでメール/パスワード認証を完結する方法
「Next.js pnpm build (ビルド)後の出力ファイルが見当たらない」トラブルシュート&静的デプロイ
AWS Amplify CLIでS3やZIPから手動デプロイ【実行コマンド付き】
Next.jsで複数サイズのPNGファビコンを指定する方法【layout.tsx対応】
Next.jsでのtypeとinterfaceの違いと使い分け方
Next.js useState と useRef の違いは?最適な使い分け
GraphQL接続の落とし穴:Amplify Hosting(amplifyapp.com) vs S3+Next.js(静的書き出し)比較