连接到 R 中的 Azure 表存储

2024-01-06

我一直在尝试连接到 R 中的 Azure 表存储。对于使用 R 连接到表存储的 Rest API 的用户,Google 搜索没有返回任何结果。文档是here https://learn.microsoft.com/en-us/rest/api/storageservices/query-entities。我尝试过采用现有的question https://stackoverflow.com/questions/29267760/error-connecting-to-azure-blob-storage-api-from-r关于要连接的 blob 存储(我什至无法使用它连接到 blob)并重新将其用于表存储查询。以下:

library(httr)
url <- "https://rpoc.table.core.windows.net:443/dummytable(PartitionKey='0dfe725b-bd43-4d9d-b58a-90654d1d8741',RowKey='00b7595d-97c3-4f29-93de-c1146bcd3d33')?$select=<comma-separated-property-names>"
sak<-"u4RzASEJ3qbxSpf5VL1nY08MwRz4VKJXsyYKV2wSFlhf/1ZYV6eGkKD3UALSblXsloCs8k4lvCS6sDE9wfVIDg=="
requestdate<- http_date(Sys.time())
signaturestring<-paste0("GET",paste(rep("\n",12),collapse=""),
                        "x-ms-date:",requestdate,"
                        x-ms-version:2015-12-11")

headerstuff<-add_headers(Authorization=paste0("SharedKey rpoc:",
                                              RCurl::base64(digest::hmac(key=RCurl::base64Decode(sak, mode="raw"),
                                                                         object=enc2utf8(signaturestring),
                                                                         algo= "sha256", raw=TRUE))),
                         `x-ms-date`=requestdate,
                         `x-ms-version`= "2015-12-11",
                         `DataServiceVersion` = "3.0;NetFx",  
                         `MaxDataServiceVersion` = "3.0;NetFx" )
content(GET(url,config = headerstuff, verbose() ))

控制台输出:

-> GET /dummytable(PartitionKey='0dfe725b-bd43-4d9d-b58a-90654d1d8741',RowKey='00b7595d-97c3-4f29-93de-c1146bcd3d33')?$select=<comma-separated-property-names> HTTP/1.1
-> Host: rpoc.table.core.windows.net
-> User-Agent: libcurl/7.53.1 r-curl/2.6 httr/1.2.1
-> Accept-Encoding: gzip, deflate
-> Accept: application/json, text/xml, application/xml, */*
-> Authorization: SharedKey rpoc:nQWNoPc1l/kXydUw4rNq8MBIf/arJXkI3jZv+NttqMs=
-> x-ms-date: Mon, 24 Jul 2017 18:49:52 GMT
-> x-ms-version: 2015-12-11
-> DataServiceVersion: 3.0;NetFx
-> MaxDataServiceVersion: 3.0;NetFx
-> 
<- HTTP/1.1 403 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
<- Content-Length: 299
<- Content-Type: application/json
<- Server: Microsoft-HTTPAPI/2.0
<- x-ms-request-id: 2c74433e-0002-00b3-5aad-04d4db000000
<- Date: Mon, 24 Jul 2017 18:49:53 GMT
<- 
$odata.error
$odata.error$code
[1] "AuthenticationFailed"

$odata.error$message
$odata.error$message$lang
[1] "en-US"

$odata.error$message$value
[1] "Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.\nRequestId:2c74433e-0002-00b3-5aad-04d4db000000\nTime:2017-07-24T18:49:54.3878127Z"

问题看起来是身份验证标头。任何有关我如何解决此问题的帮助将不胜感激。我真的很惊讶更多的人不将 ATS 与 R 一起使用,因为它的用途如此广泛。


我的解决方案基于 PUT blob 问题(R 中的 Azure PUT Blob 身份验证失败 https://stackoverflow.com/questions/44519413/azure-put-blob-authentication-fails-in-r/),然后我改用 GET 代替 PUT,用 table 代替 blob。

library(httr)  

account <- "account"
container <- "container"  
key <- "u4RzASEJ..9wfVIDg=="  

url <- paste0("https://", account, ".table.core.windows.net/", container)
requestdate <- format(Sys.time(),"%a, %d %b %Y %H:%M:%S %Z", tz="GMT")
content_length <- 0

signature_string <- paste0("GET", "\n",            # HTTP Verb
                           "\n",                   # Content-MD5
                           "text/plain", "\n",     # Content-Type
                           requestdate, "\n",                   # Date
                           # Here comes the Canonicalized Resource
                           "/",account, "/",container)

headerstuff <- add_headers(Authorization=paste0("SharedKey ",account,":", 
                                                RCurl::base64(digest::hmac(key = 
                                                                             RCurl::base64Decode(key, mode = "raw"),
                                                                           object = enc2utf8(signature_string),
                                                                           algo = "sha256", raw = TRUE))),
                           `x-ms-date`= requestdate,
                           `x-ms-version`= "2015-02-21",
                           `Content-Type`="text/plain")

xml_body = content(GET(url, config = headerstuff, verbose()))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接到 R 中的 Azure 表存储 的相关文章

  • Azure 自动化 Powershell Runbook 无法进行 LoadAssembly

    我是 Powershell Runbook 的新手 所以如果我遗漏了一些明显的内容 请原谅我 我正在尝试从我的脚本记录 Application Insights 请求 但甚至无法加载 DLL 尽管我已经看到其他代码执行非常类似的操作 请注意
  • data.frame 按列分组[重复]

    这个问题在这里已经有答案了 我有一个数据框 DF 说 DF 是 A B 1 1 2 2 1 3 3 2 3 4 3 5 5 3 6 现在我想将 A 列的行组合在一起 并得到 B 列的总和 例如 A B 1 1 5 2 2 3 3 3 11
  • Redis 与 SQL Server 性能对比

    应用程序性能是使用缓存而不是关系数据库的主要原因之一 因为它以键值对的形式将数据存储在内存中 所以我们可以将经常访问的不经常更改的数据存储在缓存中 从缓存中读取比从数据库中读取要快得多 Redis 是分布式缓存市场上最好的解决方案之一 我正
  • R:使用 dcast 时包含没有条目的因子

    我在数据帧上使用 reshape2 函数 dcast 其中一个变量是某些级别未出现在数据框中的因素 但我会将所有值包含在创建的新列中 例如 假设我运行以下命令 library reshape2 dataDF lt data frame id
  • 使用 geom_bar 和 stat="identity" 绘制平均值的 hline

    我有一个条形图 其中确切的条形高度位于数据框中 df lt data frame x LETTERS 1 6 y c 1 6 1 6 1 g rep x c a b each 6 ggplot df aes x x y y fill g g
  • 有没有办法将字母扩展到超过 26 个字符,例如 AA、AB、AC...?

    我大部分时间都使用字母来表示我的因素 但今天我尝试超过 26 个字符 LETTERS 1 32 期待有自动递归因式分解 AA AB AC 但很失望 这只是字母的限制还是有办法使用其他函数来获取我正在寻找的内容 702够吗 LETTERS70
  • 不同的分位数:箱线图与小提琴图

    require ggplot2 require cowplot d iris ggplot2 ggplot d aes factor 0 Sepal Length geom violin fill black alpha 0 2 draw
  • 使用梯度下降(最速下降)估计线性回归

    示例数据 X lt matrix c rep 1 97 runif 97 nrow 97 ncol 2 y lt matrix runif 97 nrow 97 ncol 1 我已经成功创建了成本函数 COST lt function th
  • 实现多个接口的 Service Fabric Actor 接口

    我正在构建一个应用程序 其中有多个不同的参与者类型 这些参与者类型对于某些不同的数据对象具有相同类型的行为 CRUD 为了更轻松地创建处理此问题的代码 我尝试创建一个这些参与者可以实现的接口 这意味着我有一个看起来像这样的参与者界面 pub
  • 检查 GitHub 令牌的范围

    我想被动地检查 GitHub 安全令牌的权限 范围 而不将某些内容推送到存储库中 我尝试了以下命令 我替换了 your username 你的访问令牌和我的存储库的 URL 但它显示一个错误 curl 3 URL 使用错误 非法格式或缺少
  • 如何在shell脚本中运行R代码?

    我有一个 R 文件 myfile R 我想使用 shell 脚本来运行它 我怎样才能做到这一点 我试过这个 bin bash Rscript myfile R 但它给了我这个错误 Rscript 找不到命令 我也尝试过这个 bin bash
  • 如何连接 R 列表中的多个 .wav 文件?

    我有一个 wav 文件列表my list library seewave library tuneR data tico audio lt tico freq lt 22050 breaks lt c 0 0 2 0 4 0 6 0 8 i
  • 当 header=TRUE 时 read.fwf 出错

    我的模拟数据如下所示 LastName Date email CreditCardNum AgeZip Amount Paul 21 02 14 email protected cdn cgi l email protection 4241
  • 将英寸高度的字符向量转换为厘米?

    我得到一个字符向量 tibble H c 6 2 5 10 5 5 5 1 5 5 5 4 我想将其转换为厘米 请告知我该怎么做 有几种方法可以使用 1 阅读与fread粘贴到单个字符串后 library data table fread
  • 如何将变量传递给 ddply 中的自定义函数?

    考虑以下数据 d data frame experiment as factor c foo foo foo bar bar si runif 5 ti runif 5 我想进行相关性测试si and ti 对于每个experiment因素
  • 在 R 中使用 ggplot2 叠加两个图

    有两个数据框 df1 df2我需要使用 ggplot2 创建线图并显示在同一个图表上 df1 x y 2 30 4 25 6 20 8 15 df2 x y 2 12 4 16 6 20 8 24 用于绘制第一个 df p1 lt ggpl
  • 如何对plot_ly()图表进行分面?

    Using ggplot2 and plotly制作交互式散点图facet wrap library ggplot2 library plotly g lt iris gt ggplot aes x Sepal Length y Sepal
  • 在ggplot2中添加水平线到绘图和图例

    这段代码创建了一个漂亮的图 但我想在 y 50 处添加一条水平黑线 并让图例显示一条黑线 并在图例中显示文本 cutoff 但在图例中保留源点 我可以使用 geom line 添加该行 但无法在图例中获取该行 library ggplot2
  • 生成与现有变量具有预定义相关性的二进制变量

    对于模拟研究 我想生成一组随机变量 连续变量和二元变量 这些变量与已经存在的变量具有预定义的关联binary变量 此处表示为x 对于这篇文章 假设x是按照下面的代码生成的 但请记住 在现实生活中 x是一个已经存在的变量 set seed 1
  • 在 REST Web 服务中接受逗号分隔值

    我正在尝试接收 REST URI 中以逗号分隔值形式的字符串列表 示例 http localhost 8080 com vogella jersey first rest todo test 1 abc test 其中 abc 和 test

随机推荐

  • 有没有办法在 C++ 中实现 Python 的“separator”.join() 的模拟?

    我所找到的只是boost algorithm string join 然而 仅使用 Boost 进行连接似乎有点矫枉过正 那么也许有一些经过时间考验的食谱 UPDATE 抱歉 问题标题不好 我正在寻找用分隔符连接字符串的方法 而不仅仅是一一
  • PHPExcel toArray 跳过第一个标题行

    我正在将 Excel 文件上传到网站并对其进行处理以供数据库使用 我在用着toArray 函数获取 php 数组中的所有行 但我想跳过第一行 标题行 其余行将存储在数组中 我怎样才能跳过第一行 注意 我不能使用rangeToArray 函数
  • 如何从 Azure DevOps 管道将密钥写入 Azure Key Vault?

    我已经使用 ARM 在 Azure DevOps 中创建了一个 Key Vault 现在我想在同一管道中向它写入一个密钥 我使用以下内联 PowerShell 创建了一个 Azure PowerShell 任务 secretvalue Co
  • 使用 ImageMagick 批量调整图像大小并将图像输出到新文件夹

    当前图像文件夹路径 public html images thumbs 输出图像文件夹路径 public html images new thumbs 我当前文件夹中的每个视频有 10 个视频拇指 名为图像拇指 1 1 jpg 1 2 jp
  • 如何在 C++ 中从基类构造函数调用派生类方法? [复制]

    这个问题在这里已经有答案了 我有一个基类和两个派生类 基类构造函数在调用时应计算一些属性 尽管这些属性取决于派生类的详细信息 为了避免在每个派生类构造函数中重新编码相同的步骤 我在基类构造函数中对这些步骤进行编码 如下例所示 问题是 当我这
  • 使用 UIImagePickerController 时 iOS 10 错误 [access]

    我正在使用 XCode 8 并使用 iOS 10 2 Beta 进行测试 我已将 Photos PhotosUI 和 MobileCoreServices 框架添加到项目中 非常简单的代码 import
  • 在客户端访问IE8中文件输入的文件数据?

    是否可以获取在文件输入中选择的实际文件数据 我正在尝试执行以下代码 但 this files 不包含我期望的文件数据 在 Chrome 中确实存在 document getElementById txtFileInput onchange
  • Objective-C中使用GCD的dispatch_once创建单例

    如果您可以定位 iOS 4 0 或更高版本 使用GCD 这是在Objective C 线程安全 中创建单例的最佳方式吗 instancetype sharedInstance static dispatch once t once stat
  • 如何在自定义 Cordova 插件中包含多个 AAR 文件?

    我是科尔多瓦开发的新手 我需要编写一个引用两个 aar 文件的自定义插件 我可以将第一个 aar 文件添加到插件中 但是我对添加第二个 aar 文件有一些疑问 我可以在同一个自定义插件中添加第二个 aar 文件吗 或者我是否需要创建另一个自
  • 如何在 T-SQL 中计算 GROUP BY 行数

    我有一个 SQL 查询 它执行 GROUP BY 将包含相同 Player id 但不相同 Game id 的所有行合并在一起 SELECT p Player id p Name p Position SUM s Goals AS goal
  • 如何通过电视马拉松将消息转发给其他联系人

    当我收到联系人发来的消息后 如何立即将消息转发到另一个聊天室 我创建这个示例只是为了测试路由 但它不起作用 usr local bin python3 from telethon import TelegramClient events a
  • 如果进程以参数启动,Ruby readline 将失败

    我遇到了最奇怪的问题 下面的代码工作正常 require json require net http h Net HTTP new localhost 4567 while l gets chomp res h post api v1 se
  • Varargs Kotlin Java 互操作无法正常工作

    对于 makeSceneTransitionAnimation 有两个静态函数 public static ActivityOptionsCompat makeSceneTransitionAnimation Activity activi
  • Javascript键盘输入过滤

    有没有人有一个有效的动态 JavaScript 输入过滤器 可以限制跨多个浏览器的文本输入 我在网上看到了多个示例 但大多数似乎都有缺陷或缺乏多浏览器支持 我当前的尝试发布在下面 但在 Firefox 下移动数字失败 而且我还没有尝试过其他
  • Swift Actor 中发生数据争用

    我使用 Thread Sanitizer 在 Swift 应用程序中发现了数据争用 因此我第一次尝试通过转换有问题的数据来修复争用条件class to an actor 竞争造成的崩溃似乎已经消失 但 Thread Sanitizer 仍然
  • Angular 9 引入了需要加载的全局“$localize()”函数

    我在新的角度项目设置中遇到以下错误 已安装的软件包及其版本 https i stack imgur com 2Fb18 png 错误错误 未捕获 承诺 错误 它看起来像你的 应用程序或其依赖项之一正在使用 i18n 角9 推出了全球 loc
  • 将大流转换为字符串时内存不足

    我正在尝试将大流 4mb 转换为字符串 最终将其转换为 JSON 数组 当流大小很小 以 KB 为单位 时 一切正常 当它开始处理 4mb 流时 它就会耗尽内存 下面是我用来将流转换为字符串的方法 我几乎尝试了所有方法 我怀疑问题出在 wh
  • 无法初始化代理 - 无会话

    我有一个错误 看起来像这样 无法初始化代理 无会话 我正在使用 java hibernate 和 spring 尝试生成 PDF 文档时出现此错误 我正在按照后续步骤动态生成它并将其存储在数据库中 我通过 POST 方法向应用程序发送了请求
  • 使用 wget、curl 时 SSL 连接失败,但使用 firefox 和 lynx 时成功

    我在通过自动脚本访问该网站时遇到问题 如果我从浏览器 chrome firefox 甚至 lynx 都可以工作 查看 一切都可以 我如果尝试从 PHP fsockopen wget 或 curl 加载它 它会抱怨 警告 stream soc
  • 连接到 R 中的 Azure 表存储

    我一直在尝试连接到 R 中的 Azure 表存储 对于使用 R 连接到表存储的 Rest API 的用户 Google 搜索没有返回任何结果 文档是here https learn microsoft com en us rest api