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

本地运行AWS SQS应用遇ExpiredToken错误,求解决方案

本地运行AWS SQS应用时ExpiredToken错误解决方案

问题说明

应用在AWS DEV环境运行正常,但本地启动时抛出凭证过期错误,无法创建SQS消息监听容器。

报错信息

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'simpleMessageListenerContainer' defined in class path resource [org/springframework/cloud/aws/messaging/config/annotation/SqsConfiguration.class]: The security token included in the request is expired (Service: AmazonSQS; Status Code: 403; Error Code: ExpiredToken; Request ID: 0b2aff94-b7d4-5ec2-bb37-a053044e8c2f; Proxy: null)

现有配置类

AWS SQS连接配置类

@Configuration
@EnableSqs
public class AwsSqsConfig {

    @Bean
    public SimpleMessageListenerContainerFactory simpleMessageListenerContainerAddAndPlanListQueue(AmazonSQSAsync amazonSQSAsync) {
        SimpleMessageListenerContainerFactory simpleMessageListenerContainer = new SimpleMessageListenerContainerFactory();
        simpleMessageListenerContainer.setAmazonSqs(amazonSQSAsync);
        simpleMessageListenerContainer.setAutoStartup(true);
        simpleMessageListenerContainer.setMaxNumberOfMessages(15);
        simpleMessageListenerContainer.setWaitTimeOut(1);
        simpleMessageListenerContainer.setBackOffTime(Long.valueOf(20000));
        return simpleMessageListenerContainer;
    }
}

本地默认凭证配置类

@Configuration
public class AWSConfig {

    @Bean
    public AwsCredentialsProvider awsCredentialsProvider() {
        return DefaultCredentialsProvider.create();
    }

}

解决方案

  • 更新本地AWS凭证
    DefaultCredentialsProvider会按优先级加载本地凭证(环境变量、~/.aws/credentials文件、ECS任务角色等),报错说明当前本地使用的凭证已过期。直接编辑~/.aws/credentials文件,替换为有效的aws_access_key_id和aws_secret_access_key;或通过AWS CLI执行aws configure命令重新配置。
  • 临时指定凭证(仅开发调试)
    可在本地配置文件(如application-dev.yml)中添加有效凭证(注意不要提交到代码仓库):
    cloud:
      aws:
        credentials:
          access-key: 你的有效AccessKey
          secret-key: 你的有效SecretKey
        region:
          static: 你的AWS区域(如us-east-1)
    
    也可临时修改AWSConfig类硬编码凭证(仅调试用,生产环境禁止):
    @Configuration
    public class AWSConfig {
        @Bean
        public AwsCredentialsProvider awsCredentialsProvider() {
            return AwsBasicCredentials.create("你的有效AccessKey", "你的有效SecretKey");
        }
    }
    
  • 验证凭证权限
    确保新配置的IAM用户拥有SQS相关权限(如sqs:ReceiveMessage、sqs:DeleteMessage、sqs:GetQueueAttributes等),避免因权限不足引发类似403错误。
  • 禁用本地SQS自动启动(可选)
    若本地开发无需监听SQS,可修改AwsSqsConfig中的自动启动配置,跳过SQS连接:
    simpleMessageListenerContainer.setAutoStartup(false);
    

内容的提问来源于stack exchange,提问作者suneel meena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:03:20