継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

VPC フローログに ECS サービスのフィールドを追加して Athena で検索する

タダです.

VPC フローログのフィールドに ECS サービスに関するフィールドが追加されました.これまで調査の時は ECS の IP アドレスから問題を調べることしかできなかったため,問題の調査がしやすくなります.この記事では VPC フローログに新たに追加されたフィールドを出力して, Athena で検索してみます.

追加された ECS サービスに関するフィールドについて

公式のブログにも解説された記事がありますが,10個のフィールドが追加されています.

In this blog, we are introducing the latest version of VPC Flow Logs, Version 7, which allows you insights into your container workloads running on ECS with 10 new fields.

  • ecs-cluster-arn
  • ecs-cluster-name
  • ecs-container-instance-arn
  • ecs-container-instance-id
  • ecs-container-id
  • ecs-second-container-id
  • ecs-service-name
  • ecs-task-definition-arn
  • ecs-task-arn
  • ecs-task-id

aws.amazon.com

docs.aws.amazon.com

VPC フローログに ECS サービスに関するフィールドを追加する

今回検証を行った AWS アカウントでは既に VPC フローログを作っていましたが,新規に増えたフィールドは既存のフローログでは追加されていないため,別の VPC フローログで追加する必要があります.新規作成時に Amazon ECS メタデータを含めるチェックボックスを有効化して S3 にログを出力します.

フローログの作成画面

Athena のテーブルの作成とクエリを実行してみる

以下のようなテーブルを作成して,クエリを実行してみます.

CREATE EXTERNAL TABLE IF NOT EXISTS `vpc_flow_logs` (
  version int,
  account_id string,
  interface_id string,
  srcaddr string,
  dstaddr string,
  srcport int,
  dstport int,
  protocol bigint,
  packets bigint,
  bytes bigint,
  start bigint,
  `end` bigint,
  action string,
  log_status string,
  vpc_id string,
  subnet_id string,
  instance_id string,
  tcp_flags int,
  type string,
  pkt_srcaddr string,
  pkt_dstaddr string,
  region string,
  az_id string,
  sublocation_type string,
  sublocation_id string,
  pkt_src_aws_service string,
  pkt_dst_aws_service string,
  flow_direction string,
  traffic_path int,
  `ecs_cluster_name` string,
  `ecs_cluster_arn` string,
  `ecs_container_instance_id` string,
  `ecs_container_instance_arn` string,
  `ecs_service_name` string,
  `ecs_task_definition_arn` string,
  `ecs_task_id` string,
  `ecs_task_arn` string,
  `ecs_container_id` string,
  `ecs-second-container-id` string
)
PARTITIONED BY (`date` date)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  's3://[バケット名]/AWSLogs/[AWSアカウントID]/vpcflowlogs/ap-northeast-1/'
TBLPROPERTIES (
  'EXTERNAL'='true', 
  'skip.header.line.count'='1'
  )

以下が3件レコードを抽出した結果です.ECS サービスフィールドが追加されて検索することができました.

| # | version | account_id | interface_id | srcaddr | dstaddr | srcport | dstport | protocol | packets | bytes | start | end | action | log_status | vpc_id | subnet_id | instance_id | tcp_flags | type | pkt_srcaddr | pkt_dstaddr | region | az_id | sublocation_type | sublocation_id | pkt_src_aws_service | pkt_dst_aws_service | flow_direction | traffic_path | ecs_cluster_name | ecs_cluster_arn | ecs_container_instance_id | ecs_container_instance_arn | ecs_service_name | ecs_task_definition_arn | ecs_task_id | ecs_task_arn | ecs_container_id | ecs-second-container-id | date |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 7 | 1234567891011 | eni-0e69031133187fe22 | 88.99.3.166 | 10.100.3.72 | 80 | 53295 | 6 | 1 | 44 | 1722155095 | 1722155111 | REJECT | OK | hoge | arn:aws:ecs:ap-northeast-1:1234567891011:cluster/hoge | - | hoge | arn:aws:ecs:ap-northeast-1:1234567891011:task-definition/nginx:26 | 6bd98e56fa3a449d80949eb51f46be60 | arn:aws:ecs:ap-northeast-1:1234567891011:task/hoge/6bd98e56fa3a449d80949eb51f46be60 | 6bd98e56fa3a449d80949eb51f46be60-2531612879 | - | 2024-07-28 |
| 2 | 7 | 1234567891011 | eni-0e69031133187fe22 | 143.110.152.239 | 10.100.3.72 | 80 | 27017 | 6 | 1 | 44 | 1722155214 | 1722155243 | REJECT | OK | hoge | arn:aws:ecs:ap-northeast-1:1234567891011:cluster/hoge | - | hoge | arn:aws:ecs:ap-northeast-1:1234567891011:task-definition/nginx:26 | 6bd98e56fa3a449d80949eb51f46be60 | arn:aws:ecs:ap-northeast-1:1234567891011:task/hoge/6bd98e56fa3a449d80949eb51f46be60 | 6bd98e56fa3a449d80949eb51f46be60-2531612879 | - | 2024-07-28 |
| 3 | 7 | 1234567891011 | eni-0e69031133187fe22 | 10.100.3.72 | 126.253.223.127 | 80 | 54036 | 6 | 8 | 1301 | 1722154344 | 1722154363 | ACCEPT | OK | hoge | arn:aws:ecs:ap-northeast-1:1234567891011:cluster/hoge | - | hoge | arn:aws:ecs:ap-northeast-1:1234567891011:task-definition/nginx:26 | 6bd98e56fa3a449d80949eb51f46be60 | arn:aws:ecs:ap-northeast-1:1234567891011:task/example/6bd98e56fa3a449d80949eb51f46be60 | 6bd98e56fa3a449d80949eb51f46be60-2531612879 | - | 2024-07-28 |

まとめ

VPC フローログに ECS サービスに関するフィールドを追加して Athena で検索してみました.このアップデートによって影響のあった ECS サービスを見つけやすくなると思うため,問題の調査に活かしていきたいです.