📌  相关文章
📜  Microsoft Azure – 在应用服务中的容器应用中挂载 Azure 存储(1)

📅  最后修改于: 2023-12-03 15:17:38.202000             🧑  作者: Mango

Microsoft Azure – 在应用服务中的容器应用中挂载 Azure 存储

在云端应用程序的开发中,存储扮演着重要的角色。 Microsoft Azure 提供了一些强大的存储解决方案,包括 Azure Blob 存储、 Azure 文件存储、 Azure 队列存储和 Azure 表存储。

本文将重点介绍在应用服务中的容器应用中,如何使用 Azure 存储。

Azure Blob 存储

Azure Blob 存储是一种适用于大量非结构化数据的对象存储解决方案。 Blob 存储支持多种类型的数据,包括文本和二进制数据。

要在应用服务中的容器应用中连接到 Azure Blob 存储,需要先获取连接字符串。可以在 Azure 门户中获取连接字符串,也可以使用 Azure CLI 命令行工具。

图形用户界面

要获取连接字符串的方法如下所示:

  1. 在 Azure 门户中,选择 Azure Blob 存储帐户。
  2. 在 Azure Blob 存储帐户概述页上,找到“访问密钥”部分。
  3. 单击“复制”按钮复制帐户名称和密钥。
  4. 在容器应用中,添加以下环境变量:
AZURE_STORAGE_CONNECTION_STRING=<your-storage-connection-string>
Azure CLI

可以使用 Azure CLI 获取连接字符串。打开 Azure CLI 并使用以下命令登录:

az login

使用以下命令获取存储帐户的连接字符串:

az storage account show-connection-string \
    --name <your-storage-account-name> \
    --resource-group <your-resource-group-name>
在应用中使用 Blob 存储

在应用程序中使用 Azure Blob 存储时,需要使用 Azure 存储 SDK。在 Python 中,可以使用 PIP 安装 Azure 存储 SDK:

pip install azure-storage-blob

以下示例演示了如何在 Flask 应用程序中使用 Azure Blob 存储:

from flask import Flask, render_template
from azure.storage.blob import BlockBlobService

app = Flask(__name__)

@app.route('/')
def index():
    block_blob_service = BlockBlobService()
    container_name = 'mycontainer'
    blob_name = 'image.jpg'
    sas_token = block_blob_service.generate_blob_shared_access_signature(container_name, blob_name, permission=BlockBlobService.READ, expiry=datetime.utcnow() + timedelta(hours=1))
    blob_url_with_sas = f"{block_blob_service.make_blob_url(container_name, blob_name)}?{sas_token}"
    return render_template('index.html', img_url=blob_url_with_sas)

在此示例中,Flask 应用程序使用 Azure 存储 SDK 生成一个共享访问签名令牌,然后将其添加到 Blob 的 URL 中。

Azure 文件存储

Azure 文件存储是一种用于支持 SMB 协议的云服务。 Azure 文件存储使得应用程序能够与多个 VM 共享文件存储。

访问 Azure 文件存储

为了访问 Azure 文件存储,应用程序需要使用用户名和密码进行身份验证。

要在应用服务中的容器应用中连接到 Azure 文件存储,需要在容器设置中添加以下环境变量:

AzureFilesAccountName=<your-storage-account-name>
AzureFilesAccountKey=<your-storage-account-key>

可以在文件共享设置页上找到存储帐户密钥。

在应用中使用 Azure 文件存储

以下示例演示了如何在 Django 应用程序中使用 Azure 文件存储:

import os
from azure.storage.file import FileService

file_service = FileService(account_name=os.environ['AzureFilesAccountName'], account_key=os.environ['AzureFilesAccountKey'])

def download_file(request):
    share_name = 'myshare'
    directory_name = 'mydir'
    file_name = 'myfile.txt'
    local_file_path = '/tmp/myfile.txt'

    file_service.get_file_to_path(
        share_name=share_name,
        directory_name=directory_name,
        file_name=file_name,
        file_path=local_file_path
    )

    with open(local_file_path) as f:
        data = f.read()

    return HttpResponse(data)

在此示例中,Django 应用程序使用 Azure 存储 SDK 下载文件。 源代码获取帐户名称和密钥,并使用文件服务 SDK 创建文件服务。 然后,它使用文件服务 SDK 从文件共享中下载文件,并返回下载的文件内容。

结论

Azure 存储提供了许多功能强大的存储解决方案,可以用于云中的应用程序。 本文介绍了如何在应用服务中的容器应用中使用 Azure Blob 存储和 Azure 文件存储。 无论你使用哪种 Azure 存储解决方案,使用同一开发模型可以更容易地在云中开发和部署应用程序。