クイック スタート:Python を使用して BLOB をアップロード、ダウンロード、および一覧表示するQuickstart: Upload, download, and list blobs with Python

このクイック スタートでは、Python を使用して、Azure Blob Storage 内のコンテナーでブロック BLOB のアップロード、ダウンロード、一覧取得を行う方法を説明します。In this quickstart, you see how to use Python to upload, download, and list block blobs in a container in Azure Blob storage. BLOB は、任意のサイズのテキストまたはバイナリ データ (画像、ドキュメント、ストリーミング メディア、アーカイブ データなど) を格納できるオブジェクトであり、Azure Storage において、ファイル共有、スキーマレス テーブル、メッセージ キューとは明確に区別されます。Blobs are simply objects that can hold any amount of text or binary data (such as images, documents, streaming media, archive data, etc.), and are distinct in Azure Storage from file shares, schemaless tables, and message queues. 詳細については、Azure Storage の概要に関するページを参照してください。(For more information, see Introduction to Azure Storage.)

注意

この記事で説明されている機能は、Data Lake Storage 上でのマルチプロトコル アクセスのパブリック プレビューに登録した場合にのみ、階層型名前空間を持つアカウントで使用できます。The features described in this article are available to accounts that have a hierarchical namespace only if you enroll in the public preview of multi-protocol access on Data Lake Storage. 制限事項を確認するには、既知の問題に関する記事を参照してください。To review limitations, see the known issues article.

前提条件Prerequisites

Azure Storage にアクセスするには、Azure サブスクリプションが必要です。To access Azure Storage, you'll need an Azure subscription. サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't already have a subscription, then create a free account before you begin.

Azure Storage へのアクセスはすべて、ストレージ アカウント経由で行われます。All access to Azure Storage takes place through a storage account. このクイック スタートでは、Azure portal、Azure PowerShell、または Azure CLI を使用して、ストレージ アカウントを作成します。For this quickstart, create a storage account using the Azure portal, Azure PowerShell, or Azure CLI. アカウントの作成については、「ストレージ アカウントの作成」を参照してください。For help creating the account, see Create a storage account.

次の追加の前提条件がインストールされていることを確認してください。Make sure you have the following additional prerequisites installed:

サンプル アプリケーションのダウンロードDownload the sample application

このクイック スタートのサンプル アプリケーションは、基本的な Python アプリケーションです。The sample application in this quickstart is a basic Python application.

アプリケーションのコピーを開発環境にダウンロードするには、git を使います。Use git to download a copy of the application to your development environment.

git clone https://github.com/Azure-Samples/storage-blobs-python-quickstart.git 

このコマンドを実行すると、Azure-Samples/storage-blobs-python-quickstart リポジトリがローカルの git フォルダーに複製されます。This command clones the Azure-Samples/storage-blobs-python-quickstart repository to your local git folder. Python プログラムを実行するには、リポジトリのルートにある example.py ファイルを開きます。To run the Python program, open the example.py file at the root of the repository.

Azure Portal で資格情報をコピーするCopy your credentials from the Azure portal

サンプル アプリケーションは、ストレージ アカウントへのアクセスを承認する必要があります。The sample application needs to authorize access to your storage account. アプリケーションには、ストレージ アカウントの資格情報を接続文字列の形式で提供します。Provide your storage account credentials to the application in the form of a connection string. ストレージ アカウントの資格情報を表示するには、次のように操作します。To view your storage account credentials:

  1. Azure Portal に移動します。Navigate to the Azure portal.

  2. 自分のストレージ アカウントを探します。Locate your storage account.

  3. ストレージ アカウントの概要の [設定] セクションで、 [アクセス キー] を選択します。In the Settings section of the storage account overview, select Access keys. お使いのアカウントのアクセス キーと接続文字列が表示されます。Your account access keys and connection string are displayed.

  4. ストレージ アカウントの名前をメモしておきます。認可を得るためには、この名前が必要となります。Note the name of your storage account, which you'll need for authorization.

  5. [key1][キー] 値を見つけ、 [コピー] ボタンをクリックしてアカウント キーをコピーします。Find the Key value under key1, and click the Copy button to copy the account key.

    Azure portal でアカウント キーをコピーする方法を示すスクリーン ショット

