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

使用Python调用AWS DataExchange API无法列出已订阅数据集

解决AWS DataExchange调用list_data_sets返回空集合的问题

你用Python调用AWS DataExchange的list_data_sets接口时指定Origin='ENTITLED'却返回空集合,以下是问题分析和解决办法:

原代码问题点

import boto3
import os

# 设置AWS凭证为环境变量
os.environ['AWS_ACCESS_KEY_ID'] = '*******************'
os.environ['AWS_SECRET_ACCESS_KEY'] = '************************'
os.environ['AWS_REGION'] = 'us-west-1'

# 创建DataExchange客户端
client = boto3.client('dataexchange',
                      region_name='us-west-2')

response = client.list_data_sets(
    Origin='ENTITLED'
)

products = response['DataSets']
print(products)

核心问题及修复方案

1. 区域不匹配

代码中环境变量设置的区域是us-west-1,但创建客户端时指定了us-west-2,两者必须统一。而且AWS DataExchange的数据集是区域化资源,你必须在订阅数据集所在的区域调用接口。

修正:将客户端区域与环境变量保持一致:

client = boto3.client('dataexchange',
                      region_name=os.environ['AWS_REGION'])

2. IAM权限不足

你的IAM用户必须拥有dataexchange:ListDataSets权限,且权限策略需覆盖目标资源。示例IAM权限策略片段:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dataexchange:ListDataSets",
            "Resource": "*"
        }
    ]
}

3. 确认订阅数据集的状态与区域

  • 登录AWS控制台进入DataExchange服务,查看你订阅的数据集所在区域,确保调用接口的区域与之匹配。
  • 确认订阅流程已完成,部分数据集需要手动接受订阅才能获取访问权限。

4. 用CLI验证排除代码问题

在目标区域执行AWS CLI命令,先排除代码逻辑外的问题:

aws dataexchange list-data-sets --origin ENTITLED --region us-west-2

如果CLI也返回空,说明该区域下确实没有授权数据集;如果CLI有返回,再排查代码中的凭证或区域配置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:17:49