Файл, который я получаю в папке назначения, является ненужным. Что я делаю не так?
Исходный файл имеет расширение «.log.gz».
[Function("Function1")]
public async Task Run([TimerTrigger("0 */5 * * * *", RunOnStartup = true)] TimerInfo myTimer)
{
//Reading the config file. For local it is local.settings.json
var config = new ConfigurationBuilder()
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
string blbobConnectionString = config["AzureWebJobsStorage"];
BlobContainerClient blobContainerClient = new BlobContainerClient(blbobConnectionString, "abc");
BlobContainerClient destinationBlobContainerClient = new BlobContainerClient(blbobConnectionString, "xyz");
var blobs = blobContainerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
_logger.LogInformation($"Blob Name: {blob.Name}");
BlobClient blobClient = blobContainerClient.GetBlobClient(blob.Name);
using (Stream blobStream = await blobClient.OpenReadAsync())
using (GZipStream decompressionStream = new GZipStream(blobStream, CompressionMode.Decompress))
using (StreamReader reader = new StreamReader(decompressionStream, Encoding.Default))
{
string line;
while ((line = await reader.ReadLineAsync()) != null)
{
// Process the line here
Console.WriteLine(line);
}
BlobClient destinationBlobClient = destinationBlobContainerClient.GetBlobClient(blob.Name);
blobStream.Position = 0;
await destinationBlobClient.UploadAsync(blobStream);
}
blobClient.DeleteAsync(DeleteSnapshotsOption.None);
}
}
Изменить 1:
Я перечитал большой двоичный объект для загрузки, но все равно получаю ту же ошибку. Ниже приведен обновленный код.
[Function("Function1")]
public async Task Run([TimerTrigger("0 */5 * * * *", RunOnStartup = true)] TimerInfo myTimer)
{
_logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
if (myTimer.ScheduleStatus is not null)
{
_logger.LogInformation($"Next timer schedule at: {myTimer.ScheduleStatus.Next}");
}
//Reading the config file. For local it is local.settings.json
var config = new ConfigurationBuilder()
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
string blbobConnectionString = config["AzureWebJobsStorage"];
BlobContainerClient blobContainerClient = new BlobContainerClient(blbobConnectionString, "abc");
BlobContainerClient destinationBlobContainerClient = new BlobContainerClient(blbobConnectionString, "xyz");
var blobs = blobContainerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
_logger.LogInformation($"Blob Name: {blob.Name}");
BlobClient blobClient = blobContainerClient.GetBlobClient(blob.Name);
using (Stream blobStream = await blobClient.OpenReadAsync())
using (GZipStream decompressionStream = new GZipStream(blobStream, CompressionMode.Decompress))
using (StreamReader reader = new StreamReader(decompressionStream, Encoding.Default))
{
string line;
while ((line = await reader.ReadLineAsync()) != null)
{
// Process the line here
Console.WriteLine(line);
JObject json = JObject.Parse(line);
string dateOfEvent = System.Convert.ToString( json["Datetime"]);
string datePattern = "M/d/yyyy h
DateTime parsedDate;
if (DateTime.TryParseExact(dateOfEvent, datePattern, null, DateTimeStyles.None, out parsedDate))
Console.WriteLine("Parsed date: "+ parsedDate);
json["Datetime"] = parsedDate;
line = json.ToString();
Console.WriteLine(System.DateTime.UtcNow.ToString("YYYY-MM-DDThh:mm:ssZ"));
dateOfEvent = parsedDate.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture);
var datestring = DateTime.UtcNow.ToString("r");
var jsonBytes = Encoding.UTF8.GetBytes(line);
string stringToHash = "POST\n" + jsonBytes.Length + "\napplication/json\n" + "x-ms-date:" + datestring + "\n/api/logs";
string hashedString = BuildSignature(stringToHash, sharedKey);
string signature = "SharedKey " + customerId + ":" + hashedString;
PostData(signature, datestring, line);
}
}
BlobClient destinationBlobClient = destinationBlobContainerClient.GetBlobClient(blob.Name);
//blobStream.Position = 0;
await destinationBlobClient.UploadAsync(await blobClient.OpenReadAsync());
blobClient.DeleteAsync(DeleteSnapshotsOption.None);
}
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... azure-blob
Мобильная версия