https://github.com/awslabs/aws-c-s3
C99 library implementation for communicating with the S3 service, designed for maximizing throughput on high bandwidth EC2 instances.
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (9.0%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
C99 library implementation for communicating with the S3 service, designed for maximizing throughput on high bandwidth EC2 instances.
Basic Info
Statistics
- Stars: 143
- Watchers: 23
- Forks: 46
- Open Issues: 15
- Releases: 146
Topics
Metadata Files
README.md
AWS C S3
The AWS-C-S3 library is an asynchronous AWS S3 client focused on maximizing throughput and network utilization.
Key features:
- Automatic Request Splitting: Improves throughput by automatically splitting the request into part-sized chunks and performing parallel uploads/downloads of these chunks over multiple connections. There's a cap on the throughput of single S3 connection, the only way to go faster is multiple parallel connections.
- Automatic Retries: Increases resilience by retrying individual failed chunks of a file transfer, eliminating the need to restart transfers from scratch after an intermittent error.
- DNS Load Balancing: DNS resolver continuously harvests Amazon S3 IP addresses. When load is spread across the S3 fleet, overall throughput more reliable than if all connections are going to a single IP.
- Advanced Network Management: The client incorporates automatic request parallelization, effective timeouts and retries, and efficient connection reuse. This approach helps to maximize throughput and network utilization, and to avoid network overloads.
- Thread Pools and Async I/O: Avoids bottlenecks associated with single-thread processing.
- Parallel Reads: When uploading a large file from disk, reads from multiple parts of the file in parallel. This is faster than reading the file sequentially from beginning to end.
Documentation
- GetObject: A visual representation of the GetObject request flow.
- Memory Aware Requests Execution: An in-depth guide on optimizing memory usage during request executions.
License
This library is licensed under the Apache 2.0 License.
Usage
Building
CMake 3.9+ is required to build.
<install-path> must be an absolute path in the following instructions.
Linux-Only Dependencies
If you are building on Linux, you will need to build aws-lc and s2n-tls first.
```
git clone git@github.com:aws/aws-lc.git
cmake -S aws-lc -B aws-lc/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:aws/s2n-tls.git
cmake -S s2n-tls -B s2n-tls/build -DCMAKEINSTALLPREFIX=
Building aws-c-s3 and Remaining Dependencies
```
git clone git@github.com:awslabs/aws-c-common.git
cmake -S aws-c-common -B aws-c-common/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:awslabs/aws-checksums.git
cmake -S aws-checksums -B aws-checksums/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:awslabs/aws-c-cal.git
cmake -S aws-c-cal -B aws-c-cal/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:awslabs/aws-c-io.git
cmake -S aws-c-io -B aws-c-io/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:awslabs/aws-c-compression.git
cmake -S aws-c-compression -B aws-c-compression/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:awslabs/aws-c-http.git
cmake -S aws-c-http -B aws-c-http/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:awslabs/aws-c-sdkutils.git
cmake -S aws-c-sdkutils -B aws-c-sdkutils/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:awslabs/aws-c-auth.git
cmake -S aws-c-auth -B aws-c-auth/build -DCMAKEINSTALLPREFIX=
git clone git@github.com:awslabs/aws-c-s3.git
cmake -S aws-c-s3 -B aws-c-s3/build -DCMAKEINSTALLPREFIX=
Running S3 sample
After installing all the dependencies, and building aws-c-s3, you can run the sample directly from the s3 build directory.
To download:
aws-c-s3/build/samples/s3/s3 cp s3://<bucket-name>/<object-name> <download-path> --region <region>
To upload:
aws-c-s3/build/samples/s3/s3 cp <upload-path> s3://<bucket-name>/<object-name> --region <region>
To list objects:
aws-c-s3/build/samples/s3/s3 ls s3://<bucket-name> --region <region>
Testing
The unit tests require an AWS account with S3 buckets set up in a particular way. Use the test_helper script to set this up.
Owner
- Name: Amazon Web Services - Labs
- Login: awslabs
- Kind: organization
- Location: Seattle, WA
- Website: http://amazon.com/aws/
- Repositories: 914
- Profile: https://github.com/awslabs
AWS Labs
Committers
Last synced: about 3 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Ryan Carper | 5****r@u****m | 66 |
| Dengke Tang | d****t@a****m | 30 |
| Ryan Carper | r****r@a****m | 23 |
| Michael Graeb | g****m@a****m | 18 |
| Dengke Tang | 8****5@q****m | 17 |
| Justin Boswell | b****j@a****m | 15 |
| Bret Ambrose | b****e@g****m | 11 |
| ilevyor | 8****r@u****m | 7 |
| Cesar Mello | m****r@a****m | 7 |
| Dmitriy Musatkin | 6****n@u****m | 7 |
| Gerrit Renker | g****r@u****m | 5 |
| Waqar Ahmed Khan | w****7@g****m | 5 |
| Jonathan M. Henson | h****o@a****m | 3 |
| Cesar Mello | c****o@g****m | 2 |
| Joseph Klix | j****x@g****m | 2 |
| Pushen Wang | w****0@h****m | 2 |
| dependabot[bot] | 4****]@u****m | 2 |
| Sergey Ryabinin | s****n@a****m | 1 |
| Amazon GitHub Automation | 5****o@u****m | 1 |
| Eric Ace | e****e@p****m | 1 |
| Steve Kim | 8****K@u****m | 1 |
| TwistedTwigleg | t****g@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 9 months ago
All Time
- Total issues: 29
- Total pull requests: 435
- Average time to close issues: 3 months
- Average time to close pull requests: 22 days
- Total issue authors: 17
- Total pull request authors: 26
- Average comments per issue: 3.55
- Average comments per pull request: 0.84
- Merged pull requests: 296
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 6
- Pull requests: 156
- Average time to close issues: 6 days
- Average time to close pull requests: 4 days
- Issue authors: 3
- Pull request authors: 10
- Average comments per issue: 2.33
- Average comments per pull request: 0.81
- Merged pull requests: 91
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- grrtrr (11)
- djchapm (2)
- dbickson (2)
- EUtrilla2002 (1)
- nunotexbsd (1)
- DmitriyMusatkin (1)
- snickl (1)
- bpiper (1)
- jmklix (1)
- Bbulatov (1)
- changpe1 (1)
- alexsmith1612 (1)
- graebm (1)
- joeshaw (1)
- mattBrzezinski (1)
Pull Request Authors
- waahm7 (159)
- TingDaoK (129)
- graebm (55)
- DmitriyMusatkin (39)
- grrtrr (18)
- bretambrose (4)
- jmklix (4)
- sbSteveK (3)
- vladem (2)
- ashishdhingra (2)
- rccarper (2)
- thundergolfer (2)
- ProgramComputer (2)
- jamesbornholt (2)
- israel4435-ux (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 15
-
Total downloads:
- homebrew 6,130 last-month
-
Total dependent packages: 9
(may contain duplicates) -
Total dependent repositories: 23
(may contain duplicates) - Total versions: 177
- Total maintainers: 3
alpine-edge: aws-c-s3-dev
AWS C99 library implementation for communicating with the S3 service (development files)
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.8.7-r0
published 10 months ago
Rankings
Maintainers (1)
alpine-edge: aws-c-s3
AWS C99 library implementation for communicating with the S3 service
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.8.7-r0
published 10 months ago
Rankings
Maintainers (1)
conda-forge.org: aws-c-s3
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.1.51
published over 3 years ago
Rankings
formulae.brew.sh: aws-c-s3
C99 library implementation for communicating with the S3 service
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.8.7
published 10 months ago
Rankings
anaconda.org: aws-c-s3
The AWS-C-S3 library is an asynchronous AWS S3 client focused on maximizing throughput and network utilization.
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.8.7
published 9 months ago
Rankings
alpine-v3.18: aws-c-s3-dev
AWS C99 library implementation for communicating with the S3 service (development files)
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.4.10-r0
published about 2 years ago
Rankings
Maintainers (1)
alpine-v3.22: aws-c-s3
AWS C99 library implementation for communicating with the S3 service
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.8.0-r0
published about 1 year ago
Rankings
Maintainers (1)
alpine-v3.20: aws-c-s3-dev
AWS C99 library implementation for communicating with the S3 service (development files)
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.5.9-r0
published about 2 years ago
Rankings
alpine-v3.20: aws-c-s3
AWS C99 library implementation for communicating with the S3 service
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.5.9-r0
published about 2 years ago
Rankings
alpine-v3.19: aws-c-s3
AWS C99 library implementation for communicating with the S3 service
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.4.10-r0
published almost 2 years ago
Rankings
alpine-v3.22: aws-c-s3-dev
AWS C99 library implementation for communicating with the S3 service (development files)
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.8.0-r0
published about 1 year ago
Rankings
Maintainers (1)
alpine-v3.19: aws-c-s3-dev
AWS C99 library implementation for communicating with the S3 service (development files)
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.4.10-r0
published almost 2 years ago
Rankings
alpine-v3.21: aws-c-s3
AWS C99 library implementation for communicating with the S3 service
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.7.4-r0
published over 1 year ago
Rankings
Maintainers (1)
alpine-v3.21: aws-c-s3-dev
AWS C99 library implementation for communicating with the S3 service (development files)
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.7.4-r0
published over 1 year ago
Rankings
Maintainers (1)
alpine-v3.18: aws-c-s3
AWS C99 library implementation for communicating with the S3 service
- Homepage: https://github.com/awslabs/aws-c-s3
- License: Apache-2.0
-
Latest release: 0.4.10-r0
published about 2 years ago
Rankings
Maintainers (1)
Dependencies
- actions/checkout v3 composite
- DoozyX/clang-format-lint-action v0.3.1 composite
- actions/checkout v1 composite
- aws-actions/closed-issue-message v1 composite
- actions/checkout v3 composite
- aws-github-ops/handle-stale-discussions v1 composite
- aws-actions/stale-issue-cleanup v3 composite
- @aws-cdk/assert ^v1.126.0 development
- @types/jest ^27.0.1 development
- @types/node 10.17.27 development
- aws-cdk ^1.20.0 development
- jest ^27.2.1 development
- ts-jest ^27.0.5 development
- ts-node ^10.9.1 development
- typescript ^4.2.0 development
- @aws-cdk/aws-ec2 ^v1.126.0
- @aws-cdk/aws-iam ^v1.126.0
- @aws-cdk/aws-lambda ^v1.126.0
- @aws-cdk/aws-s3 ^v1.126.0
- @aws-cdk/aws-s3-assets ^v1.126.0
- @aws-cdk/core ^v1.126.0
- aws-sdk ^2.910.0
- source-map-support ^0.5.16
- @aws-cdk/assert ^v1.126.0 development
- @types/jest ^27.0.1 development
- @types/node 10.17.27 development
- aws-cdk ^1.20.0 development
- jest ^27.2.1 development
- ts-jest ^27.0.5 development
- ts-node ^10.9.1 development
- typescript ^4.2.0 development
- @aws-cdk/aws-cloudwatch ^v1.126.0
- @aws-cdk/aws-codebuild ^v1.126.0
- @aws-cdk/aws-ec2 ^v1.126.0
- @aws-cdk/aws-events ^v1.126.0
- @aws-cdk/aws-events-targets ^v1.126.0
- @aws-cdk/aws-iam ^v1.126.0
- @aws-cdk/aws-kms ^v1.126.0
- @aws-cdk/aws-lambda ^v1.126.0
- @aws-cdk/aws-s3 ^v1.126.0
- @aws-cdk/aws-s3-assets ^v1.126.0
- @aws-cdk/aws-s3-deployment ^v1.126.0
- @aws-cdk/core ^v1.126.0
- cdk-ec2-key-pair 2.2.0
- source-map-support ^0.5.16