LINEで送る
Pocket

[AWS][Python]CloudWatch LogsをLambdaで定期的にS3へエクスポートする

上記のように、今までCloudWatch Logsの各ログらはLambdaを使ってS3に定期的にエクスポートをしていましたが、そもそもPythonのバージョンアップなどやメンテナンスがしにくいということから、今回はECSのログ(CloudWatch Logs)Amazon Kinesisで同様のことを実装してみました。Terraform化すると非常に便利なので試してみるといいでしょう!


■Amazon Kinesis

  • S3 bucket :
    logs.adachin.com
  • Prefix :
    ecs/app(devops)/CloudWatchLogs/!{timestamp:yyyy/MM/dd}
  • Error prefix :
    /ecs/app/CloudWatchLogs/result=!{firehose:error-output-type}/!{timestamp:yyyy/MM/dd}
  • Buffer conditions : 10 MiB or 300 seconds
  • Compression : Disabled
  • Encryption : Disabled

■CloudWatch Logs

  • log_group_name :
    /ecs/app
    /ecs/devops
  • log_stream_name :
    ecs/adachin-app/xxxxxxxxxxxxxxxxxx 
    ecs/adachin-devops/xxxxxxxxxxxxxxxxxx

■Resource: aws_kinesis_firehose_delivery_stream

https://www.terraform.io/docs/providers/aws/r/kinesis_firehose_delivery_stream.html


■Terraform

  • iam.tf

  • files/assume_role_policy/firehose_delivery_role_policy.json

  • files/assume_role_policy/kinesis_access_s3_logs_bucket.json

  • files/assume_role_policy/kinesis_basic_role_policy.json

  • files/assume_role_policy/kinesis_allow_deliverystreams.json

上記の account_id はAWSのアカウントIDを指定してください。(そのまんまだわ)

  • variables.tf

  • kinesis.tf

joinelement により設定ファイルを重複して書くことがないよう、variables.tfで管理するようにしています。


■確認

  • Kinesis Data Firehose delivery streams

  • s3

  • Download log


■まとめ

https://stackoverflow.com/questions/55897065/validation-error-member-must-satisfy-regular-expression-pattern-arnawsiam

log_stream_name"*" にすると正規表現でエラーになってしまうのですが、調べてみると* が使えないようなので、 a-zA-Z0-9_.-]+ にするとうまくいきました。これはハマった。

Lambdaで書く工数がなくなったので、良き!ただ、S3に保存されているファイルはgzで圧縮されているのでファイル名をgzに変える工程を忘れそうだな。。

LINEで送る
Pocket

カテゴリー: AWSTerraform

adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、グループ会社インフラ対応、ECS/Fargateへの移行、Wordpressによるコーポレートサイトの修正、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください