【问题标题】:Read JSON file from Azure Blob Storage using bash script and write back to another file in blob storage使用 bash 脚本从 Azure Blob 存储读取 JSON 文件并写回 Blob 存储中的另一个文件
【发布时间】:2022-01-20 06:56:37
【问题描述】:

我在 Azure Blob 存储中存储了以下 JSON 文件 (product.json)。是否可以编写 bash 脚本从 blob 存储读取此文件进行一些更改并写回另一个 blob 容器。我想要的输出文件应该发生以下更改:

将“dev”替换为“qa”

{
    "ds_type": "saas_app",
    "ds_engine": "xxxx",
    "ds_display_name": "xxxx",
    "logo_url": "xxxx/xxxx.png",
    "base_template_path": "xxxx/xxxx/xxxx.cds.json",
    "authentication": {
        "type": "oauth",
        "client_id": "xxxx",
        "client_secret": "xxxx",
        "scope": ["crm.objects.contacts.read", "crm.objects.owners.read"],
        "grant_type": "authorization_code",
        "oauth_base_url": "https://xxxx",
        "oauth_api_url": "https://xxxx",
        "redirect_uri": "https://xxxx-dev.xxxx.com/code",
        "auth_url": "oauth/authorize",
        "token_url": "oauth/v1/token"
    }
}

【问题讨论】:

  • 使用jq 之类的外部实用程序修改JSON 没有任何问题,但是如何从blob 中获取JSON?你有没有尝试过?
  • 如果你只是想转换 JSON,我会考虑一些 PaaS 服务,比如 Azure 数据工厂sqlservercentral.com/blogs/…
  • @Fravadona 我还没有尝试任何东西,我使用 az storage blob 下载命令获取 json 文件
  • @silent 我只能使用 bash 脚本。
  • @RahulKumarSurati 是一次性场景还是事件触发?

标签: linux bash azure azure-blob-storage


【解决方案1】:

请按照以下步骤实现您的要求。

我使用的是 Ubuntu 虚拟机(18.04 版)

第 1 步:使用以下命令安装 AZ CLI 模块

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

第 2 步:将 Blob 文件从存储帐户下载到本地。 下面是本地下载的容器和blob图片。

az storage blob download --container-name "your container name" --file "Location of file where you want to copy data" --name "Blob Name" --account-name "Storage Account name" --account-key "Storage Account Access Key"

第 3 步:使用 cat 命令检查文件内容

cat ansuman.json

第 4 步:运行以下命令以更改您的 json 文件

replace "dev" "qa" -- package.json

第 5 步:现在将文件最终上传到另一个容器中。

az storage blob upload --container-name "your conatiner name where you want to upload" --file "location of local file that is going to upload" --account-name "Storage account name" --account-key "Storage Account Access Key"

参考:https://docs.microsoft.com/en-us/cli/azure/storage/blob?view=azure-cli-latest#az_storage_blob_upload


更新

请按照以下步骤更改 JSON 文件,无需在本地下载。

第 1 步:配置 Microsoft 包存储库。

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

第 2 步:在您的 Linux 机器上安装 Blobfuse(我使用的是 Ubuntu 版本 18.04)

sudo apt-get install blobfuse

第 3 步:准备安装 使用 SSD 作为临时路径。

sudo mkdir /mnt/resource/blobfusetmp -p
sudo chown <youruserofVM> /mnt/resource/blobfusetmp

第 4 步:使用以下方法创建此文件:

touch ~/fuse_connection.cfg

第 5 步:在其中配置您的存储帐户凭据。 fuse_connection.cfg 文件。

accountName myaccount
accountKey storageaccesskey
containerName mycontainer

第 6 步:创建并编辑此文件后,请确保限制访问权限,以免其他用户读取。

chmod 600 ~/fuse_connection.cfg

第 7 步:创建一个空目录用于挂载。

mkdir ~/mycontainer

第 8 步:要挂载 blobfuse,请使用您的用户运行以下命令。此命令将 'fuse_connection.cfg' 中指定的容器挂载到位置 '/mycontainer`

sudo blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp  --config-file=fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

第 9 步:运行以下命令以更改您的 json 文件

replace "dev" "qa" -- package.json

参考:https://docs.microsoft.com/en-us/azure/storage/blobs/storage-how-to-mount-container-linux

【讨论】:

    猜你喜欢
    • 2021-06-11
    • 2012-06-16
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 2021-08-26
    • 1970-01-01
    • 2021-07-09
    相关资源
    最近更新 更多