Last active
March 15, 2024 19:33
-
-
Save elmarx/e21d9fa5dba45a0f8fb6c910fd598ac7 to your computer and use it in GitHub Desktop.
access IBM COS with aws-rust-sdk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use aws_sdk_s3::Client; | |
// sample bucket name of an existing bucket | |
const BUCKET_NAME: &str = "sweap-ui-test-dev"; | |
/// create a service-key with HMAC enabled, | |
/// get the content like this: `ibmcloud resource service-key my-key` | |
/// | |
/// set the environment-variables: | |
/// AWS_ACCESS_KEY_ID= the cos_hmac_keys.access_key_id | |
/// AWS_SECRET_ACCESS_KEY = the cos_hmac_keys.secret_access_key | |
/// AWS_REGION = "dummy" | |
#[tokio::main] | |
async fn main() -> anyhow::Result<()> { | |
let config = aws_config::from_env() | |
// get this from the endpoints section of the Cloud Object Storage resource | |
.endpoint_url("https://s3.eu-de.cloud-object-storage.appdomain.cloud") | |
// .region("dummy") | |
.load() | |
.await; | |
let client = Client::new(&config); | |
let response = client.list_objects_v2().bucket(BUCKET_NAME).send().await?; | |
for object in response.contents() { | |
println!("{}", object.key().unwrap_or_default()); | |
} | |
Ok(()) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use aws_config::Region; | |
use aws_credential_types::provider::SharedCredentialsProvider; | |
use aws_credential_types::Credentials; | |
use aws_sdk_s3::Client; | |
/// create a service-key with HMAC enabled, | |
/// get the content like this: `ibmcloud resource service-key my-key` | |
const AWS_ACCESS_KEY_ID: &str = "this is cos_hmac_keys.access_key_id"; | |
const AWS_SECRET_ACCESS_KEY: &str = "this is cos_hmac_keys.secret_access_key"; | |
// get this from the endpoints section of the Cloud Object Storage resource | |
const ENDPOINT_URL: &str = "https://s3.eu-de.cloud-object-storage.appdomain.cloud"; | |
const BUCKET_NAME: &str = "sample bucket name to list"; | |
#[tokio::main] | |
async fn main() -> anyhow::Result<()> { | |
let c = Credentials::new( | |
AWS_ACCESS_KEY_ID, | |
AWS_SECRET_ACCESS_KEY, | |
None, | |
None, | |
"hardcoded-credentials", | |
); | |
let c = SharedCredentialsProvider::new(c); | |
let config = aws_config::SdkConfig::builder() | |
.credentials_provider(c) | |
.endpoint_url(ENDPOINT_URL) | |
// if not set, will error with "A region must be set when sending requests to S3." | |
.region(Some(Region::new("dummy"))) | |
.build(); | |
let client = Client::new(&config); | |
let response = client.list_objects_v2().bucket(BUCKET_NAME).send().await?; | |
for object in response.contents() { | |
println!("{}", object.key().unwrap_or_default()); | |
} | |
Ok(()) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment