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(())
}
データがうまくアップロードされているのが分かります。なるほどね〜
