WindowsのGit BashでAWS CLIコマンドを実行する際に発生するパスの問題は、通常Git Bashの動作によるものです。Git Bashは、WindowsのファイルパスをUNIXスタイルに変換するよう試みることがあります。その結果、スラッシュ(”/”)が含まれるパスが意図しない形式に変換される可能性があります。
この問題を回避するためには、パスの前に//(二重スラッシュ)を付けるか、ダブルクォートで囲む方法があります。//を使用すると、Git BashはそのパスをWindowsファイルパスの変換対象として扱いません。
具体的な解決策として、以下の例を示します。
例: //とダブルクォートを使用する
ロググループの作成
aws logs create-log-group --log-group-name "//aws/aaa/bbb"
または
aws logs create-log-group --log-group-name "/aws/aaa/bbb"
ログストリームの作成
aws logs create-log-stream --log-group-name "//aws/aaa/bbb" --log-stream-name my-log-stream
または
aws logs create-log-stream --log-group-name "/aws/aaa/bbb" --log-stream-name my-log-stream
ログメッセージの登録
aws logs put-log-events --log-group-name "//aws/aaa/bbb" --log-stream-name my-log-stream --log-events timestamp=$(($(date +%s%N)/1000000)),message="This is a test log message"
または
aws logs put-log-events --log-group-name "/aws/aaa/bbb" --log-stream-name my-log-stream --log-events timestamp=$(($(date +%s%N)/1000000)),message="This is a test log message"
フルスクリプトの例
以下は、Git Bashでの動作を考慮したシェルスクリプトの例です。
#!/bin/bash
LOG_GROUP_NAME="//aws/aaa/bbb"
LOG_STREAM_NAME="my-log-stream"
LOG_MESSAGE="This is a test log message"
# ロググループの作成
aws logs create-log-group --log-group-name "$LOG_GROUP_NAME" 2>/dev/null
# ログストリームの作成
aws logs create-log-stream --log-group-name "$LOG_GROUP_NAME" --log-stream-name "$LOG_STREAM_NAME" 2>/dev/null
# ログメッセージの登録
TIMESTAMP=$(($(date +%s%N)/1000000))
aws logs put-log-events --log-group-name "$LOG_GROUP_NAME" --log-stream-name "$LOG_STREAM_NAME" --log-events timestamp=$TIMESTAMP,message="$LOG_MESSAGE"
echo "Log message has been registered to CloudWatch in $LOG_GROUP_NAME."
コマンドの実行
スクリプトをファイルに保存(例: send-log.sh)し、実行権限を付与して実行します。
chmod +x send-log.sh
./send-log.sh
これで、WindowsのGit Bash環境において、スラッシュが含まれるパスを正しく扱うことができるはずです。パスの問題を回避するために//またはクォートで囲むことで、Git Bashのパス変換の影響を避けることができます。

コメント