Amazon S3 examples using AWS SDK for .NET
如何授予对 Amazon S3 存储桶中某些对象的公开读取访问权限
如何限制用户的控制台访问权限,访问某个特定的 Amazon S3 存储桶或文件夹
aws youtube官方视频教程:
AWS S3 Access Denied when open object URL in browser
code example:将文件上传到s3指定文件夹下
/// </summary>
/// <param name="S3RegionEndpoint"></param>
/// <param name="S3Accesskey"></param>
/// <param name="S3Secretkey"></param>
/// <param name="toUploadedFileFullPath"></param>
/// <param name="S3Bucket"></param>
/// <param name="folderName"></param>
/// <returns></returns>
public static async Task<string> UploadFileToAWSAmazonS3(string S3RegionEndpoint, string S3Accesskey,
string S3Secretkey, string toUploadedFileFullPath, string S3Bucket, string folderName)
{
if (!string.IsNullOrEmpty(S3RegionEndpoint) && !string.IsNullOrEmpty(S3Accesskey)
&& !string.IsNullOrEmpty(S3Secretkey))
{
//jobLog.AppendDebugInfo($"User S3 start.");
try
{
var fieldInfo = typeof(RegionEndpoint).GetField(S3RegionEndpoint);
var region = (fieldInfo.GetValue(typeof(RegionEndpoint)) as RegionEndpoint);
var client = new AmazonS3Client(S3Accesskey, S3Secretkey, region);
var folder = folderName;
/*
aws 文件夹:如果有就不创建,没有才创建,但是相同的文件名会被覆盖掉
*/
var folderPutRequest = new PutObjectRequest
{
BucketName = S3Bucket,
Key = folder
};
PutObjectResponse folderResponse = await client.PutObjectAsync(folderPutRequest);
if (folderResponse.HttpStatusCode == System.Net.HttpStatusCode.OK && !string.IsNullOrEmpty(folderResponse.ETag))
{
var fielName = Path.GetFileName(toUploadedFileFullPath);
var putRequest = new PutObjectRequest
{
BucketName = S3Bucket,
Key = folder + "/" + fielName,
FilePath = toUploadedFileFullPath
};
PutObjectResponse response = await client.PutObjectAsync(putRequest);
string eTag = response.ETag;
if (!string.IsNullOrEmpty(eTag)) return eTag;
}
}
catch (AmazonS3Exception e)
{
Console.WriteLine(
"Error encountered ***. Message:'{0}' when writing an object"
, e.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
}
return null;
}
return null;
}