재우니의 블로그


aws s3 에서 이미 올라간 파일을 복사해서 다른 이름으로 변경할때 사용하면 좋을 듯 싶습니다.

아래 샘플은 copy 처리를 위해 CopyObjectRequest 객체를 사용한 부분이 있지만, 삭제 하는 부분은

별도로 구현해야 합니다. 최종 마지막 복사 변경 작업 완료 후 검열이 끝나고 나서 최종 이전의 파일을 삭제하는게 좋을 듯 싶네요.




using Amazon.S3;
using Amazon.S3.Model;
using System;

namespace AWSFile
{
internal class Program
{
public static readonly string AWSS3Doamin = "https://s3.ap-northeast-2.amazonaws.com";
public static readonly string AWSAccessKey = "AWSAccessKey";
public static readonly string AWSSecretKey = "AWSSecretKey";
public static readonly string AWSBucketname = "Bucketname";

private static IAmazonS3 s3Client = null;
private static AmazonS3Config cfg = null;

private static void Main(string[] args)
{
cfg = new AmazonS3Config();
cfg.RegionEndpoint = Amazon.RegionEndpoint.APNortheast2;
s3Client = new AmazonS3Client(AWSAccessKey, AWSSecretKey, cfg);

var s3FilePath = "NPM-S3/FileData/_Upload/PayOut/NS_DA3BDA5F5BA74710BC03";

try
{
CopyObjectRequest req = new CopyObjectRequest
{
SourceBucket = AWSBucketname,
SourceKey = s3FilePath,
DestinationBucket = AWSBucketname,
DestinationKey = s3FilePath + ".pdf" //변경할 경로 + 파일명
};
CopyObjectResponse response = s3Client.CopyObject(req);
}
catch (AmazonS3Exception s3Exception)
{
Console.WriteLine(s3Exception.Message,
s3Exception.InnerException);
}

//GetObjectRequest request = new GetObjectRequest();

//GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
//request.BucketName = AWSBucketname;

//foreach (var file in files.Split(','))
//{
// request.Key = s3FilePath + file.Replace("\r\n","");

// try
// {
// var obj = s3Client.GetObject(request);

// if (obj != null)
// {
// using (System.IO.StreamWriter ifile =
//new System.IO.StreamWriter(@"F:\개인자료\SampleSource\AWSFile\AWSFile\files.txt", true))
// {
// ifile.WriteLine(request.Key);
// }

// Console.WriteLine(request.Key);
// }
// }
// catch
// {
// Console.WriteLine(" 없음 :" + request.Key);
// }
//}

Console.WriteLine("==========end==========");

Console.ReadKey();
}
}
}