Closed1
【DOP】ECS コンテナインスタンスとタスクのコンテナログをCloudWatch Logsに送信したい
概要
コンテナインスタンスおよびタスクがCloudWatchLogsにログを送信する方法をそれぞれ記載します。
コンテナインスタンスからログを送信する設定手順
ロールの作成
AmazonEC2ContainerServiceforEC2Role管理ポリシーをアタッチしてください。
PrincipalにEC2を追加し、以下の信頼関係となっていることを確認してください。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
IAMポリシーの作成とロールへのアタッチ
以下のJsonを参考にポリシーを作成してください。
作成したポリシーを上記で生成したロールにアタッチしてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
CloudWatchエージェントのインストール
ここを参考に、コンテナインスタンスにCloudWatchエージェントをインストールしてください。
タスクからログを送信する設定手順
awslogsログドライバーを使用することで、標準出力、標準エラーに出力されたログをCloudWatchLogsに送信することができます。
Fargete起動タイプの場合、タスク定義にlogConfiguration
を追加することでログ送信ができるようになります。以下はタスク定義のJson例です。
{
"containerDefinitions": [
{
"name": "wordpress",
"links": [
"mysql"
],
"image": "wordpress",
"essential": true,
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "awslogs-wordpress",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
}
},
"memory": 500,
"cpu": 10
},
{
"environment": [
{
"name": "MYSQL_ROOT_PASSWORD",
"value": "password"
}
],
"name": "mysql",
"image": "mysql",
"cpu": 10,
"memory": 500,
"essential": true,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "awslogs-mysql",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
}
}
}
],
"family": "awslogs-example"
}
logDriver
にはawslogs
を指定します。
awslogs-region
はログを送信するリージョンを指定します。
awslogs-stream-prefix
にはCloudWatchLogsで生成されるログストリームのプレフィックスを指定します。
ログストリームの形式は以下の通りです。
prefix-name/container-name/ecs-task-id
このスクラップは2022/02/06にクローズされました