ストレージ接続文字列の構成Configure your storage connection string

アプリケーションで、ストレージ アカウント名とアカウント キーを指定して BlockBlobService オブジェクトを作成します。In the application, provide your storage account name and account key to create a BlockBlobService object. お使いの IDE のソリューション エクスプローラーから example.py ファイルを開きます。Open the example.py file from the Solution Explorer in your IDE. accountnameaccountkey の値をアカウント名とキーに置き換えます。Replace the accountname and accountkey values with your account name and key.

block_blob_service = BlockBlobService(
    account_name='accountname', account_key='accountkey')

サンプルを実行するRun the sample

このサンプルでは、"ドキュメント" フォルダーにテスト ファイルを作成します。This sample creates a test file in the Documents folder. サンプル プログラムは、Blob Storage にテスト ファイルをアップロードし、コンテナー内の BLOB を一覧表示し、新しい名前を付けてファイルをダウンロードします。The sample program uploads the test file to Blob storage, lists the blobs in the container, and downloads the file with a new name.

最初に、pip install を実行して依存関係をインストールします。First, install the dependencies by running pip install:

    pip install azure-storage-blob

次に、サンプルを実行します。Next, run the sample. 次の出力のようなメッセージが表示されます。You’ll see messages similar to the following output:

Temp file = C:\Users\azureuser\Documents\QuickStart_9f4ed0f9-22d3-43e1-98d0-8b2c05c01078.txt

Uploading to Blob storage as blobQuickStart_9f4ed0f9-22d3-43e1-98d0-8b2c05c01078.txt

List blobs in the container
         Blob name: QuickStart_9f4ed0f9-22d3-43e1-98d0-8b2c05c01078.txt

Downloading blob to C:\Users\azureuser\Documents\QuickStart_9f4ed0f9-22d3-43e1-98d0-8b2c05c01078_DOWNLOADED.txt

続行する前に、"ドキュメント" フォルダーに 2 つのファイルがあることを確認します。Before you continue, look in your Documents folder for the two files. それらを開くと、内容が同じであることがわかります。You can open them and see they're the same.

Azure Storage Explorer などのツールを使って、Blob Storage のファイルを表示することもできます。You can also use a tool such as the Azure Storage Explorer to view the files in Blob storage. Microsoft Azure Storage Explorer は無料のクロスプラットフォーム ツールであり、ストレージ アカウントの情報にアクセスできます。Azure Storage Explorer is a free cross-platform tool that allows you to access your storage account information.

ファイルを確認した後、任意のキーを押してデモを終了し、テスト ファイルを削除します。After you've verified the files, press any key to finish the demo and delete the test files. サンプルの機能がわかったら、example.py ファイルを開いてコードを確認します。Now that you know what the sample does, open the example.py file to look at the code.

サンプル コードを理解するUnderstand the sample code

それでは、しくみを理解するためにサンプル コードを見ていきましょう。Let’s walk through the sample code to understand how it works.

ストレージ オブジェクトへの参照を取得するGet references to the storage objects

最初に、Blob Storage へのアクセスと管理のために使用されるオブジェクトへの参照を作成します。First, you create the references to the objects used to access and manage Blob storage. これらのオブジェクトはお互いを基にして作成され、各オブジェクトは、一覧で次にあるオブジェクトによって使われます。These objects build on each other, and each is used by the next one in the list.

  • お使いのストレージ アカウントの Blob service を指す BlockBlobService オブジェクトをインスタンス化します。Instantiate the BlockBlobService object, which points to the Blob service in your storage account.

  • アクセスしているコンテナーを表す CloudBlobContainer オブジェクトをインスタンス化します。Instantiate the CloudBlobContainer object, which represents the container you're accessing. コンテナーは、コンピューターでフォルダーを使ってファイルを整理するのと同じように、BLOB を整理するために使われます。Containers are used to organize your blobs like you use folders on your computer to organize your files.

