Skip to content

Commit

Permalink
Merge pull request #1667 from jen20/jen20/rebase-tokio-02
Browse files Browse the repository at this point in the history
Move to std::future::Future and Tokio 0.2 to support async/await
  • Loading branch information
iliana committed Feb 7, 2020
2 parents c5466d6 + ca192de commit cf22a43
Show file tree
Hide file tree
Showing 1,140 changed files with 307,290 additions and 151,103 deletions.
2 changes: 1 addition & 1 deletion .semaphoreci/test_10_ceph.sh
Expand Up @@ -23,4 +23,4 @@ cd "$GIT_ROOT/integration_tests"
--run-arg=DEMO \
--run-opt=--hostname=localhost \
"--run-opt=-v=$GIT_ROOT/.semaphoreci/ceph.conf:/etc/ceph.conf:ro" \
-- cargo test --features s3,disable_ceph_unsupported
-- cargo test --features s3,disable_ceph_unsupported ---- --test-threads 1
2 changes: 1 addition & 1 deletion .semaphoreci/test_20_minio.sh
Expand Up @@ -17,4 +17,4 @@ cd "$GIT_ROOT/integration_tests"
--run-opt=--env=MINIO_DOMAIN=localhost \
--run-arg=server \
--run-arg=/home/shared \
-- cargo test --features s3,disable_minio_unsupported
-- cargo test --features s3,disable_minio_unsupported ---- --test-threads 1
7 changes: 5 additions & 2 deletions AWS-CREDENTIALS.md
Expand Up @@ -24,6 +24,8 @@ If not explicitly provided as arguments, the values for these two parameters are

It's also possible to implement your own credentials sourcing mechanism by creating a type that implements `rusoto_core::ProvideAwsCredentials`.

`rusoto_sts` implements a replacement `ChainProvider` which adds a credential source for web identities for use with Kubernetes.

#### sts:AssumeRole

