你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何在 Azure 能源数据管理器中使用文件服务上传文件

本文介绍如何使用 Microsoft Azure 能源数据管理器中的文件服务 API 上传大文件 (~5GB)。 上传过程涉及到通过文件 API 提取已签名的 URL,然后使用该 URL 将文件存储到 Azure Blob 存储中

生成已签名的 URL

在 Azure Cloud Bash 中运行以下 curl 命令,以从文件服务中获取 Azure 能源数据管理器资源的给定数据分区的已签名 URL。

    curl --location 'https://<URI>/api/file/v2/files/uploadURL' \
    --header 'data-partition-id: <data-partition-id>' \
    --header 'Authorization: Bearer <access_token>' \
    --header 'Content-Type: text/plain'

示例请求

假设有一个名为“medstest”的 Azure 能源数据管理器资源,其数据分区名为“dp1”

    curl --location --request POST 'https://medstest.energy.azure.com/api/file/v2/files/uploadURL' \
    --header 'data-partition-id: medstest-dp1' \
    --header 'Authorization: Bearer  eyxxxxxxx.........................' \
    --header 'Content-Type: text/plain'

示例响应

{
    "FileID": "2c5e7ac738a64eaeb7c0bc8bd47f90b6",
    "Location": {
        "SignedURL": "https://dummy.bloburl.com",
        "FileSource": "/osdu-user/1686647303778-2023-06-13-09-08-23-778/2c5e7ac738a64eaeb7c0bc8bd47f90b6"
    }
}

然后可以使用响应对象中的 SignedURL 键将文件上传到 Azure Blob 存储中。 根据 OSDU 的安全增强策略,文件服务和数据集服务的 SignedURL 的有效期为 1 小时。

上传小于 5 GB 的文件

若要上传小于 5 GB 的文件,可以直接使用 PUT Blob API 调用将文件上传到 Azure Blob 存储

示例 Curl 请求

    curl --location --request PUT '<SIGNED_URL>' \
    --header 'x-ms-blob-type: BlockBlob' \
    --header 'Content-Type: <file_type>' \ # for instance application/zip or application/csv or application/json depending on file type
    --data '@/<path_to_file>'

如果上传成功,我们会在响应中收到 201 Created 状态代码

上传 5 GB 或更大的文件

若要上传 >= 5 GB 的文件,我们需要使用 azcopy 实用工具,因为单个 PUT Blob 调用无法上传大于 5 GB 的文件。文档链接

步骤

  1. 使用此链接下载 azcopy

  2. 运行此命令来上传文件

    azcopy copy "<path_to_file>" "signed_url"
  1. 示例响应
    INFO: Could not read destination length. If the destination is write-only, use --check-length=false on the command line.
    100.0 %, 1 Done, 0 Failed, 0 Pending, 0 Skipped, 1 Total
    
    Job 624c59e8-9d5c-894a-582f-ef9d3fb3091d summary
    Elapsed Time (Minutes): 0.1002
    Number of File Transfers: 1
    Number of Folder Property Transfers: 0
    Number of Symlink Transfers: 0
    Total Number of Transfers: 1
    Number of File Transfers Completed: 1
    Number of Folder Transfers Completed: 0
    Number of File Transfers Failed: 0
    Number of Folder Transfers Failed: 0
    Number of File Transfers Skipped: 0
    Number of Folder Transfers Skipped: 0
    TotalBytesTransferred: 1367301
    Final Job Status: Completed

后续步骤

首先请将数据引入 Azure 能源数据管理器资源。