{"id":26260319,"url":"https://github.com/mashiike/awstee","last_synced_at":"2026-04-15T16:02:55.651Z","repository":{"id":37938033,"uuid":"498978031","full_name":"mashiike/awstee","owner":"mashiike","description":"awstee is a tee command-like tool with AWS as the output destination.","archived":false,"fork":false,"pushed_at":"2023-06-19T21:01:35.000Z","size":92,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-13T19:03:36.761Z","etag":null,"topics":["aws","golang","tee"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mashiike.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-02T03:28:48.000Z","updated_at":"2022-06-03T13:40:07.000Z","dependencies_parsed_at":"2024-06-21T08:15:23.525Z","dependency_job_id":"1c0753a9-3852-4704-ae9e-5e3035328ee6","html_url":"https://github.com/mashiike/awstee","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/mashiike/awstee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mashiike%2Fawstee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mashiike%2Fawstee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mashiike%2Fawstee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mashiike%2Fawstee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mashiike","download_url":"https://codeload.github.com/mashiike/awstee/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mashiike%2Fawstee/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259704413,"owners_count":22898858,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","golang","tee"],"created_at":"2025-03-13T23:14:35.721Z","updated_at":"2026-04-15T16:02:55.551Z","avatar_url":"https://github.com/mashiike.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# awstee\n\n[![Documentation](https://godoc.org/github.com/mashiike/awstee?status.svg)](https://godoc.org/github.com/mashiike/awstee)\n![Latest GitHub release](https://img.shields.io/github/release/mashiike/awstee.svg)\n![Github Actions test](https://github.com/mashiike/awstee/workflows/Test/badge.svg?branch=main)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mashiike/awstee/blob/master/LICENSE)\n\n`awstee` is a tee command-like tool with AWS as the output destination.\n\nThe `awstee` command reads from standard input and writes to standard output and AWS S3 and CloudWatch Logs.\nawstee is the util tool for one time script for mission critical (especially for preventing rerunning it).\n\n## Usage \n\nBasically, it can be used as follows\n```shell\n$ your_command |  awstee -s3-url-prefix s3://awstee-example-com/logs/  -log-group-name /awstee/logs hoge.log\n2022/06/03 17:28:48 [info] s3 destination:  s3://awstee-example-com/logs//hoge.log\n2022/06/03 17:28:49 [info] cloudwatch logs destination:  LogGroup=/awstee/test, LogStream=hoge\n...\n```\n\nwith default config `~/.config/awstee/default.yaml` or `~/.config/awstee/default.yml`.\n\n```yaml\naws_region: \"ap-northeast-1\"\n\ns3:\n  url_prefix: \"s3://awstee-example-com/logs/\" # Required if used. If blank, output setting is turned off\n  allow_overwrite: true # Whether to allow overwriting if the object already exists\n\ncloudwatch:\n  log_group: \"/awstee/logs\" # Required if used. If blank, output setting is turned off\n  flush_interval: \"5s\" # Duration of buffer flush output to cloudwatch logs\n  buffer_lines: 50 # If more than this number of lines are output within the flush period, it is output once to Cloudwatch logs.\n  create_log_group: true # Whether to create a LogGroup if it does not exist\n```\n\n```shell\n$ your_command |  awstee hoge.log\n2022/06/03 17:28:48 [info] s3 destination:  s3://awstee-example-com/logs//hoge.log\n2022/06/03 17:28:49 [info] cloudwatch logs destination:  LogGroup=/awstee/test, LogStream=hoge\n...\n```\n\n### Install \n#### Homebrew (macOS and Linux)\n\n```console\n$ brew install mashiike/tap/awstee\n```\n#### Binary packages\n\n[Releases](https://github.com/mashiike/awstee/releases)\n\n### Options\n\n```shell\n$ awstee -h    \nawstee is a tee command-like tool with AWS as the output destination\nversion: v0.3.0 \n  -aws-region string\n        aws region\n  -buffer-lines int\n        cloudwatch logs output buffered lines (default 50)\n  -config string\n        config file path\n  -create-log-group\n        cloudwatch logs log group if not exists, create target log group\n  -flush-interval string\n        cloudwatch logs output flush interval duration (default \"5s\")\n  -i    ignore interrupt signal\n  -log-group-name string\n        destination cloudwatch logs log group name\n  -log-level string\n        awstee log level (default \"info\")\n  -s3-allow-overwrite\n        allow overwriting if the s3 object already exists?\n  -s3-firstly-put-empty-object\n        put object from first for authority checks, etc.\n  -s3-url-prefix string\n        destination s3 url prefix\n  -x    exit if an error occurs during initialization\n```\n\n## IAM Role Policy\n\nPermissions that `awstee` may have access to are as follows\n\n```json \n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"S3Access\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"s3:PutObject\",\n                \"s3:GetObject\",\n                \"s3:AbortMultipartUpload\",\n                \"s3:ListBucket\"\n            ],\n            \"Resource\": \"*\"\n        },\n        {\n            \"Sid\": \"CloudwatchLogsAccess\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"logs:CreateLogStream\",\n                \"logs:DescribeLogStreams\",\n                \"logs:CreateLogGroup\",\n                \"logs:PutLogEvents\"\n            ],\n            \"Resource\": \"*\"\n        }\n    ]\n}\n```\n\nNote: `logs:CreateLogGroup` privilege is used only when the `-create-log-group` option is enabled.\n\n\n## LICENSE\n\nMIT License\n\nCopyright (c) 2022 IKEDA Masashi\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmashiike%2Fawstee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmashiike%2Fawstee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmashiike%2Fawstee/lists"}