クラウド BLOB コンテナーを作成した後は、関心がある特定の BLOB を指す CloudBlockBlob オブジェクトをインスタンス化します。Once you have the Cloud Blob container, instantiate the CloudBlockBlob object that points to the specific blob that you're interested in. これにより、必要に応じて BLOB をアップロード、ダウンロード、コピーできるようになります。You can then upload, download, and copy the blob as you need.

重要

コンテナーの名前は小文字にする必要があります。Container names must be lowercase. コンテナーと BLOB の名前の詳細については、「Naming and referencing Containers, Blobs, and Metadata (コンテナー、BLOB、およびメタデータの名前付けと参照)」を参照してください。For more information about container and blob names, see Naming and referencing Containers, Blobs, and Metadata.

このセクションでは、オブジェクトをインスタンス化し、新しいコンテナーを作成した後、BLOB がパブリックになるようにコンテナーに対するアクセス許可を設定します。In this section, you instantiate the objects, create a new container, and then set permissions on the container so the blobs are public. コンテナーの名前は quickstartblobs です。The container is called quickstartblobs.

# Create the BlockBlockService that is used to call the Blob service for the storage account.
block_blob_service = BlockBlobService(
    account_name='accountname', account_key='accountkey')

# Create a container called 'quickstartblobs'.
container_name = 'quickstartblobs'
block_blob_service.create_container(container_name)

# Set the permission so the blobs are public.
block_blob_service.set_container_acl(
    container_name, public_access=PublicAccess.Container)

BLOB をコンテナーにアップロードするUpload blobs to the container

Blob Storage では、ブロック BLOB、追加 BLOB、およびページ BLOB がサポートされています。Blob storage supports block blobs, append blobs, and page blobs. 最もよく使われるのはブロック BLOB であり、このクイックスタートでもそれを使います。Block blobs are the most commonly used, and that's what is used in this quickstart.

ファイルを BLOB にアップロードするには、ディレクトリ名をローカル ドライブ上のファイル名と結合してファイルの完全なパスを取得します。To upload a file to a blob, get the full file path by joining the directory name with the file name on your local drive. その後、create_blob_from_path メソッドを使用して、指定したパスにファイルをアップロードできます。You can then upload the file to the specified path using the create_blob_from_path method.

サンプル コードは、アップロードとダウンロードに使うローカル ファイルを作成し、アップロードするファイルを full_path_to_file として、BLOB の名前を local_file_name として格納します。The sample code creates a local file to be used for the upload and download, storing the file to be uploaded as full_path_to_file and the name of the blob as local_file_name. 次の例では、ファイルを quickstartblobs という名前のコンテナーにアップロードします。The following example uploads the file to your container called quickstartblobs.

# Create a file in Documents to test the upload and download.
local_path = os.path.expanduser("~\Documents")
local_file_name = "QuickStart_" + str(uuid.uuid4()) + ".txt"
full_path_to_file = os.path.join(local_path, local_file_name)

# Write text to the file.
file = open(full_path_to_file, 'w')
file.write("Hello, World!")
file.close()

print("Temp file = " + full_path_to_file)
print("\nUploading to Blob storage as blob" + local_file_name)

# Upload the created file, use local_file_name for the blob name.
block_blob_service.create_blob_from_path(
    container_name, local_file_name, full_path_to_file)

Blob Storage では複数のアップロード方法を使うことができます。There are several upload methods that you can use with Blob storage. たとえば、メモリ ストリームがある場合は、create_blob_from_path ではなく create_blob_from_stream メソッドを使用できます。For example, if you have a memory stream, you can use the create_blob_from_stream method rather than create_blob_from_path.

