{ "info": { "author": "Brad Robel-Forrest", "author_email": "brad@bitpony.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "===============================\ns3tail\n===============================\n\n.. image:: https://img.shields.io/pypi/v/s3tail.svg\n :target: https://pypi.python.org/pypi/s3tail\n\n.. image:: https://img.shields.io/travis/bradrf/s3tail.svg\n :target: https://travis-ci.org/bradrf/s3tail\n\n.. image:: https://readthedocs.org/projects/s3tail/badge/?version=latest\n :target: https://s3tail.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://pyup.io/repos/github/bradrf/s3tail/shield.svg\n :target: https://pyup.io/repos/github/bradrf/s3tail/\n :alt: Updates\n\n\nS3tail is a simple tool to help access log files stored in an S3 bucket in the same way one might\nuse the \\*nix ``tail`` command (with far fewer options, most notably the lack of ``follow``).\n\n* Free software: MIT license\n* Documentation: https://s3tail.readthedocs.io.\n\nSimplest install method is via ``pip install s3tail`` (see installation_ for other methods).\n\n\nFeatures\n--------\n\nS3tail downloads and displays the content of files stored in S3, optionally starting at a specific\nprefix. For example, the following will start dumping all the log file contents found for August the\nfourth in the order S3 provides from that prefix onward:\n\n.. code-block:: console\n\n $ s3tail s3://my-logs/production-s3-access-2016-08-04\n\nWhen s3tail is stopped or interrupted, it'll print a bookmark to be used to pick up at the exact\nspot following the last log printed in a previous run. Something like the following might be used to\nleverage this ability to continue tailing from a previous stopping point:\n\n.. code-block:: console\n\n $ s3tail s3://my-logs/production-s3-access-2016-08-04\n ...\n ...a-bunch-of-file-output...\n ...\n Bookmark: production-s3-access-2016-08-04-00-20-31-61059F36E0DBF36E:706\n\nThis can then be used to pick up at line ``707`` later on, like this:\n\n.. code-block:: console\n\n $ s3tail s3://my-logs/production-s3-access-2016-08-04 \\\n --bookmark production-s3-access-2016-08-04-00-20-31-61059F36E0DBF36E:706\n\nAdditionally, it's often useful to let s3tail track where things were left off and pick up at that\nspot without needing to copy and paste the previous bookmark. This is where \"named bookmarks\" come\nin handy. The examples above could have been reduced to these operations:\n\n.. code-block:: console\n\n $ s3tail --bookmark my-special-spot s3://my-logs/production-s3-access-2016-08-04\n ...\n ^C\n $ s3tail --bookmark my-special-spot s3://my-logs/production-s3-access\n Starting production-s3-access-2016-08-04-02-22-32-415AE699C8233AC3\n Found production-s3-access-2016-08-04-02-22-32-415AE699C8233AC3 in cache\n Picked up at line 707\n ...\n\nIt's safe to rerun s3tail sessions when working with piped commands searching for data in the stream\n(e.g. ``grep``). S3tail keeps files in a local file system cache (for 24 hours by default) and will\nalways read and display from the cache before downloading from S3. This is done in a best-effort\nbackground thread to avoid impacting performance. The file cache is stored in the user's ``HOME``\ndirectory, in an ``.s3tailcache`` subdirectory, where the file names are the S3 keys hashed with\nSHA-256. These can be listed through the use of the ``--cache-lookup`` option:\n\n.. code-block:: console\n\n $ s3tail --cache-lookup s3://my-logs/production-s3-access-2016-08-04\n\n my-logs/production-s3-access-2016-08-04-23-20-40-9935D31F89E5E38B\n => NOT IN CACHE\n my-logs/production-s3-access-2016-08-04-23-20-45-D76C63A0478F829B\n => NOT IN CACHE\n my-logs/production-s3-access-2016-08-04-23-20-51-C14A8D0980A9F562\n => NOT IN CACHE\n ...\n my-logs/production-s3-access-2016-08-04-23-24-02-C9DF441E6B14EFBB\n => /Users/brad/.s3tailcache/05/0536db5ed3938c0b7fb8d2809bf8b4eb1a686ba14c9dc9b09aafc20780ef0528\n my-logs/production-s3-access-2016-08-04-23-24-10-E9E55E9019AA46D0\n => /Users/brad/.s3tailcache/d1/d1c8b060d7c9a59c6387fc93b7a3d42db09ce90df2ed4eb71449e88e010ab4a8\n my-logs/production-s3-access-2016-08-04-23-24-58-28FE2F9927BCBEA3\n => /Users/brad/.s3tailcache/46/46de81db7cd618074a8ff24cef938dca0d8353da3af8ccc67f517ba8600c3963\n\nCheck out usage_ for more details and examples (like how to leverage GoAccess to\ngenerate beautiful traffic reports!).\n\n\nCredits\n-------\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project\ntemplate.\n\n.. _installation: http://s3tail.readthedocs.io/en/latest/installation.html#installation\n.. _usage: http://s3tail.readthedocs.io/en/latest/usage.html#usage\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n.. raw:: html\n\n \n\n\n=======\nHistory\n=======\n\n0.2.1 (2016-12-27)\n------------------\n\n* Documentation.\n\n\n0.2.0 (2016-12-27)\n------------------\n\n* Add gunzip for \\*.gz files found (based only on extension name for now).\n* Save configuration using ConfigStruct w/ overridable values.\n\n\n0.1.7 (2016-09-18)\n------------------\n\n* Fix incorrect final bookmark when no more logs to read from key.\n\n\n0.1.6 (2016-09-12)\n------------------\n\n* Documentation.\n\n\n0.1.5 (2016-09-12)\n------------------\n\n* Documentation.\n\n\n0.1.4 (2016-09-11)\n------------------\n\n* Fix bug in prefix matching when using named bookmarks.\n* Added timestamps to logs.\n\n\n0.1.3 (2016-09-11)\n------------------\n\n* Added \"named\" bookmarks to pick up automatically from last position when possible.\n* Added option to disable cache entirely.\n\n\n0.1.2 (2016-09-07)\n------------------\n\n* Better perf when reading from cache.\n* Improved docs.\n\n\n0.1.1 (2016-08-29)\n------------------\n\n* Refactor into classes and provide some minimal docs.\n\n\n0.1.0 (2016-08-25)\n------------------\n\n* First release on PyPI.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bradrf/s3tail", "keywords": "s3tail", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "s3tail", "package_url": "https://pypi.org/project/s3tail/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/s3tail/", "project_urls": { "Homepage": "https://github.com/bradrf/s3tail" }, "release_url": "https://pypi.org/project/s3tail/0.2.1/", "requires_dist": [ "Click (>=6.6)", "boto (>=2.45.0)", "configstruct (>=0.2.0)", "future (>=0.16.0)" ], "requires_python": "", "summary": "Console utility app to retrieve and cat files stored in AWS S3", "version": "0.2.1" }, "last_serial": 2541804, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "45a2e331250513511f41e6e7efc2a9b6", "sha256": "48746f9d94eb37378ba1c993f3687a19141466e9c1fb945ecdf494711f5eee98" }, "downloads": -1, "filename": "s3tail-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "45a2e331250513511f41e6e7efc2a9b6", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7367, "upload_time": "2016-08-29T02:15:22", "url": "https://files.pythonhosted.org/packages/2e/b6/3713b405d3358c639d4702e15bc90b3a24b6d2f445c2c39917fd7e6ac5a5/s3tail-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33ca91709a22ef87f91edd2ed9571754", "sha256": "a1af5c966d754f1c0885cdabd78fb2206cd680c58dcc43686c429168b4726291" }, "downloads": -1, "filename": "s3tail-0.1.0.tar.gz", "has_sig": false, "md5_digest": "33ca91709a22ef87f91edd2ed9571754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14700, "upload_time": "2016-08-29T02:15:20", "url": "https://files.pythonhosted.org/packages/6e/43/5499076251fc357d5058728b0c2e40d224247171f30a21fce00cb31b66fe/s3tail-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "8164c992a15d942a87875315f548f59b", "sha256": "629f7bde2b9e707e416d0f2d3f7fa020fb9ad40d3dec767fe62906b6b2ef0522" }, "downloads": -1, "filename": "s3tail-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8164c992a15d942a87875315f548f59b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10075, "upload_time": "2016-08-30T02:58:10", "url": "https://files.pythonhosted.org/packages/84/65/e2daf58d8f5d71ccc1205a42fa176a5377020cbb8e47a39acbaf0ab50548/s3tail-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a0126773879a67ede1818a60ef01b53", "sha256": "e8da8d39c2879dc1054a58c00e03a0da548841c15c7272fee110b19a541be416" }, "downloads": -1, "filename": "s3tail-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6a0126773879a67ede1818a60ef01b53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15775, "upload_time": "2016-08-30T02:58:13", "url": "https://files.pythonhosted.org/packages/48/ed/ca56f38ff4987a1e9c715d4344b32f7edbc281b5c37ca6b79968df8115f4/s3tail-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "14feae98e6f758ec4ad52092d5cc85d3", "sha256": "ec069979c44e74def9cb5db9532c80b993b444ee0fec15370c406d4f5b9f3c23" }, "downloads": -1, "filename": "s3tail-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "14feae98e6f758ec4ad52092d5cc85d3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10418, "upload_time": "2016-09-08T02:17:38", "url": "https://files.pythonhosted.org/packages/cd/65/5a461acad3fdbebf637bbb41714a55d543d8f6d3a7b44a5b67498935a153/s3tail-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "782c6e657fff3707971a94f688849c3a", "sha256": "c9ec64240fede328fa9c72e223873f66fcadfb2b02540f0497d6bd63a7e3380b" }, "downloads": -1, "filename": "s3tail-0.1.2.tar.gz", "has_sig": false, "md5_digest": "782c6e657fff3707971a94f688849c3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24458, "upload_time": "2016-09-08T02:17:35", "url": "https://files.pythonhosted.org/packages/39/eb/068a298088d7e8e7494fd5ca469088aa03a15c0881e2fd55f3b89a8eac42/s3tail-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "6db83e06784ae616b0bc88e1d1f26f64", "sha256": "e2498dbc1e068e32b6f40e3d4f0e3749e4873bf3e33eb95dcad79567650acf45" }, "downloads": -1, "filename": "s3tail-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6db83e06784ae616b0bc88e1d1f26f64", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11008, "upload_time": "2016-09-11T23:38:43", "url": "https://files.pythonhosted.org/packages/ae/0d/d3d454f2d3180e7a5d3b68ad34015aa987136ff9b08d74780e0a0772e842/s3tail-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9592f1993ec88a88832ac1af8a58c323", "sha256": "a1c23aa513d82d1acf7843d88a0504aa4fe82a48a573774afd0a7d99c0d039d0" }, "downloads": -1, "filename": "s3tail-0.1.3.tar.gz", "has_sig": false, "md5_digest": "9592f1993ec88a88832ac1af8a58c323", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24939, "upload_time": "2016-09-11T23:38:40", "url": "https://files.pythonhosted.org/packages/3c/18/33b66b264fd1f8279d00a3a3277a41fbc391da768bc5822ca3289d61d230/s3tail-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "5168ed08770e8b3d3e2e09db6b1432c9", "sha256": "02a8ad2ac11b7386871f5cedc6546763e3ebddf60c7ce68ebd591de869ce3840" }, "downloads": -1, "filename": "s3tail-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5168ed08770e8b3d3e2e09db6b1432c9", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11317, "upload_time": "2016-09-12T03:53:06", "url": "https://files.pythonhosted.org/packages/f7/55/622cea6b8f321869ab38d43b55659f172320c6c2c3ed2d6421b4bbd25699/s3tail-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd52efa45cdbaeedf712698a1858f79a", "sha256": "fc7c4f37b754d2b12937f95b14ccb05f077d5d2c3634b0c6c101d26a9ea67f2e" }, "downloads": -1, "filename": "s3tail-0.1.4.tar.gz", "has_sig": false, "md5_digest": "bd52efa45cdbaeedf712698a1858f79a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25926, "upload_time": "2016-09-12T03:53:03", "url": "https://files.pythonhosted.org/packages/5e/82/fc45f5e00235c274a93e21298a1df44f63f073f1b6f1830cf2f78f739f8f/s3tail-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "45f6c3a5df71eda205bd77ced2a7c890", "sha256": "57664842984744d81dea7601a4f8ebbd9c6eb7cb73460f9204a7126b8ae97426" }, "downloads": -1, "filename": "s3tail-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "45f6c3a5df71eda205bd77ced2a7c890", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12126, "upload_time": "2016-09-12T22:43:17", "url": "https://files.pythonhosted.org/packages/b3/c5/1fba10d001b681a329a966739d0ec667010c6bc3a9ba36b34e5deac7694d/s3tail-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d563dc19280a2e6a205a1d1deab7607", "sha256": "428270d7b2703a3db7f17c5b0e2000fbcc08e09fe34280d201f780bc06114257" }, "downloads": -1, "filename": "s3tail-0.1.5.tar.gz", "has_sig": false, "md5_digest": "8d563dc19280a2e6a205a1d1deab7607", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19399, "upload_time": "2016-09-12T22:43:19", "url": "https://files.pythonhosted.org/packages/42/00/6b5e7b4be7c574419b18c3903a0ff3f8b09cd8316edc314180b31f1a8f2a/s3tail-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "8e16b9093b2fc101e8b93a7fbb36b4d7", "sha256": "9226cf68b8a0d93409c8f2db6f17958baafe979452709ea110902c8b92117de0" }, "downloads": -1, "filename": "s3tail-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8e16b9093b2fc101e8b93a7fbb36b4d7", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12170, "upload_time": "2016-09-12T23:35:08", "url": "https://files.pythonhosted.org/packages/16/01/de632fb946169484af51b7e9edd0f95f9e22e0a7a7873a4150479192ff90/s3tail-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d1fb3611df9b5030762904c6f17639c", "sha256": "5ce42e664ac1ff9f36f2ef754ecc08c7348604eba243b795b167b41f427fded3" }, "downloads": -1, "filename": "s3tail-0.1.6.tar.gz", "has_sig": false, "md5_digest": "6d1fb3611df9b5030762904c6f17639c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28118, "upload_time": "2016-09-12T23:35:05", "url": "https://files.pythonhosted.org/packages/10/77/59fbbe259be0a208e9b6c732e839c0b01784b3c86f6c775b8530740801f9/s3tail-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "74565cabb8f7fd8f9e6e970e98f31764", "sha256": "ae4e9ab3d4477a11734355aef81904f2219a8df9208625fb400c836ec6ee6ad7" }, "downloads": -1, "filename": "s3tail-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "74565cabb8f7fd8f9e6e970e98f31764", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12674, "upload_time": "2016-09-18T20:54:39", "url": "https://files.pythonhosted.org/packages/1e/16/bf2cc9ca2348547302437041053f36e49c2e3d0dff97b4bb131f40b0742a/s3tail-0.1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a02f9d4cfb2fbbac1bb828bd2ddfd5ca", "sha256": "0fa12e4834861af94467295158f59e7b13a04148cb186fa8296588a4f4e7a54e" }, "downloads": -1, "filename": "s3tail-0.1.7.tar.gz", "has_sig": false, "md5_digest": "a02f9d4cfb2fbbac1bb828bd2ddfd5ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28495, "upload_time": "2016-09-18T20:54:36", "url": "https://files.pythonhosted.org/packages/c5/26/f925701ff141f0c20d6f69298731c0d879ff33dac69dc7abf507644c2473/s3tail-0.1.7.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "20139395eeae2478700873782fb79467", "sha256": "a2687c004b0c47b9c24052ee7dd90ffd582f31d23fe310e96736e950b68ff7a6" }, "downloads": -1, "filename": "s3tail-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "20139395eeae2478700873782fb79467", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14551, "upload_time": "2016-12-28T00:27:34", "url": "https://files.pythonhosted.org/packages/b7/ab/dd18b9896a7938a2e6a93b59c89211fa7dd8ac720106eebedfcced15a724/s3tail-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0da701e018fa83c405b8606b25d65802", "sha256": "685c45ebc09c918cdd57b9a1f3987fabed20f8595ac29723fa627753600cf2b7" }, "downloads": -1, "filename": "s3tail-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0da701e018fa83c405b8606b25d65802", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21422, "upload_time": "2016-12-28T00:27:36", "url": "https://files.pythonhosted.org/packages/a1/c1/c221f3e8fe542f786263b5a2d4c453fc3badaebebbb2c8859358398a5a87/s3tail-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ebf7b8a244f3d9b2f16030b05581863a", "sha256": "693eb8986eee5b5a6ff2402ed040cd57e8a858a2b696a1c108379b42f9e4e63b" }, "downloads": -1, "filename": "s3tail-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ebf7b8a244f3d9b2f16030b05581863a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15353, "upload_time": "2016-12-28T04:17:42", "url": "https://files.pythonhosted.org/packages/40/71/068c1bbc57ea303d96731fd23fc266337db53f9c159dc65c704537fc49cf/s3tail-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a54686f87306803d4ff39438f8d45d4", "sha256": "e739a72573fcb5af6fd4b5f1149beba94b0f62d1a3729441b71bbe6101dfa248" }, "downloads": -1, "filename": "s3tail-0.2.1.tar.gz", "has_sig": false, "md5_digest": "5a54686f87306803d4ff39438f8d45d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22647, "upload_time": "2016-12-28T04:17:43", "url": "https://files.pythonhosted.org/packages/d4/db/540e25990adf963a00ca4fdf7499aec5dfea0fc9d212e5e30f7a337db7e8/s3tail-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ebf7b8a244f3d9b2f16030b05581863a", "sha256": "693eb8986eee5b5a6ff2402ed040cd57e8a858a2b696a1c108379b42f9e4e63b" }, "downloads": -1, "filename": "s3tail-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ebf7b8a244f3d9b2f16030b05581863a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15353, "upload_time": "2016-12-28T04:17:42", "url": "https://files.pythonhosted.org/packages/40/71/068c1bbc57ea303d96731fd23fc266337db53f9c159dc65c704537fc49cf/s3tail-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a54686f87306803d4ff39438f8d45d4", "sha256": "e739a72573fcb5af6fd4b5f1149beba94b0f62d1a3729441b71bbe6101dfa248" }, "downloads": -1, "filename": "s3tail-0.2.1.tar.gz", "has_sig": false, "md5_digest": "5a54686f87306803d4ff39438f8d45d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22647, "upload_time": "2016-12-28T04:17:43", "url": "https://files.pythonhosted.org/packages/d4/db/540e25990adf963a00ca4fdf7499aec5dfea0fc9d212e5e30f7a337db7e8/s3tail-0.2.1.tar.gz" } ] }