Unverified Commit cc805834 authored by Nas Taibi's avatar Nas Taibi Committed by GitHub
Browse files

add secretsmanager helloworld example (#303) (#304)



* add secrets manager hello world example

* Apply suggestions from code review

Co-authored-by: default avatarRussell Cohen <russell.r.cohen@gmail.com>

Co-authored-by: default avatarRussell Cohen <russell.r.cohen@gmail.com>

Co-authored-by: default avatarRussell Cohen <russell.r.cohen@gmail.com>
parent cd21b6d3
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
[package]
name = "secretsmanager-helloworld"
version = "0.1.0"
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Nas Taibi <naceredd@amazon.com>"]
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"] }
+49 −0
Original line number Diff line number Diff line
/*
 * 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");
}