8 changed files with 95 additions and 18 deletions
@ -0,0 +1,30 @@ |
|||||||
|
use std::sync::Arc; |
||||||
|
use aws_credential_types::Credentials; |
||||||
|
use aws_sdk_kinesis::{Client, Config}; |
||||||
|
use rusoto_core::{Region, HttpClient}; |
||||||
|
use rusoto_core::credential::{StaticProvider, ProvideAwsCredentials}; |
||||||
|
use rusoto_s3::{S3Client, S3, GetObjectRequest}; |
||||||
|
use tokio::io::AsyncReadExt; |
||||||
|
use tokio::sync::OnceCell; |
||||||
|
|
||||||
|
static AWS_S3_CLIENT: OnceCell<Arc<S3Client>> = OnceCell::const_new(); |
||||||
|
|
||||||
|
async fn initialize_data() -> Arc<S3Client> { |
||||||
|
let config = crate::config::get_config() |
||||||
|
.await; |
||||||
|
|
||||||
|
let access_key_id = &config.kinesis_stream.node.access_key.clone(); |
||||||
|
let secret_access_key = &config.kinesis_stream.node.secret_key.clone(); |
||||||
|
let region = &config.kinesis_stream.node.region.clone(); |
||||||
|
|
||||||
|
let credentials_provider = StaticProvider::new_minimal(access_key_id.to_string(), secret_access_key.to_string()); |
||||||
|
let s3_client = S3Client::new_with(HttpClient::new().expect("failed to create request dispatcher"), credentials_provider, region.parse().unwrap()); |
||||||
|
|
||||||
|
Arc::new(s3_client) |
||||||
|
} |
||||||
|
|
||||||
|
async fn get_client() -> Arc<S3Client> { |
||||||
|
AWS_S3_CLIENT.get_or_init(initialize_data) |
||||||
|
.await |
||||||
|
.clone() |
||||||
|
} |
||||||
Loading…
Reference in new issue