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

如何用Ruby aws-sdk gem操作AWS Bedrock知识库源(含同步)?

解决方案

方案1:使用aws-sdk-bedrockagent gem(无需启用Bedrock Agent服务)

Bedrock知识库(Knowledge Bases)的API确实归类在Bedrock Agent的SDK下,但你不需要启用Agent服务就能调用这些接口。具体步骤:

  1. 安装gem:
gem install aws-sdk-bedrockagent
  1. 初始化客户端并调用操作:
require 'aws-sdk-bedrockagent'

# 初始化客户端(默认读取环境变量或本地AWS配置)
client = Aws::BedrockAgent::Client.new(region: 'us-east-1')

# 获取指定知识库详情
kb_details = client.get_knowledge_base({ knowledge_base_id: '你的知识库ID' })
puts kb_details.knowledge_base.name
puts kb_details.knowledge_base.data_sources.first.source_config.s3_config.s3_bucket_name

# 启动知识库数据源同步
sync_response = client.start_knowledge_base_sync_job({
  knowledge_base_id: '你的知识库ID',
  data_source_id: '数据源ID' # 可从get_knowledge_base的返回中获取
})
puts "同步任务ID:#{sync_response.sync_job.job_id}"

# 查看同步任务状态
sync_status = client.get_knowledge_base_sync_job({
  knowledge_base_id: '你的知识库ID',
  job_id: sync_response.sync_job.job_id
})
puts "同步状态:#{sync_status.sync_job.status}"

方案2:直接调用AWS REST API(带SigV4签名)

如果不想依赖BedrockAgent的gem,可以直接构造HTTP请求,用AWS SigV4签名认证:

  1. 安装签名所需gem:
gem install aws-sigv4
gem install httparty
  1. 签名并调用API示例:
require 'aws-sigv4'
require 'httparty'

region = 'us-east-1'
kb_id = '你的知识库ID'
data_source_id = '你的数据源ID'

# 构建签名器
signer = Aws::Sigv4::Signer.new(
  service: 'bedrock-agent',
  region: region,
  access_key_id: ENV['AWS_ACCESS_KEY_ID'],
  secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
)

# 示例1:获取知识库详情
get_kb_url = "https://bedrock-agent.#{region}.amazonaws.com/knowledgebases/#{kb_id}"
get_signature = signer.sign_request(
  http_method: 'GET',
  url: get_kb_url
)

response = HTTParty.get(get_kb_url, headers: get_signature.headers)
puts response.parsed_response

# 示例2:启动同步任务
sync_url = "https://bedrock-agent.#{region}.amazonaws.com/knowledgebases/#{kb_id}/datasources/#{data_source_id}/sync-jobs"
sync_signature = signer.sign_request(
  http_method: 'POST',
  url: sync_url,
  headers: { 'Content-Type' => 'application/json' },
  body: '{}'
)

sync_response = HTTParty.post(sync_url, headers: sync_signature.headers, body: '{}')
puts sync_response.parsed_response

关键说明

  • 即使你没有创建Bedrock Agent,只要你有权限操作知识库,上述两种方案都能正常工作。
  • 确保你的AWS IAM角色/用户拥有bedrock-agent:GetKnowledgeBase、bedrock-agent:StartKnowledgeBaseSyncJob等相关权限。

内容的提问来源于stack exchange,提问作者prosto.vint

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:33:17