使用AWS Redshift Data API访问Redshift Serverless遇报错求助
问题解决:Redshift Serverless Data API SDK调用报错“Workgroup is currently not supported”
错误原因
你在SDK请求里同时指定了ClusterIdentifier和WorkgroupName,这两个参数是互斥的——Redshift Serverless仅使用工作区(Workgroup)标识,不需要集群ID。CLI调用成功是因为你只传了WorkgroupName,而SDK代码里多传了无效的集群ID参数,触发了验证错误。
修复步骤
移除集群ID参数
删掉代码中的ClusterIdentifier赋值语句,只保留WorkgroupName、Database、DbUser和Sql参数。升级SDK版本(可选但推荐)
确保你使用的AWS SDK for .NET和boto3是最新版本,旧版本可能对Redshift Serverless的Data API支持不完善。验证IAM权限
确认执行请求的IAM实体(用户/角色)拥有redshift-data:ExecuteStatement权限,且资源策略中包含目标工作区(例如arn:aws:redshift-serverless:us-west-2:你的账号ID:workgroup/myworkgroup)。
修改后的C#代码
using Amazon.RedshiftDataAPIService; var client = new AmazonRedshiftDataAPIServiceClient(RegionEndpoint.USWest2); // 建议显式指定区域,避免依赖默认配置 var request = new AmazonRedshiftDataAPIService.Model.ExecuteStatementRequest(); // 移除ClusterIdentifier参数 request.WorkgroupName = "myworkgroup"; request.Database = "dev"; request.DbUser = "admin"; request.Sql = "select * from users limit 1"; await client.ExecuteStatementAsync(request);
Python boto3示例代码
import boto3 client = boto3.client('redshift-data', region_name='us-west-2') response = client.execute_statement( WorkgroupName='myworkgroup', Database='dev', DbUser='admin', Sql='select * from users limit 1' ) print(response)
内容的提问来源于stack exchange,提问作者reenrik
相关产品推荐
相关产品推荐

