AWS CLIを利用して、CloudWatchLogsのロググループを作成してみます。
前提条件
CloudWatchLogsへの権限
- CloudWatchLogsに対してフル権限があること。
AWS CLIのバージョン
-
以下のバージョンで動作確認済
- AWS CLI 1.7.26
コマンド
aws --version
結果(例)
aws-cli/1.7.26 Python/2.7.5 Darwin/13.4.0
0. 準備
0.1. リージョンの決定
作成するユーザのデフォルトリージョンを決めます。
(カレントユーザが利用するカレントリージョンも切り変わります。)
コマンド(アイルランドリージョンの場合)
export AWS_DEFAULT_REGION='eu-west-1'
0.2. 変数の確認
プロファイルとリージョンが想定のものになっていることを確認します。
変数の確認
aws configure list
結果(例)
Name Value Type Location
---- ----- ---- --------
profile cloudwatchFull-prjZ-mbp13iamFull-prjZ-mbp13 env AWS_DEFAULT_PROFILE
access_key ****************XXXX shared-credentials-file
secret_key ****************XXXX shared-credentials-file
region eu-west-1 env AWS_DEFAULT_REGION
0.3. AWS IDの確認
変数の確認
cat << ETX
AWS_ID: ${AWS_ID}
ETX
1. 事前作業
1.1. ロググループ名の決定
ロググループ名を決めます。
CloudWatch Logsでは、各種エンティティをprefixで指定するので、prefixを
適宜決めておくのがオススメです。
今回は、prefixを"CloudTrail/"とします。
コマンド
LOG_GROUP_NAME='CloudTrail/DefaultLogGroup'
1.2. 同名のロググループ名の不存在確認
同名のロググループが存在しないことを確認します。
コマンド
aws logs describe-log-groups \
--log-group-name-prefix ${LOG_GROUP_NAME}
結果
{
"logGroups": []
}
1.3. ログ保持期間の決定
ログの保持期間を決めます。
指定しない場合、無期限に保存されます。
コマンド(2ヶ月保存の場合)
LOG_RETENTION_DAYS='60'
2. ロググループの作成
2.1. ロググループの作成
ロググループを作成します。
変数の確認
cat << ETX
LOG_GROUP_NAME ${LOG_GROUP_NAME}
ETX
コマンド
aws logs create-log-group \
--log-group-name ${LOG_GROUP_NAME}
結果(例)
(戻り値なし)
2.2. ロググループの確認
作成したロググループを確認します。
コマンド
aws logs describe-log-groups \
--log-group-name-prefix ${LOG_GROUP_NAME}
結果(例)
{
"logGroups": [
{
"arn": "arn:aws:logs:ap-northeast-1:XXXXXXXXXXXX:log-group:CloudTrail/DefaultLogGroup:*",
"creationTime": 1430092395471,
"metricFilterCount": 0,
"logGroupName": "CloudTrail/DefaultLogGroup",
"storedBytes": 0
}
]
}
3. ログ保持期間の設定
3.1. ログ保持期間設定の確認
コマンド
LOG_RETENT_DAYS=`aws logs describe-log-groups --log-group-name-prefix ${LOG_GROUP_NAME} --query 'logGroups[].retentionInDays' --output text` \
&& echo ${LOG_RETENT_DAYS}
結果(例)
(戻り値なし)
3.2. 保持期間の設定
変数の確認
cat << ETX
LOG_GROUP_NAME: ${LOG_GROUP_NAME}
LOG_RETENTION_DAYS: ${LOG_RETENTION_DAYS}
ETX
コマンド
aws logs put-retention-policy \
--log-group-name ${LOG_GROUP_NAME} \
--retention-in-days ${LOG_RETENTION_DAYS}
結果(例)
(戻り値なし)
3.3. ログ保持期間設定の確認
設定したログ保持期間を確認します。
コマンド
LOG_RETENT_DAYS=`aws logs describe-log-groups --log-group-name-prefix ${LOG_GROUP_NAME} --query 'logGroups[].retentionInDays' --output text` \
&& echo ${LOG_RETENT_DAYS}
結果(例)
60
3.4. ロググループの確認
作成したロググループを確認します。
コマンド
aws logs describe-log-groups \
--log-group-name-prefix ${LOG_GROUP_NAME}
結果(例)
{
"logGroups": [
{
"storedBytes": 0,
"metricFilterCount": 0,
"creationTime": 1431298586512,
"logGroupName": "CloudTrail/DefaultLogGroup",
"retentionInDays": 60,
"arn": "arn:aws:logs:eu-west-1:XXXXXXXXXXXX:log-group:CloudTrail/DefaultLogGroup:*"
}
]
}
4. ログストリームの作成
4.1. ログストリーム名の決定
作成するログストリーム名を決めます。
コマンド
LOG_STREAM_NAME="${AWS_ID}_CloudTrail_${AWS_DEFAULT_REGION}" \
&& echo ${LOG_STREAM_NAME}
作成するログストリーム名と同じ名前のログストリームが存在しないことを確認します。
コマンド
aws logs describe-log-streams \
--log-group-name ${LOG_GROUP_NAME} \
--log-stream-name-prefix ${LOG_STREAM_NAME}
結果
{
"logStreams": []
}
4.2. ログストリームの作成
ログストリームを作成します。
変数の確認
cat << ETX
LOG_GROUP_NAME: ${LOG_GROUP_NAME}
LOG_STREAM_NAME: ${LOG_STREAM_NAME}
ETX
コマンド
aws logs create-log-stream \
--log-group-name ${LOG_GROUP_NAME} \
--log-stream-name ${LOG_STREAM_NAME}
結果(例)
(戻り値なし)
4.3. ログストリームの確認
作成したログストリームを確認します。
コマンド
aws logs describe-log-streams \
--log-group-name ${LOG_GROUP_NAME} \
--log-stream-name-prefix ${LOG_STREAM_NAME}
結果(例)
{
"logStreams": [
{
"creationTime": 1431309653829,
"arn": "arn:aws:logs:eu-west-1:XXXXXXXXXXXX:log-group:CloudTrail/DefaultLogGroup:log-stream:XXXXXXXXXXXX_CloudTrail_eu-west-1",
"logStreamName": "XXXXXXXXXXXX_CloudTrail_eu-west-1",
"storedBytes": 0
}
]
}
5. 事後作業
ログストリームのARN取得
コマンド
LOG_STREAM_ARN=`aws logs describe-log-streams --log-group-name ${LOG_GROUP_NAME} --log-stream-name-prefix ${LOG_STREAM_NAME} --query 'logStreams[].arn' --output text` \
&& echo ${LOG_STREAM_ARN}
結果(例)
arn:aws:logs:eu-west-1:XXXXXXXXXXXX:log-group:| CloudTrail/DefaultLogGroup:log-stream:XXXXXXXXXXXX_CloudTrail_eu-west-1