You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用azcopy操作Azure Files:无需手动获取SAS令牌的认证方式咨询

Azcopy 上传/下载Azure Files的替代认证方式及SAS复用方案

完全懂你的困扰!每次跑去Azure门户复制SAS令牌确实够繁琐,CLI本来就是为了提升效率、实现自动化,肯定有更顺畅的操作方式,下面给你详细拆解:

一、不用SAS令牌的认证方式(更推荐)

1. Azure AD身份认证

这是最省心的方式,完全不需要生成SAS令牌。步骤很简单:

  • 先通过Azure CLI登录你的账号:az login,按照提示完成登录即可。
  • 确保你的Azure账号被分配了存储文件数据参与者(或对应权限的角色),这样才有读写Azure Files的权限。
  • 之后执行Azcopy命令时,直接省略SAS令牌部分就行,比如上传命令:
    azcopy copy '<local-file-path>' 'https://<storage-account-name>.file.core.windows.net/<file-share-name>' --recursive
    
    第一次执行时可能会弹出浏览器让你完成Azure AD登录,后续凭证会被缓存,不用重复操作。

2. 服务主体认证(适合自动化脚本场景)

如果是写脚本批量处理或者定时任务,用服务主体认证更合适,全程无需手动介入:

  • 先创建一个Azure AD服务主体,给它分配Azure Files的读写权限。
  • 设置三个环境变量:
    • Windows:
      set AZCOPY_SPA_CLIENT_ID="<服务主体ID>"
      set AZCOPY_SPA_CLIENT_SECRET="<服务主体密钥>"
      set AZCOPY_TENANT_ID="<租户ID>"
      
    • Linux/macOS:
      export AZCOPY_SPA_CLIENT_ID="<服务主体ID>"
      export AZCOPY_SPA_CLIENT_SECRET="<服务主体密钥>"
      export AZCOPY_TENANT_ID="<租户ID>"
      
  • 之后执行Azcopy命令时,就会自动用服务主体的身份完成认证,完全不用处理令牌。

二、SAS令牌的保存复用方法

如果你还是习惯用SAS,也可以把令牌存起来避免重复复制:

  • 存到环境变量:把SAS令牌设置为环境变量AZCOPY_SAS_TOKEN,之后命令里就不用带SAS了:
    • Windows:set AZCOPY_SAS_TOKEN="<你的SAS令牌>"
    • Linux/macOS:export AZCOPY_SAS_TOKEN="<你的SAS令牌>"
      上传命令简化为:
    azcopy copy '<local-file-path>' 'https://<storage-account-name>.file.core.windows.net/<file-share-name>/<file-name>'
    
  • 写到文件里调用:把SAS令牌保存到一个文本文件(比如sas-token.txt),然后用参数指定文件路径:
    azcopy copy '<local-file-path>' 'https://<storage-account-name>.file.core.windows.net/<file-share-name>/<file-name>' --sas-token-file ./sas-token.txt
    

最后说说CLI的意义

其实你现在觉得麻烦是还没用到CLI的核心优势——自动化和批量操作。比如:

  • 要同步整个本地文件夹到Azure Files,用--recursive参数一键搞定,不用手动上传单个文件;
  • 写个脚本定时备份本地数据到云端,完全不用手动登录门户;
  • 用Azure AD认证比SAS更安全,权限可以精细控制,还不用暴露敏感的SAS令牌。

内容的提问来源于stack exchange,提问作者user1571823

火山引擎 最新活动