1234

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のパス変換の影響を避けることができます。

コメント

タイトルとURLをコピーしました