private UploadArchiveResponse StoreArchive(Stream uncompressedContent, string archiveDescription)
{
using (
var glacierClient = new AmazonGlacierClient(new BasicAWSCredentials(GlacierAccessKey, new Secrets().GetGlacierSecretKey()),
GlacierRegion))
{
// zip to memory stream
var ms = new MemoryStream();
var zipper = new GZipStream(ms, CompressionLevel.Optimal);
uncompressedContent.CopyTo(zipper);
ms.Seek(0, SeekOrigin.Begin);
//calculate sha256 hash
var shaTree = TreeHashGenerator.CalculateTreeHash(ms);
ms.Seek(0, SeekOrigin.Begin);
var result =
glacierClient.UploadArchive(new UploadArchiveRequest()
{
AccountId = GlacierOwnerAccountID,
VaultName = GlacierVaultName,
ArchiveDescription = archiveDescription,
Body = ms,
Checksum = shaTree,
});
return result;
}
}