diff --git a/aws/sdk/examples/secretsmanager-helloworld/Cargo.toml b/aws/sdk/examples/secretsmanager-helloworld/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..fe3f7a7871efd7546787d307f8f1cf4ffb6730bc --- /dev/null +++ b/aws/sdk/examples/secretsmanager-helloworld/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "secretsmanager-helloworld" +version = "0.1.0" +authors = ["AWS Rust SDK Team ", "Nas Taibi "] +edition = "2018" +description = "Example usage of the SecretManager service" + +[dependencies] +secretsmanager = { path = "../../build/aws-sdk/secretsmanager" } +aws-hyper = { path = "../../build/aws-sdk/aws-hyper" } +tokio = { version = "1", features = ["full"]} +# optional +tracing-subscriber = { version = "0.2.16", features = ["fmt"] } diff --git a/aws/sdk/examples/secretsmanager-helloworld/src/main.rs b/aws/sdk/examples/secretsmanager-helloworld/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..473aed26e654178e6eab8e8d877a4169330eae9a --- /dev/null +++ b/aws/sdk/examples/secretsmanager-helloworld/src/main.rs @@ -0,0 +1,49 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ +use aws_hyper::conn::Standard; +use secretsmanager::Client; +use secretsmanager::Region; +use tracing_subscriber::fmt::format::FmtSpan; +use tracing_subscriber::fmt::SubscriberBuilder; + +#[tokio::main] +async fn main() { + let secret_name = "some-secret-id"; + let secret_value = "testsecret"; + SubscriberBuilder::default() + .with_env_filter("info") + .with_span_events(FmtSpan::CLOSE) + .init(); + let config = secretsmanager::Config::builder() + // region can also be loaded from AWS_DEFAULT_REGION, just remove this line. + .region(Region::new("us-east-1")) + // creds loaded from environment variables, or they can be hard coded. + // Other credential providers not currently supported + .build(); + let conn = Standard::https(); + let client = Client::from_conf_conn(config, conn); + + // attempt to create a secret, + // need to find a better way to handle failure such as ResourceExistsException + let data = client + .create_secret() + .name(secret_name) + .secret_string(secret_value) + .send() + .await + .expect("Error creating secret or secret already exists"); + println!("Created secret {:?} with ARN {:?}", secret_name, data.arn); + + // try and retrieve the secret value we just created + let retrieved_secret = client + .get_secret_value() + .secret_id(secret_name) + .send() + .await + .expect("unable to retrieve secret"); + + assert_eq!(retrieved_secret.secret_string.unwrap(), secret_value); + println!("successfully retrieved secret string that matches the original one we created earlier"); +}