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

React Native中AWS SDK突发故障:S3连接无响应求助

React Native应用突发AWS S3连接失效(代码未改动)

问题描述

此前运行正常的React Native应用,昨晚突发AWS S3连接失效,相关代码已两个月未做改动。调用S3接口后无任何返回,既不进入then分支也不触发catch,内部添加try-catch也无反应。

检查AWS IAM凭证发现,密钥自昨晚后未被使用过。打印bucket对象能得到正常结果,显示存在AWS交互,但对应的AWS网络请求无有效响应。

相关代码

CloudService.js

import React ,{useState} from 'react';
import AWS from 'aws-sdk'

export const S3_BUCKET_CAROUSEL ='carouselnews';
export const S3_BUCKET_ADVISORS = 'advisorsdata';
const REGION ='ap-south-1';


AWS.config.update({
    accessKeyId: 'xxxxxx',
    secretAccessKey: 'xxxxxx'
})

export const getCarouselData = () => {
    const bucket = new AWS.S3({
        params: { Bucket: S3_BUCKET_CAROUSEL},
        region: REGION,
    })

    const S3_URL = `https://${S3_BUCKET_CAROUSEL}.s3.${REGION}.amazonaws.com/`


    return bucket.listObjects().promise();
}

export const getS3URL = (bucket) => {
    return `https://${bucket}.s3.${REGION}.amazonaws.com/`
}

Home.js调用代码

getCarouselData()
    .then(data => {
      if (data) {
        var s3_url = getS3URL(S3_BUCKET_CAROUSEL);
        var items = data.Contents;
        items.forEach((item, index) => {
          if (index > 5) {
            return;
          }
          setcarouselItems(oldArray => [
            ...oldArray,
            {
              id: index + 1,
              url: `${s3_url}${item.Key}`,
            },
          ]);
        });
      }
      setTimeout(() => {
        setcarouselLoaded(true);
      }, 4000);
    })
    .catch(err => {
      console.log(err);
    })
    .finally(zz => {
      console.log("whatttt")
    })

排查与解决方案建议

  • 检查AWS服务状态
    确认AWS S3在ap-south-1区域是否有服务中断,可通过AWS控制台的状态页面查看。若为区域服务故障,等待官方恢复即可。

  • 验证IAM凭证权限

    • 排查该凭证对应的IAM策略是否被修改,确保拥有s3:ListBucket权限,且资源范围包含carouselnews桶。
    • 用该凭证通过AWS CLI执行aws s3 ls s3://carouselnews --region ap-south-1,验证凭证本身是否能正常访问S3。
  • 排查网络与依赖问题

    • 检查应用网络权限配置:iOS端确认Info.plist是否允许访问S3域名,Android端检查AndroidManifest.xml的网络权限设置。
    • 重新安装aws-sdk依赖,排查是否存在隐性版本兼容问题:执行npm install aws-sdk或yarn add aws-sdk。
    • 在设备上抓包分析S3请求细节,确认请求是否发出、是否存在超时或响应被拦截的情况。
  • 代码层面优化排查

    • 开启AWS SDK调试日志,查看内部请求细节:
      AWS.config.logger = console;
      
    • 替换旧版接口为AWS推荐的listObjectsV2测试:
      return bucket.listObjectsV2().promise();
      
    • 检查应用是否存在阻塞事件循环的代码,避免Promise无法正常resolve/reject。

内容的提问来源于stack exchange,提问作者Nikhil Kolte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:15:39