ブロック BLOB の最大サイズは 4.7 TB であり、Excel スプレッドシートから大きなビデオ ファイルまで何にでも使うことができます。Block blobs can be as large as 4.7 TB, and can be anything from Excel spreadsheets to large video files. ページ BLOB は、主に、IaaS VM のバックアップ用の VHD ファイルに使われます。Page blobs are primarily used for the VHD files that back IaaS VMs. 追加 BLOB は、ファイルに書き込んでから詳細情報を追加し続ける場合などの、ログ記録に使用されます。Append blobs are used for logging, such as when you want to write to a file and then keep adding more information. BLOB ストレージに格納されているほとんどのオブジェクトはブロック BLOB です。Most objects stored in Blob storage are block blobs.

コンテナー内の BLOB を一覧表示するList the blobs in a container

list_blobs メソッドを使用して、コンテナー内のファイルの一覧を取得します。Get a list of files in the container with the list_blobs method. このメソッドは、ジェネレーターを返します。This method returns a generator. 次のコードは、BLOB の一覧を取得し、—ループ処理—して、コンテナー内に見つかった BLOB の名前を表示します。The following code retrieves the list of blobs—then loops through them—showing the names of the blobs found in a container.

# List the blobs in the container.
print("\nList blobs in the container")
generator = block_blob_service.list_blobs(container_name)
for blob in generator:
    print("\t Blob name: " + blob.name)

BLOB のダウンロードDownload the blobs

get_blob_to_path メソッドを使用して、ローカル ディスクに BLOB をダウンロードします。Download blobs to your local disk using the get_blob_to_path method. 次のコードは、前のセクションでアップロードされた BLOB をダウンロードします。The following code downloads the blob uploaded in a previous section. BLOB の名前にサフィックスとして _DOWNLOADED が追加されるため、ローカル ディスク上に両方のファイルが存在します。_DOWNLOADED is added as a suffix to the blob name so you can see both files on local disk.

# Download the blob(s).
# Add '_DOWNLOADED' as prefix to '.txt' so you can see both files in Documents.
full_path_to_file2 = os.path.join(local_path, string.replace(
    local_file_name, '.txt', '_DOWNLOADED.txt'))
print("\nDownloading blob to " + full_path_to_file2)
block_blob_service.get_blob_to_path(
    container_name, local_file_name, full_path_to_file2)

リソースのクリーンアップClean up resources

このクイック スタートでアップロードした BLOB が不要になった場合は、delete_container メソッドを使ってコンテナー全体を削除できます。If you no longer need the blobs uploaded in this quickstart, you can delete the entire container using the delete_container method. 代わりに個々のファイルを削除するには、delete_blob メソッドを使用します。To delete individual files instead, use the delete_blob method.

# Clean up resources. This includes the container and the temp files.
block_blob_service.delete_container(container_name)
os.remove(full_path_to_file)
os.remove(full_path_to_file2)

BLOB を使用する Python アプリケーションを開発するためのリソースResources for developing Python applications with blobs

Blob Storage を使用する Python 開発の詳細については、以下の追加リソースを参照してください。For more information about Python development with Blob storage, see these additional resources:

バイナリとソース コードBinaries and source code

クライアント ライブラリ リファレンスとサンプルClient library reference and samples

次の手順Next steps

このクイック スタートでは、Python を使ってローカル ディスクと Azure Blob Storage との間でファイルを転送する方法について学習しました。In this quickstart, you learned how to transfer files between a local disk and Azure Blob storage using Python. Blob Storage の操作の詳細を学習するには、Blob Storage の操作方法に進みます。To learn more about working with Blob storage, continue to the Blob storage How-to.

Storage Explorer と BLOB について詳しくは、「ストレージ エクスプローラーを使用した Azure Blob Storage リソースの管理」をご覧ください。For more information about the Storage Explorer and Blobs, see Manage Azure Blob storage resources with Storage Explorer.