1 stable release
1.2.0 | Mar 1, 2024 |
---|
#2310 in Network programming
2,538 downloads per month
46MB
661K
SLoC
Minimal AWS SDK EC2
Only keep the following APIs
- create_vpc_endpoint
- delete_vpc_endpoints
- describe_vpc_endpoints
- describe_vpc_endpoint_services
- describe_subnets
How is this done?
Copy the original version
cp -R ~/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aws-sdk-ec2-1.2.0/src .
cp ~/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aws-sdk-ec2-1.2.0/Cargo.toml .
- Modify
client.rs
andoperation.rs
to only keep the requiredmod
s. - Update
protocol_serde.rs
andtypes.rs
. This need to contain not only the required APIs, but also some other depended types. So manual work is needed.
lib.rs
:
Amazon Elastic Compute Cloud (Amazon EC2) provides secure and resizable computing capacity in the Amazon Web Services Cloud. Using Amazon EC2 eliminates the need to invest in hardware up front, so you can develop and deploy applications faster. Amazon Virtual Private Cloud (Amazon VPC) enables you to provision a logically isolated section of the Amazon Web Services Cloud where you can launch Amazon Web Services resources in a virtual network that you've defined. Amazon Elastic Block Store (Amazon EBS) provides block level storage volumes for use with EC2 instances. EBS volumes are highly available and reliable storage volumes that can be attached to any running instance and used like a hard drive.
To learn more, see the following resources:
- Amazon EC2: Amazon EC2 product page, Amazon EC2 documentation
- Amazon EBS: Amazon EBS product page, Amazon EBS documentation
- Amazon VPC: Amazon VPC product page, Amazon VPC documentation
- VPN: VPN product page, VPN documentation
Getting Started
Examples are available for many services and operations, check out the examples folder in GitHub.
The SDK provides one crate per AWS service. You must add Tokio
as a dependency within your Rust project to execute asynchronous code. To add aws-sdk-ec2
to
your project, add the following to your Cargo.toml file:
[dependencies]
aws-config = { version = "1.0.1", features = ["behavior-version-latest"] }
aws-sdk-ec2 = "1.2.0"
tokio = { version = "1", features = ["full"] }
Then in code, a client can be created with the following:
use aws_sdk_ec2 as ec2;
#[::tokio::main]
async fn main() -> Result<(), ec2::Error> {
let config = aws_config::load_from_env().await;
let client = aws_sdk_ec2::Client::new(&config);
// ... make some calls with the client
Ok(())
}
See the client documentation for information on what calls can be made, and the inputs and outputs for each of those calls.
Using the SDK
Until the SDK is released, we will be adding information about using the SDK to the Developer Guide. Feel free to suggest additional sections for the guide by opening an issue and describing what you are trying to do.
Getting Help
- GitHub discussions - For ideas, RFCs & general questions
- GitHub issues - For bug reports & feature requests
- Generated Docs (latest version)
- Usage examples
Crate Organization
The entry point for most customers will be Client
, which exposes one method for each API
offered by Amazon Elastic Compute Cloud. The return value of each of these methods is a "fluent builder",
where the different inputs for that API are added by builder-style function call chaining,
followed by calling send()
to get a Future
that will result in
either a successful output or a SdkError
.
Some of these API inputs may be structs or enums to provide more complex structured information.
These structs and enums live in types
. There are some simpler types for
representing data such as date times or binary blobs that live in primitives
.
All types required to configure a client via the Config
struct live
in config
.
The operation
module has a submodule for every API, and in each submodule
is the input, output, and error type for that API, as well as builders to construct each of those.
There is a top-level Error
type that encompasses all the errors that the
client can return. Any other error type can be converted to this Error
type via the
From
trait.
The other modules within this crate are not required for normal usage.
Dependencies
~10–22MB
~328K SLoC