-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAzureStorageController.csx
61 lines (47 loc) · 2.1 KB
/
AzureStorageController.csx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#r "Newtonsoft.Json"
#r "Microsoft.WindowsAzure.Storage"
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.RetryPolicies;
/// <summary>
/// Lineサーバから取得したStreamを指定ストレージにアップロード
/// </summary>
static async Task PutLineContentsToStorageAsync(Stream stream,string ContainerName,string PathWithFileName)
{
// ストレージアクセス情報の作成
var storageAccount = CloudStorageAccount.Parse(Environment.GetEnvironmentVariable("AzureStorageAccount"));
var blobClient = storageAccount.CreateCloudBlobClient();
// retry設定 3秒3回
blobClient.DefaultRequestOptions.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(3), 3);
var container = blobClient.GetContainerReference(ContainerName);
await container.CreateIfNotExistsAsync();
// ストレージアクセスポリシーの設定
/*container.SetPermissions(
new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Off,
});
*/
// Blob へファイルをアップロード
var blob = container.GetBlockBlobReference(PathWithFileName);
await blob.UploadFromStreamAsync(stream);
}
/// <summary>
/// 指定ストレージからコンテンツを取得
/// </summary>
/// <returns>Stream</returns>
static async Task<Stream> GetLineContentsFromStorageAsync(string ContainerName, string PathWithFileName)
{
// ストレージアクセス情報の作成
var storageAccount = CloudStorageAccount.Parse(Environment.GetEnvironmentVariable("AzureStorageAccount"));
var blobClient = storageAccount.CreateCloudBlobClient();
// retry設定 3秒3回
blobClient.DefaultRequestOptions.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(3), 3);
var container = blobClient.GetContainerReference(ContainerName);
// Blob からダウンロード
var blob = container.GetBlockBlobReference(PathWithFileName);
var memoryStream = new MemoryStream();
await blob.DownloadToStreamAsync(memoryStream);
return memoryStream;
}