敏捷數據開發實踐:基于 Amazon Q Developer + Remote MCP 構建本地與云端 Amazon Redshift 交互體系
新用戶可獲得高達 200 美元的服務抵扣金
亞馬遜云科技新用戶可以免費使用亞馬遜云科技免費套餐(Amazon Free Tier)。注冊即可獲得 100 美元的服務抵扣金,在探索關鍵亞馬遜云科技服務時可以再額外獲得最多 100 美元的服務抵扣金。使用免費計劃試用亞馬遜云科技服務,最長可達 6 個月,無需支付任何費用,除非您選擇付費計劃。付費計劃允許您擴展運營并獲得超過 150 項亞馬遜云科技服務的訪問權限。
前言
數據驅動的開發場景中,本地工具與云端數據庫的高效交互是提升效率的關鍵。本文聚焦 Amazon Q Developer + Remote MCP 訪問 Amazon Redshift 方案,通過搭建 “本地 CLI - 中間服務 - 云端數據庫” 鏈路,實現自然語言轉 SQL 執行、內網安全訪問等能力,幫助開發者簡化 Redshift 數據查詢流程,構建敏捷、可擴展的云端數據操作體系,適配快速迭代的開發需求
技術架構
本地環境中,Amazon Q Developer CLI 作為操作入口,向 MCP Server(stdio)發起請求,MCP Server 接收后,執行 SQL 語句并與 Amazon Redshift 數據庫交互,構建起 “本地工具 - 中間服務 - 云端數據庫” 的簡潔數據處理鏈路,實現本地對云端數據庫的操作與數據交互
- 操作鏈路精簡高效:本地通過 Amazon Q Developer CLI 直連 MCP Server,省去復雜中間環節,快速觸發 SQL 執行流程,降低操作延遲,讓開發側與服務端交互更敏捷,提升日常數據操作效率
- 精準的數據交互閉環:清晰構建 “本地工具 → 中間服務 → 云端數據庫” 的交互路徑,MCP Server 精準承接 CLI 指令并執行 SQL,保障數據操作精準觸達,讓本地開發對云端數據的讀寫、查詢等需求,能穩定、直接地落地執行
- 架構輕量易維護:整體架構聚焦核心功能,以最少組件實現 “本地 - 服務端 - 云端數據庫” 連通,無冗余設計。后續運維只需關注 CLI 工具、MCP Server 及 Redshift 交互邏輯,降低系統復雜度與維護成本,適配快速迭代的開發場景
前提準備:亞馬遜云科技注冊流程
Step.1 登錄官網
登錄亞馬遜云科技官網,填寫郵箱和賬戶名稱完成驗證(注冊亞馬遜云科技填寫 root 郵箱、賬戶名,驗證郵件地址,查收郵件填驗證碼驗證,驗證通過后設 root 密碼并確認)
Step.2 選擇賬戶計劃
選擇賬戶計劃,兩種計劃,按需選"選擇免費計劃 / 選擇付費計劃"繼續流程
- 免費(6 個月,適合學習實驗,含$200抵扣金、限精選服務,超限額或到期可升級付費,否則關停)
- 付費(適配生產,同享$200 抵扣金,可體驗全部服務,抵扣金覆蓋廣,用完按即用即付計費)
Step.3 填寫聯系人信息
填寫聯系人信息(選擇使用場景,填聯系人全名、電話,選擇所在國家地區,完善地址、郵政編碼,勾選同意客戶協議,點擊繼續 進入下一步)
Step.4 綁定信息
綁定相關信息,選擇國家地區,點擊"Send code"收驗證碼填寫,勾選同意協議后,點擊"驗證并繼續"進入下一步
Step.5 電話驗證
電話驗證填寫真實手機號,選擇驗證方式,完成安全檢查,若選語音,網頁同步顯 4 位數字碼,接來電后輸入信息,再填收到的驗證信息,遇問題超 10 分鐘收不到可返回重試。
Step.6 售后支持
售后支持:免費計劃自動獲基本支持,付費計劃需選支持計劃(各計劃都含客戶服務,可訪問文檔白皮書,按需選后點 “完成注冊”,若需企業級支持可了解付費升級選項,確認選好即可完成整個注冊流程 )
Amazon Q Developer+Remote MCP 訪問 Amazon Redshift
1、集成 Local MCP Server,創建 Python 虛擬環境
curl -LsSf https://astral.sh/uv/install.sh | sh# Create a new directory for your project (you've already done this) uv init redshift cd redshift# Create a Python 3.12 virtual environment uv venv # Activate the virtual environment source .venv/bin/activate# Install dependencies uv add mcp fastmcp redshift_connector# Create our server file touch redshift.py
2、準備 Local MCP Server 的 Python 代碼 redshift.py
from mcp.server.fastmcp import FastMCP from mcp.types import TextContent from mcp.types import Resource, ResourceTemplate, Tool, TextContent import redshift_connector import osmcp = FastMCP(name="redshift", stateless_http=True) REDSHIFT_CONFIG = {"host": os.environ['REDSHIFT_HOST'],"port": int(os.environ['REDSHIFT_PORT']),"database": os.environ['REDSHIFT_DATABASE'],"user": os.environ['REDSHIFT_USER'],"password": os.environ['REDSHIFT_PASSWORD'] }def _execute_sql(sql:str):with redshift_connector.connect(**REDSHIFT_CONFIG) as conn:conn.autocommit = Truewith conn.cursor() as cursor:try:cursor.execute(sql)columns = [desc[0] for desc in cursor.description]rows = cursor.fetchall()result = [",".join(map(str, row)) for row in rows]return [TextContent(type="text", text="\n".join([",".join(columns)] + result ))]except Exception as e:return [TextContent(type="text", text=f"Error executing query: {str(e)}")]return None@mcp.tool() def execute_sql(sql: str) :"""Execute a SQL Query on the Redshift clusterArgs:sql: The SQL to Execute"""return _execute_sql(sql)@mcp.tool() def get_schemas(schema: str) :"""Get all tables in a schema from redshift databaseArgs:schema: the redshift schema"""sql = f"""SELECT table_name FROM information_schema.tablesWHERE table_schema = '{schema}'GROUP BY table_nameORDER BY table_name"""return _execute_sql(sql)@mcp.tool() def get_table_ddl(schema: str, table:str) :"""Get DDL for a table from redshift databaseArgs:schema: the redshift schema nametable: the redshift table name"""sql = f"""show table {schema}.{table}"""return _execute_sql(sql) if __name__ == "__main__":# Initialize and run the servermcp.run(transport='stdio')
3、通過 vim .amazonq/mcp.json 編輯 MCP Server 配置
{"mcpServers": {"redshiftserver": {"timeout": 60,"command": "uv","args": ["--directory","/path/redshift","run","redshift.py"],"env": {"RS_HOST": "your_redshift_cluster_host","RS_DATABASE": "default_is_dev","RS_SCHEMA": "default_is_public","RS_USER": "your_redshift_user","RS_PASSWORD": "your_redshift_password"},"transportType": "stdio"}} }
4、運行 Amazon Q Developer CLI,列出當前的 MCP Tools
5、輸入自然語言查詢數據:查看 Redshift 中客戶表的數據條數,Amazon Q Developer CLI 將其轉換為 SQL 并執行,獲取到查詢結果
6、需要為 Amazon Lambda 函數構建 Layer,將相關依賴包放入 Layer 當中,通過如下腳本構建 zip 包,并上傳至 S3 中
#!/bin/bash mkdir -p layer_build cd layer_buildcat > requirements.txt << EOL fastapi==0.115.12 fastmcp==2.3.0 mcp==1.8.0 pydantic==2.11.4 uvicorn==0.34.2 redshift_connector EOLpython3.12 -m venv create_layer source create_layer/bin/activate pip install -r requirements.txt mkdir python cp -r create_layer/lib python/ zip -r layer_content.zip python
7、創建 Amazon Lambda Layer
8、創建 Amazon Lambda 函數,創建用于部署 MCP Server 的 Amazon Lambda 函數
9、為了讓 Amazon Lambda 函數通過內網訪問 Amazon Redshift 集群,需要設置 Amazon Lambda 函數的 VPC 、子網和安全組,并配置 Amazon Redshift 集群的安全組入站規則,允許來自 Amazon Lambda 函數安全組的訪問
10、創建 Amazon API Gateway
11、使用 Amazon Q Developer CLI 進行測試
{"mcpServers":{"redshift-remote-server":{"command": "npx","args":["mcp-remote","https://xxxxx.execute-api.ap-southeast-1.amazonaws.com/dev/redshift/mcp/","--header","x-api-key: you api key of api gateway"]}} }
Amazon Q 介紹
Amazon Q 是一款生成式人工智能助手,專為企業和開發者打造,能改變組織工作模式。它整合多方數據,以自然語言交互,覆蓋軟件開發、商業智能分析、客戶服務及供應鏈管理等領域,為員工提供專業功能,加速任務完成,深入洞察數據
- 專業領域賦能:為軟件開發人員、商業智能分析師等不同崗位人員提供針對性功能。比如開發者版可助力編碼、測試、部署及故障排查等全流程任務;在商業智能方面,能讓業務分析師用自然語言快速構建 BI 儀表板
- 安全隱私保障:嚴格遵循身份、角色和權限體系,用戶無法通過它訪問原本無權接觸的數據。其管理控件支持自定義授權,數據在傳輸和存儲時均加密,且不會利用企業數據訓練基礎模型,確保企業數據安全與隱私
- 廣泛系統集成:內置超 40 個連接器,可連接如 Amazon S3、Salesforce、Google Drive 等常用企業應用和文檔存儲庫,還能為內部 Intranets 等構建自定義連接器,打破數據孤島,綜合各類信息為用戶提供服務
總結
本文圍繞 Amazon Q Developer + Remote MCP 訪問 Amazon Redshift 方案,構建了從本地開發到云端部署的完整數據交互體系。通過搭建 “本地 CLI - MCP Server - 云端數據庫” 鏈路,實現自然語言轉 SQL 執行的敏捷開發體驗;結合 Lambda Layer、VPC 配置及 API Gateway,完成 MCP Server 遠程化部署與內網安全訪問。方案以精簡架構提升數據操作效率,以安全配置保障鏈路可靠,為開發者提供了一套適配快速迭代需求的 Redshift 云端數據操作實踐指南。