ついでに、AWSの起動停止をMacのメニューバーから行う。

AWSでVPNを構成して使っているんだけど、使っていない時は止めておきたい。

10分使ってないと自動的に止める処理入れているんだけど、VPNを使う時は稼働させたい。

そこで、Macで、VPNのインスタンスの稼働状況を見れるようにすると同時に、起動停止を行えるようにした。

まずは、AWS CLIをインストール

brew install awscli
aws configure

aws configureをするとアクセスキーとシークレットキーを聞かれる。

アクセスキーは、IAMで、ユーザーを作成

作成すると、アクセスキーとシークレットキーがもらえる。
この際に、シークレットキーはこの時しか取れないのでメモを残しておくといい。
もしもメモを忘れたら、作成しなおしで。

作成後許可を追加で、

AmazonEC2FullAccess
AmazonEC2ReadOnlyAccess
IAMUserChangePassword

この3個を有効にしておく

それと、inputとoutputを聞かれる。
ここは、
ap-northeast-1

json

万が一間違えた時は、
vi ~/.aws/config 
で修正する。

[default]
region = ap-northeast-1
output = json

状態を確認

aws ec2 describe-instances \
--instance-ids i-xxxxxxxx \
--query "Reservations[].Instances[].State.Name" \
--output text

SwiftBar 入れる

https://swiftbar.app

スクリプトをこのフォルダに置く

~/Library/Application Support/SwiftBar/Plugins/

~/Libraryは、隠しファイルなので、見えるようにしておくと便利。
やり方は調べて。

それと、アプリを起動すると、勝手に SwiftBar/Plugins/ ができるような説明があるけど、一般的な環境だと勝手には作られないので、自分で作る必要がある。


それと、SwiftBar にセキュリティでFullAccessを許可しておくように。

スクリプト名は、
ec2.1m.sh

ファイル名が意味があるので注意。 1mは1分ごとにリフレッシュの意味みたい。

chmod +x ec2.1m.sh

で実行権限を与える。

中身は、

#!/bin/bash
INSTANCE_ID="i-xxxxxxxxxxx"
REGION="ap-northeast-1"
STATUS=$(aws ec2 describe-instances \
  --region $REGION \
  --instance-ids $INSTANCE_ID \
  --query "Reservations[].Instances[].State.Name" \
  --output text | tr -d '\r\n\t')
case "$STATUS" in
  running)
    echo "🟢 Running"
    ;;
  stopped)
    echo "🔴 Stopped"
    ;;
  stopping)
    echo "🟡 Stopping..."
    ;;
  pending)
    echo "🟡 Starting..."
    ;;
  *)
    echo "⚪ Unknown: $STATUS"
    ;;
esac
echo "---"
# ===== メニュー =====
echo "Status: $STATUS"
if [[ "$STATUS" == "running" ]]; then
  echo "Stop Instance | bash='$0' param1=stop terminal=false refresh=true delay=5"
else
  echo "Start Instance | bash='$0' param1=start terminal=false refresh=true delay=5"
fi
echo "Refresh | refresh=true"
# ===== アクション =====
if [[ "$1" == "stop" ]]; then
  aws ec2 stop-instances --region $REGION --instance-ids $INSTANCE_ID 
elif [[ "$1" == "start" ]]; then
  aws ec2 start-instances --region $REGION --instance-ids $INSTANCE_ID
fi

追記

2台目のMacBook AIRにもいれたら、動かなくて Unknown になった。
これは環境の差らしい。

その時は、ファイルのトップにこれを追加する。

export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
export AWS_PROFILE=default
export AWS_DEFAULT_REGION=ap-northeast-1


これで、Macのメニューバーでコントロール可能になる。