use dotenv::dotenv; use std::env; use tokio::io::AsyncReadExt; use rusoto_s3::*; use rusoto_core::*; #[tokio::main] async fn main() { dotenv(); let aws_access_key = env::var("AWS_ACCESS_KEY_ID").unwrap(); let aws_secret_key = env::var("AWS_SECRET_ACCESS_KEY").unwrap(); std::env::set_var("AWS_ACCESS_KEY_ID", aws_access_key); std::env::set_var("AWS_SECRET_ACCESS_KEY", aws_secret_key); s3_upload().await; } async fn s3_upload() -> Result<(), Box<dyn std::error::Error>> { let s3_client = S3Client::new("ap-northeast-1".parse().unwrap()); let mut file = tokio::fs::File::open("./data/test.png").await?; let mut buffer = Vec::new(); file.read_to_end(&mut buffer).await?; let result = s3_client.put_object(PutObjectRequest { bucket: String::from("hpscript"), key: "test.png".to_string(), body: Some(StreamingBody::from(buffer)), ..Default::default() }).await?; // do thing with result Ok(()) }
データがうまくアップロードされているのが分かります。なるほどね〜