If your aws account belongs to an organization and you need to use sts:AssumeRole, you're probably looking for `rusoto_sts::StsAssumeRoleSessionCredentialsProvider`. A simple program that uses sts:AssumeRole looks like this:
Expand All @@ -36,7 +38,8 @@ use rusoto_core::{Region, HttpClient};
use rusoto_ec2::{Ec2Client, Ec2, DescribeSpotInstanceRequestsRequest};
use rusoto_sts::{StsClient, StsAssumeRoleSessionCredentialsProvider};
fn main() {
#[tokio::main]
async fn main() {
env_logger::init();
let sts = StsClient::new(Region::EuWest1);
Expand All @@ -51,7 +54,7 @@ fn main() {
let client = Ec2Client::new_with(HttpClient::new().unwrap(), provider, Region::UsEast1);
let sir_input = DescribeSpotInstanceRequestsRequest::default();
let x = client.describe_spot_instance_requests(sir_input).sync();
let x = client.describe_spot_instance_requests(sir_input).await;
println!("{:?}", x);
}
Expand Down
73 changes: 64 additions & 9 deletions Cargo.toml
Expand Up @@ -5,20 +5,24 @@ members = [
"rusoto/core",
"rusoto/credential",
"rusoto/signature",
"rusoto/services/accessanalyzer",
"rusoto/services/acm",
"rusoto/services/acm-pca",
"rusoto/services/alexaforbusiness",
"rusoto/services/amplify",
"rusoto/services/apigateway",
"rusoto/services/apigatewaymanagementapi",
"rusoto/services/apigatewayv2",
"rusoto/services/appconfig",
"rusoto/services/application-autoscaling",
"rusoto/services/application-insights",
"rusoto/services/appmesh",
"rusoto/services/appstream",
"rusoto/services/appsync",
"rusoto/services/athena",
"rusoto/services/autoscaling",
"rusoto/services/autoscaling-plans",
"rusoto/services/backup",
"rusoto/services/batch",
"rusoto/services/budgets",
"rusoto/services/ce",
Expand All @@ -36,119 +40,169 @@ members = [
"rusoto/services/codebuild",
"rusoto/services/codecommit",
"rusoto/services/codedeploy",
"rusoto/services/codeguru-reviewer",
"rusoto/services/codeguruprofiler",
"rusoto/services/codepipeline",
"rusoto/services/codestar",
"rusoto/services/codestar-connections",
"rusoto/services/codestar-notifications",
"rusoto/services/cognito-identity",
"rusoto/services/cognito-idp",
"rusoto/services/cognito-sync",
"rusoto/services/comprehend",
"rusoto/services/comprehendmedical",
"rusoto/services/compute-optimizer",
"rusoto/services/config",
"rusoto/services/connect",
"rusoto/services/connectparticipant",
"rusoto/services/cur",
"rusoto/services/dataexchange",
"rusoto/services/datapipeline",
"rusoto/services/datasync",
"rusoto/services/dax",
"rusoto/services/detective",
"rusoto/services/devicefarm",
"rusoto/services/directconnect",
"rusoto/services/discovery",
"rusoto/services/dlm",
"rusoto/services/dms",
"rusoto/services/docdb",
"rusoto/services/ds",
"rusoto/services/dynamodb",
"rusoto/services/dynamodbstreams",
"rusoto/services/ebs",
"rusoto/services/ec2",
"rusoto/services/ec2-instance-connect",
"rusoto/services/ecr",
"rusoto/services/ecs",
"rusoto/services/elasticache",
"rusoto/services/elasticbeanstalk",
"rusoto/services/efs",
"rusoto/services/eks",
"rusoto/services/elastic-inference",
"rusoto/services/elasticache",
"rusoto/services/elasticbeanstalk",
"rusoto/services/elastictranscoder",
"rusoto/services/elb",
"rusoto/services/elbv2",
"rusoto/services/emr",
"rusoto/services/es",
"rusoto/services/events",
"rusoto/services/firehose",
"rusoto/services/fms",
"rusoto/services/forecast",
"rusoto/services/forecastquery",
"rusoto/services/frauddetector",
"rusoto/services/fsx",
"rusoto/services/gamelift",
"rusoto/services/glacier",
"rusoto/services/globalaccelerator",
"rusoto/services/glue",
"rusoto/services/greengrass",
"rusoto/services/groundstation",
"rusoto/services/guardduty",
"rusoto/services/health",
"rusoto/services/iam",
"rusoto/services/imagebuilder",
"rusoto/services/importexport",
"rusoto/services/inspector",
"rusoto/services/iot",
"rusoto/services/iotanalytics",
"rusoto/services/iotsecuretunneling",
"rusoto/services/iot-data",
"rusoto/services/iot-jobs-data",
"rusoto/services/iot1click-devices",
"rusoto/services/iot1click-projects",
"rusoto/services/iotanalytics",
"rusoto/services/iotevents",
"rusoto/services/iotevents-data",
"rusoto/services/iotsecuretunneling",
"rusoto/services/iotthingsgraph",
"rusoto/services/kafka",
"rusoto/services/kendra",
"rusoto/services/kinesis",
"rusoto/services/kinesis-video-archived-media",
"rusoto/services/kinesis-video-media",
"rusoto/services/kinesis-video-signaling",
"rusoto/services/kinesisanalytics",
"rusoto/services/kinesisanalyticsv2",
"rusoto/services/kinesisvideo",
"rusoto/services/kinesis-video-media",
"rusoto/services/kinesis-video-archived-media",
"rusoto/services/kms",
"rusoto/services/lakeformation",
"rusoto/services/lambda",
"rusoto/services/lex-models",
"rusoto/services/lex-runtime",
"rusoto/services/license-manager",
"rusoto/services/lightsail",
"rusoto/services/logs",
"rusoto/services/neptune",
"rusoto/services/machinelearning",
"rusoto/services/macie",
"rusoto/services/marketplacecommerceanalytics",
"rusoto/services/managedblockchain",
"rusoto/services/marketplace-catalog",
"rusoto/services/marketplace-entitlement",
"rusoto/services/marketplacecommerceanalytics",
"rusoto/services/mediaconnect",
"rusoto/services/mediaconvert",
"rusoto/services/medialive",
"rusoto/services/mediapackage",
"rusoto/services/mediapackage-vod",
"rusoto/services/mediastore",
"rusoto/services/mediatailor",
"rusoto/services/meteringmarketplace",
"rusoto/services/mgh",
"rusoto/services/migrationhub-config",
"rusoto/services/mobile",
"rusoto/services/mq",
"rusoto/services/mturk",
"rusoto/services/neptune",
"rusoto/services/networkmanager",
"rusoto/services/opsworks",
"rusoto/services/opsworkscm",
"rusoto/services/organizations",
"rusoto/services/outposts",
"rusoto/services/personalize",
"rusoto/services/personalize-events",
"rusoto/services/personalize-runtime",
"rusoto/services/pi",
"rusoto/services/pinpoint-email",
"rusoto/services/pinpoint-sms-voice",
"rusoto/services/polly",
"rusoto/services/pricing",
"rusoto/services/qldb",
"rusoto/services/qldb-session",
"rusoto/services/quicksight",
"rusoto/services/ram",
"rusoto/services/rds",
"rusoto/services/rds-data",
"rusoto/services/redshift",
"rusoto/services/rekognition",
"rusoto/services/resource-groups",
"rusoto/services/resourcegroupstaggingapi",
"rusoto/services/robomaker",
"rusoto/services/route53",
"rusoto/services/route53domains",
"rusoto/services/route53resolver",
"rusoto/services/s3",
"rusoto/services/sagemaker",
"rusoto/services/sagemaker-a2i-runtime",
"rusoto/services/sagemaker-runtime",
"rusoto/services/savingsplans",
"rusoto/services/schemas",
"rusoto/services/sdb",
"rusoto/services/secretsmanager",
"rusoto/services/securityhub",
"rusoto/services/serverlessrepo",
"rusoto/services/service-quotas",
"rusoto/services/servicecatalog",
"rusoto/services/servicediscovery",
"rusoto/services/ses",
"rusoto/services/sesv2",
"rusoto/services/shield",
"rusoto/services/signer",
"rusoto/services/sms",
"rusoto/services/sms-voice",
"rusoto/services/snowball",
"rusoto/services/sns",
"rusoto/services/sqs",
"rusoto/services/ssm",
"rusoto/services/sso",
"rusoto/services/sso-oidc",
"rusoto/services/stepfunctions",
"rusoto/services/storagegateway",
"rusoto/services/sts",
Expand All @@ -163,8 +217,9 @@ members = [
"rusoto/services/workdocs",
"rusoto/services/worklink",
"rusoto/services/workmail",
"rusoto/services/workmailmessageflow",
"rusoto/services/workspaces",
"rusoto/services/xray"
"rusoto/services/xray",
]

exclude = [
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -38,7 +38,7 @@ skeptical:

.PHONY: integration_test
integration_test:
(cd integration_tests && cargo +$$RUST_VERSION test --features all)
(cd integration_tests && cargo +$$RUST_VERSION test --features all -- --test-threads 1)

.PHONY: check_integration_test
check_integration_test:
Expand Down
36 changes: 17 additions & 19 deletions README.md
Expand Up @@ -44,15 +44,17 @@ For example, to include only S3 and SQS:

```toml
[dependencies]
rusoto_core = "0.42.0"
rusoto_sqs = "0.42.0"
rusoto_s3 = "0.42.0"
rusoto_core = "0.43.0-beta.1"
rusoto_sqs = "0.43.0-beta.1"
rusoto_s3 = "0.43.0-beta.1"
```

## Migration notes

Breaking changes and migration details are documented at [https://rusoto.org/migrations.html](https://rusoto.org/migrations.html).

Note that from v0.43.0 onward, Rusoto uses Rust's `std::future::Future`, and the Tokio 0.2 ecosystem.

## Usage

Rusoto has a crate for each AWS service, containing Rust types for that service's API.
Expand All @@ -63,32 +65,28 @@ Consult the rustdoc documentation for full details by running `cargo doc` or vis
A simple example of using Rusoto's DynamoDB API to list the names of all tables in a database:

```rust,no_run
extern crate rusoto_core;
extern crate rusoto_dynamodb;
use rusoto_core::Region;
use rusoto_dynamodb::{DynamoDb, DynamoDbClient, ListTablesInput};
fn main() {
#[tokio::main]
async fn main() {
let client = DynamoDbClient::new(Region::UsEast1);
let list_tables_input: ListTablesInput = Default::default();
match client.list_tables(list_tables_input).sync() {
Ok(output) => {
match output.table_names {
Some(table_name_list) => {
println!("Tables in database:");
for table_name in table_name_list {
println!("{}", table_name);
}
},
None => println!("No tables in database!"),
match client.list_tables(list_tables_input).await {
Ok(output) => match output.table_names {
Some(table_name_list) => {
println!("Tables in database:");
for table_name in table_name_list {
println!("{}", table_name);
}
}
None => println!("No tables in database!"),
},
Err(error) => {
println!("Error: {:?}", error);
},
}
}
}
```
Expand Down
21 changes: 11 additions & 10 deletions helpers/Cargo.toml
Expand Up @@ -4,21 +4,22 @@ license = "MIT"
name = "rusoto_helpers"
readme = "README.md"
repository = "https://github.com/rusoto/rusoto_helpers"
version = "0.1.0"
version = "0.43.0-beta.1"
edition = "2018"

[dependencies]

[dependencies.rusoto]
path = ".."
version = ">= 0.13.1"
rusoto_core = { path = "../rusoto/core" }
rusoto_dynamodb = { path = "../rusoto/services/dynamodb", optional = true }
rusoto_kms = { path = "../rusoto/services/kms", optional = true }
rusoto_sqs = { path = "../rusoto/services/sqs", optional = true }

[dev-dependencies]
time = "0.2"
env_logger = "^0.4.0"
log = "^0.3.3"
env_logger = "0.7"
log = "0.4"

[features]
all = ["dynamodb", "kms", "sqs"]
dynamodb = ["rusoto/dynamodb"]
kms = ["rusoto/kms"]
sqs = ["rusoto/sqs"]
dynamodb = ["rusoto_dynamodb"]
kms = ["rusoto_kms"]
sqs = ["rusoto_sqs"]

0 comments on commit cf22a43

Please sign in to comment.