ついでに、AWSの起動停止をMacのメニューバーから行う。
AWSでVPNを構成して使っているんだけど、使っていない時は止めておきたい。
10分使ってないと自動的に止める処理入れているんだけど、VPNを使う時は稼働させたい。
そこで、Macで、VPNのインスタンスの稼働状況を見れるようにすると同時に、起動停止を行えるようにした。

まずは、AWS CLIをインストール
brew install awscli
aws configureaws 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 textSwiftBar 入れる
スクリプトをこのフォルダに置く
~/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のメニューバーでコントロール可能になる。