לא יודע אם זה עוד רלבנטי לך, אבל לתועלת הציבור.
תתקיני בפרויקט את הSDK הזה: https://aws.amazon.com/sdk-for-net/
(ישנה שם אפשרות להתקין את זה דרך Nuget)
הנה מחלקה שמשתמשת בAPI הזה כדי לגבות את הדטה בייסים שלי:
בהצלחה!
זה מציג את הקוד לא הכי מושלם..
using Amazon.S3;
using Amazon.S3.Transfer;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace AwsEmptyApp1
{
public class UploadFiles
{
string bucket = "";//your backet
string SubDirectoryInBucket = "";//your directory
Dictionary<string,string> allFiles = new Dictionary<string, string>(); //fileName, fullPath
public void Start()
{
try
{
//כאן נכתב הקוד שמגבה את הדטה בייסים השונים
//אחרי זה רצים בלולאה ויוצרים את מערך השמות שלהם עבור ההלאה
foreach (var db in dbNames)
{
var fileName = "";
var fullPath = "";
allFiles.Add(fileName, fullPath);
}
//העלאה לאמזון
Task.Run(async () =>
{
var isUpload = await UploadFiles(allFiles);
}).GetAwaiter().GetResult();
}
catch (Exception ex)
{
//
}
Console.WriteLine("---- DB Backup succesfuly --- ");
}
public static async Task<bool> UploadFolder(string pathDirectory)
{
IAmazonS3 s3Client = new AmazonS3Client();
var transfer = new TransferUtilityUploadDirectoryRequest();
transfer.BucketName = bucket;
transfer.KeyPrefix = SubDirectoryInBucket;
transfer.Directory = pathDirectory;
var transferUtility = new TransferUtility();
//כאן אפשר ליצור מנוי לפונקציה שמציגה את התקדמות ההעלאה
//transfer.UploadDirectoryProgressEvent += displayProgressFolder;
await transferUtility.UploadDirectoryAsync(transfer);
return true;
}
public static async Task<bool> UploadFiles(Dictionary<string, string> pathFiles)
{
IAmazonS3 s3Client = new AmazonS3Client();
var transferUtility = new TransferUtility();
foreach (var file in pathFiles)
{
var req = new TransferUtilityUploadRequest();
req.BucketName = bucket;
req.FilePath = file.Value;
req.Key = SubDirectoryInBucket + file.Key;
//כאן אפשר ליצור מנוי לפונקציה שמציגה את התקדמות ההעלאה
//req.UploadProgressEvent += displayProgressFile;
await transferUtility.UploadAsync(req);
}
return true;
}
}
}