在AWS S3存储桶上创建.csv文件时遇到问题。我已经尝试了PutObjectRequest和TransferUtility库。
我认为这就是我写入csvText.csv文件的方式。数据写在内存中,因此我无法将数据物理存储在服务器上的文件中。
问题:文件(userData.csv)已创建,但不包含任何数据。
当我在PC上本地运行此应用程序时,它将在S3中创建并填充文件。但不是通过AWS URL调用应用程序,而是创建了文件,但没有在csv中填充任何数据。
环境和工作流程: 我的.NET Web应用程序(GatherUserData)位于EC2实例上,该实例由第三方应用程序(CS)的CreateUser()方法调用。
然后我的应用程序通过GET请求调用(CS)。 GETS用户数据,然后创建一个CSV文件并将其放在S3存储桶中。
我的代码:
public string ExportUserDataCSVFile(GetUserData userData)
{
csvText = new StringBuilder();
try
{
Data1.Customfield[] customeFields = userData.data.customFields;
if (userData != null)
{
//header
csvText.AppendLine(GetSingleUserCSVHeader());
//UserID
csvText.Append(userData.data.userId);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return csvText.ToString();
}
CreateCsvInAws类:
public static void CreateCsvInAws(string csvText)
{
try
{
MemoryStream ms = new MemoryStream();
BinaryWriter bw = new BinaryWriter(ms);
bw.Write(csvText.ToCharArray());
bw.Flush();
bw.Close();
s3Client =新的AWSClient();
PutObjectRequest pr = new PutObjectRequest
{
BucketName = bucketName,
Key = keyName,
ContentBody = csvText, {I can see the user data here, but it doesn't get written to the file}
ContentType = "application/octet-stream",
CannedACL = "bucket-owner-full-control"
};
PutObjectResponse response = s3Client.PutObject(pr);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered '{0}' when writing");
}
catch (Exception e)
{
Console.WriteLine("unknown error '{0}' again");
}
}