AWS Amplify CLIでS3やZIPから手動デプロイ【実行コマンド付き】

2025年版|AWSコンソールにログインせず、CLIだけでAmplifyデプロイを完結させる方法

🔍 はじめに

AWS Amplify Hostingでのデプロイ操作を、毎回コンソールから行うのは面倒ですよね。 そこで今回は、AWS CLI(amplifyコマンド)を使って、S3やローカルZIPから自動でデプロイする方法を紹介します。

実際に動作確認済みのコマンドを掲載しているので、そのままコピペで使えます。


📦 前提条件


🚀 ステップ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上から直接デプロイ完了を検知できます。


🎯 まとめ

この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の挙動を徹底解説

MBTI診断

SEO対策に必須!検索上位を狙うsitemap.xmlの完全ガイド

Google Search Consoleの「代替ページ(適切なcanonicalタグあり)」とは?原因と解決法を徹底解説!

Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法

Googleサイト確認のTXTレコードをnslookupで確認する方法【SEO対策】

Googleサーチコンソールに反映されるための最低限のSEO構造とは

PHPで複数ファイルを順番に削除する方法

MBTI診断 | あなたの性格タイプを分析

PDFファイル結合|パスワード設定ツール

【Anker Soundcore Liberty 4】イヤーピース紛失!代替品はAmazonで購入

JavaScriptでタイムゾーン変換!UTCとJST(日本時間)の変換方法

pnpmとは?npmとの違いとインストール方法

git switchの使い方とgit checkoutとの違い

HTMLとJavaScriptモジュールでクラスを定義し、ボタンから呼び出す方法

JavaScriptでTensorFlow.jsを動的に読み込む方法|HTMLに直接書かずに機械学習を実行する

ChatGPT風リンクバッジをCSSで作成する

ffmpegでMOVファイルを逆再生する方法【音声付き対応】

Windows 11でタスクマネージャー以外からアプリを終了させる方法【PowerShell・コマンドプロンプト】

macOSでドメイン名から情報を取得する方法【初心者向け】

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(静的書き出し)比較

Homebrewの「update」と「upgrade」の違い+バージョン確認方法|Macのパッケージ管理

.DS_StoreをGitでアップしない方法|macユーザー向け