2017-11-21 4 views
0

今、CloudwatchのログをLambdaを使ってストリーミング形式でAmazon S3にエクスポートする必要があります。私はインターネットを検索し、いくつかのコードを作ります。AWSラムダをストリーミング方式で使用してCloudwatchログをAmazon S3にエクスポートする方法はありますか? (Pythonで)

import boto3 
import calendar 
import 

def lambda_handler(event, context): 
    # TODO: create a export task from cloudwatch logs 
    # and export the logs into Amazon S3 

    # create client 
    client= boto3.client("logs") 

    # create export task 
    response= client.create_export_task(
     taskName='logs-to-s3-task', 
     logGroupName='ec2', 
     fromTime= 123, # begin-time 
     to=123, # end-time 
     destination='some-s3', 
     destinationPrefix='ec2-logs' 
    ) 

    print("Response of logs-to-s3 lambda function: "+response) 

また、エクスポートしたいクラウドログのログにトリガーを設定しました。しかし、ここでいくつかの質問に来る:

  1. にはどうすればCloudWatchのログに変更があった後、S3の更新があることを確認することができます。

  2. ラムダのトリガーの論理は何ですか?その名前によって、何か/変更のリスナーのように動作するはずです。

  3. クラウドウォッチログに変更があったときにリスナーとして機能する場合は、時間範囲内のすべてのログではなく、新しく追加されたログのみをS3に更新するにはどうすればよいですか。あるいは、別の方法として、S3で最新のアップデートを知ることができるので、それ以降のデータをS3にエクスポートすることができます。

ありがとうございます!

答えて

0

ラムダ関数はCloudWatchログを購読することができ、それはリスナーとして機能し、クラウドウォッチログイベントでラムダ関数がトリガーされます。

は、参考のためにAWSのドキュメントで、この例を参照してください - http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#LambdaFunctionExample

S3にのみ、新たに追加されたログを更新するには、タイムスタンプとS3にオブジェクトがboto3 S3クライアントを使用して注文したとして、あなたはその特定のイベントを書き込むことができます。

これが役に立ちます。

+0

基本的に、私が正しく理解すれば、生成された各ログはラムダのコードをトリガーするイベントになりますか?そして、私がする必要があるのは、このイベントをS3にインポートすることです(このようにして、1つのイベントがログに記録されるため、タイムスタンプを気にする必要はありません)。これは正しいです? – lhan

+0

はい、イベントベースで処理されます。 –

関連する問題