近日,多位地球科学领域的研究人员和数据工程师反映,在尝试通过 boto3 库与 Earthdata 平台提供的 AWS 凭证访问 NASA 的 MERRA-2 再分析数据集时,频繁遭遇 “AccessDenied”HTTP 403 错误。这一技术障碍严重影响了数据获取效率,也引发了社区对云数据访问权限管理方式的广泛讨论。

MERRA-2 与 Earthdata 的背景

MERRA-2(Modern-Era Retrospective Analysis for Research and Applications, Version 2)是由 NASA 全球建模与同化办公室(GMAO)生产的高分辨率大气再分析数据集,时间跨度从1980年至今,覆盖全球。该数据集广泛用于气候研究、空气质量分析、可再生能源评估等领域。为方便大规模并行处理和云原生工作流,NASA 已将 MERRA-2 数据托管在 Amazon Web Services(AWS)上,并通过 Earthdata Login 系统提供身份认证与访问授权。

用户通常需要通过 Earthdata 注册账号,获取 AWS 临时凭证(Access Key ID、Secret Access Key 和 Session Token),然后借助 AWS SDK(如 boto3)直接访问存储在 S3 存储桶中的原始数据文件。这一流程原本旨在降低数据获取门槛,但近期错误频发,令不少用户感到困惑。

错误现象:凭证无效与访问拒绝

据多位开发者反馈,在按照官方文档配置 boto3 客户端后,执行 list_objectsget_object 时,系统返回如下异常:

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied

或者在更底层出现 HTTP 403 Forbidden 状态码。错误信息中通常不包含详细原因,仅表示“访问被拒绝”。部分用户尝试使用 AWS CLI 直接操作,得到相同结果,排除了代码层面引入的错误。

常见原因分析与排查建议

经技术社区分析,该问题的诱因主要包括以下几类:

1. 临时凭证过期或不匹配

Earthdata 颁发的 AWS 临时凭证有效期通常为1小时。若工作流执行时间较长,或代码中未及时刷新凭证,过期凭证会被 AWS 直接拒绝。此外,部分用户误将 Earthdata 的“用户账号密码”与“AWS 访问密钥”混淆。正确做法是:登录 Earthdata 网站后,在“Application”菜单下生成或获取正确的 Bearer Token 及配套的 AWS 角色 ARN,再通过 sts.assume_role 获取临时凭证。

2. S3 存储桶权限策略限制

MERRA-2 数据所在的 AWS S3 存储桶设置了严格的 bucket policy,仅允许特定 Earthdata 用户组访问。即使用户拥有有效的 AWS 凭证,若其 Earthdata 账号未被授权访问 MERRA-2 数据集(例如未在 Earthdata 上勾选对应的“数据订阅”),请求也会被拒绝。建议:检查 Earthdata 账户的“Data Access”页面,确认已订阅 MERRA-2 数据集(通常为“GES DISC - MERRA-2”)。

3. 存储桶区域与端点不匹配

MERRA-2 数据通常位于 us-west-2(俄勒冈)区域。如果 boto3 客户端未明确指定 region_name='us-west-2',或者使用了全局端点,可能导致请求被路由到错误区域,进而触发 403。最佳实践:在初始化 S3 客户端时显式设置区域。

4. 使用公共数据集的签名版本问题

AWS S3 要求请求使用签名版本4(SigV4)。若 boto3 自动协商签名协议时出现偏差(例如旧版本 SDK 默认使用 SigV2),也会被拒绝。升级 boto3 至最新版本通常可解决。

社区应对与官方动态

针对上述问题,NASA GES DISC(戈达德地球科学数据与信息服务中心)已在官方文档中更新了 “Accessing MERRA-2 via AWS” 的详细指南,并推荐使用 earthaccess Python 库(由 NASA 开发)自动处理凭证和权限校验。该库封装了从 Earthdata 获取临时凭证、设置区域、重试等逻辑,能极大降低错误率。

此外,部分用户发现,直接使用 s3fsfsspec 结合 earthaccess 可以更流畅地读取数据,避免手动管理 boto3 会话的繁琐步骤。

结语

截至发稿时,MERRA-2 数据的 AWS 访问通道仍处于活跃维护中,但临时凭证过期和权限配置遗漏是当前最主要的“拦路虎”。对于需要长期、批量下载数据的科研团队,建议采用“预获取长时效凭证”或“使用 AWS Lambda 无服务器架构定期刷新凭证”的方案。同时,密切关注 NASA GES DISC 的官方通知,因为后续可能引入更统一的云访问认证机制(如 AWS IAM Identity Center)。

数据驱动的气候研究离不开稳定可靠的访问基础设施。期待随着社区反馈的积累,NASA 与 AWS 能进一步简化流程,让地球科学工作者将更多精力放在数据分析本身,而非“凭证调试”之上。