了解しました。Git BashでAWS CLIを正しく動作させるための詳細な手順を再度検討します。
ここでは、ロググループ「/aws/aaa/bbb」が既に存在していることを前提とし、実際にそのロググループを使ってログを登録する具体的な手順を示します。エラーメッセージが出る問題を解決するためには、特にGit Bashのパス解釈を考慮する必要があります。
前提条件の確認
- AWS CLIのインストールが完了していること
- AWS CLIの設定が正しく行われていること
設定を確認するために以下のコマンドを実行してみてください:
aws sts get-caller-identity
ロググループ「/aws/aaa/bbb」が存在することの確認
マネジメントコンソールでロググループが存在することを確認したとのことですが、CLIからも確認しておくと良いです。
aws logs describe-log-groups | grep "/aws/aaa/bbb"
このコマンドがロググループを返さない場合、何らかの問題がある可能性があります。
通常の手順
前提が正しいことを確認できたら、スラッシュを含むロググループを正しく操作するための具体的な手順を以下に示します。ここでは、環境変数を使用してロググループ名を明示的に指定し、またエスケープシーケンスやクォートを間違いなく適用します。
シェルスクリプトの作成
send-log.shという名前のシェルスクリプトを作成します。
#!/bin/bash
# ロググループ名とログストリーム名を定義
LOG_GROUP_NAME="/aws/aaa/bbb"
LOG_STREAM_NAME="my-log-stream"
LOG_MESSAGE="This is a test log message"
# ロググループの存在確認
aws logs describe-log-groups --log-group-name-prefix "$LOG_GROUP_NAME" | grep "$LOG_GROUP_NAME"
if [ $? -ne 0 ]; then
echo "Log group $LOG_GROUP_NAME does not exist. Creating log group."
aws logs create-log-group --log-group-name "$LOG_GROUP_NAME"
else
echo "Log group $LOG_GROUP_NAME already exists."
fi
# ログストリームの作成
echo "Creating log stream $LOG_STREAM_NAME if not exists."
aws logs create-log-stream --log-group-name "$LOG_GROUP_NAME" --log-stream-name "$LOG_STREAM_NAME" 2>/dev/null || true
# ログメッセージの登録
TIMESTAMP=$(date +%s%3N)
echo "Putting log events with timestamp $TIMESTAMP"
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."
シェルスクリプトの実行手順
- スクリプトに実行権限を付与します。
chmod +x send-log.sh
- スクリプトを実行します。
./send-log.sh
エラーが発生する場合のデバッグ
もしスクリプトがまだエラーを出す場合、追加のデバッグ情報を出力して原因を特定していきます。
aws-cliコマンドに--debugオプションを追加して、詳細なデバッグ情報を表示する。
例えば:
aws logs describe-log-groups --log-group-name-prefix "$LOG_GROUP_NAME" --debug
このテストが有効であれば、スクリプトの他のコマンドにも同様の方法で --debug を追加して、どの部分でエラーが発生しているかを特定します。
さらに、エラーメッセージの詳細を確認することにより、問題の原因がより分かりやすくなります。
まとめ
- Git BashでのAWS CLIの操作は通常のシェルスクリプトとほぼ同様に動作しますが、クォートの扱いに注意が必要です。
aws logs describe-log-groupsコマンドを使って、対象のロググループが存在するか確認します。- コマンドに
--debugオプションを付けて実行することで、詳細なデバッグ情報を得ることができます。
この手順で問題が解決できると良いのですが、それでも解決しない場合は、他の箇所で問題が発生していないか、特にIAMポリシーやAWS設定の部分を再チェックすることをお勧めします。

コメント