2017-01-08 12 views
2

をS3にアップロード...Pythonのgzipファイルと私のpython 2.7を使用しています

私は猫に2つのログファイルをしようとしています、SEDを使用して特定の日付からデータを取得します。

  1. 猫二つのファイル:ファイルを圧縮し、システム上の任意の一時ファイルを作成せずにS3にアップロードし、

    sed_command = "sed -n '/{}/,/{}/p'".format(last_date, last_date) 
    

    フローする必要があります。

例:猫FILE1 FILE2

<オール開始= "2">メモリ内
  • 実行sedの操作。
  • 結果をzipまたはgzipでメモリに圧縮します。
  • メモリ内の圧縮ファイルをs3にアップロードします。
  • システムに一時ファイルを作成し、s3へのアップロードが完了したら削除して正常に実行しました。私は、一時ファイルを作成せずにこの機能をオンザフライで動作させるための実用的な解決策を見つけることができませんでした。

    +0

    すでにシェルにいるので、あなたは、EC2インスタンスにしている場合は、どのように '/ run'ようにtmpfsファイルシステム内のファイルに出力を書くことについて。それでは、Pythonでやっているのと同じくらい記憶になります。 – systemjack

    答えて

    3

    ここでの要点です:

    conn = boto.s3.connection.S3Connection(aws_key, secret_key) 
    bucket = conn.get_bucket(bucket_name, validate=True) 
    buffer = cStringIO.StringIO() 
    writer = gzip.GzipFile(None, 'wb', 6, buffer) 
    writer.write(sys.stdin.read()) 
    writer.close() 
    buffer.seek(0) 
    boto.s3.key.Key(bucket, key_path).set_contents_from_file(buffer) 
    buffer.close() 
    
    関連する問題