You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用API密钥程序化配置账号后rsconnect无法发布至服务器

问题:使用rsconnect的connectApiUser连接后deployApp报404错误

我搭建了RStudio Workbench与Connect服务器环境,希望自动将内容发布至Connect。手动连接服务器(点击蓝色分享按钮、完成认证并发布内容)后,可通过以下代码程序化重新发布/更新应用:

deployApp(
  appDir = app_dir,   # app/
  appName = app_name, # test-app
  appId = app_id,     # 123 手动发布时记录的ID,应用已存在
  account = RSCONNECT_USER, # myuser
  launch.browser = FALSE,
  forceUpdate = TRUE,
  server = RSCONNECT_SERVER # Connect服务器地址
)
#> Preparing to deploy application...DONE
#> Uploading bundle for application: 123...DONE
#> Deploying bundle: xyz for application: 123 ...
#> ...
#> Application successfully deployed to https://myconnect-server.com/content/...

但最终需要在CI/CD任务中运行该流程,无法手动创建账号/连接服务器,因此尝试使用connectApiUser函数通过API密钥进行连接。然而执行以下代码时,deployApp调用出现错误:

# 非真实信息
RSCONNECT_USER   <- "myuser"
RSCONNECT_SERVER <- "myconnect-server.com"
APIKEY           <- "mysecret (可用的) API密钥"

app_id           <- "123"
app_name         <- "test-app"
app_folder       <- "app"

library(rsconnect)
packageVersion("rsconnect") # 2023-06-28最新版本
#> [1] ‘0.8.29’


## 1 连接服务器并添加用户 ====

removeServer(RSCONNECT_SERVER)
#> Warning... The server 'myconnect-server.com' is not currently registered

addServer(paste0("https://", RSCONNECT_SERVER), RSCONNECT_SERVER)
#> Server 'myconnect-server.com' added successfully: https://myconnect-server.com


# 预期会报错,因为用户尚未注册
removeAccount(RSCONNECT_USER)
#> Error... account named 'myuser' does not exist

connectApiUser(
  account = RSCONNECT_USER,
  server = RSCONNECT_SERVER,
  apiKey = APIKEY
)
#> Account registered successfully: myuser



## 2 检查连接 ====

servers()[, c("name", "url")]
#>                    name                           url
#> 1  myconnect-server.com  https://myconnect-server.com
#> 2          shinyapps.io   https://api.shinyapps.io/v1
#> 3           posit.cloud   https://api.shinyapps.io/v1

accounts()
#>     name                server
#> 1 myuser  myconnect-server.com


## 3 发布到服务器 ====

deployApp(
  appDir = app_folder,
  appName = app_name,
  appId = app_id,
  account = RSCONNECT_USER,
  launch.browser = FALSE,
  forceUpdate = TRUE,
  server = RSCONNECT_SERVER
)
#> Preparing to deploy application...Error: HTTP 404
#> GET https://myconnect-server.com/applications/123
#> 404 page not found

我是否错误理解了rsconnect中connectApiUser的使用方式?为何此方法无法生效?

注:官方bash脚本无法满足灵活性需求,因此希望按上述方式使用rsconnect包。

更新:我已在rsconnect的GitHub仓库提交了Issue。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:55:25