Windows AzureでBLOBコンテナー名の名前を変更する方法はありますか?
5 に答える
これで、Microsoftの「 MicrosoftAzure Storage Explorer」(バージョン0.8.3以降)を使用してコンテナーの名前を変更できます。このツールを使用して、Azureテーブルとファイル共有の名前を変更することもできます。こちらのリリースノートをご覧ください。
この機能の使用中は、次の免責事項があることに注意してください。
名前の変更は、新しい名前にコピーしてから、ソースアイテムを削除することで機能します。現在、BLOBコンテナーの名前を変更すると、コンテナーのプロパティとメタデータが失われ、BLOBが多数ある場合は時間がかかることがあります。
したがって、これは舞台裏での実際の名前変更ではなく、読み取り/書き込み/トランザクションのコストが発生します。
アップデート
下記のヌリ・タスデミールからの回答をご覧ください。
いいえ。WindowsAzureでBLOBコンテナーの名前を変更することはできません。できることは、新しい名前で新しいBLOBコンテナーを作成し、古いBLOBコンテナーから新しいBLOBコンテナーにBLOBをコピーすることです。BLOBがコピーされたら、古いBLOBコンテナーを削除できます。CloudでBLOBのコピーを実行している場合、この操作は非同期であることに注意してください。したがって、BLOBコンテナを削除する前に、BLOBが完全にコピーされていることを確認してください。
このRenameBlobメソッドを使用すると、Azureコンテナー内のフォルダーまたはファイルの名前を変更できます。
- album1 / image1.jpg-> album2 /image1.jpg
- album1 / image1.jpg-> album1 / image2.jpg
HTH
public class AzureStorageService
{
readonly CloudStorageAccount _storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
public void RenameBlob(string oldName, string newName)
{
var blobClient = _storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("MyContainer");
var blobs = container.GetDirectoryReference(oldName).ListBlobs();
foreach (var item in blobs)
{
string blobUri = item.Uri.ToString();
var oldBlob = container.GetBlockBlobReference(blobUri);
var newBlob = container.GetBlockBlobReference(blobUri.Replace(oldName, newName));
newBlob.StartCopyFromBlob(oldBlob);
oldBlob.Delete();
}
}
}