使用Docker Compose部署ECS容器时遇Security Token Error求助
问题现象
使用Docker Compose部署容器到ECS,已完成镜像构建并通过docker compose create myecs创建ECS上下文,但执行docker compose up时触发以下错误:
UnrecognizedClientException: The security token included in the request is invalid. status code: 400, request id: 0bb44cc9-4de3-4ac0-a6d5-685069dab0ee
AWS配置信息截图:
排查与解决步骤
验证AWS凭据正确性
打开~/.aws/credentials文件,核对aws_access_key_id和aws_secret_access_key是否与IAM控制台生成的密钥完全一致,排除拼写错误、多余空格或换行问题。同时用AWS CLI直接测试:执行aws ecs list-clusters,若同样报错,说明凭据本身无效,需重新在IAM控制台生成新的访问密钥。检查Docker ECS上下文的凭据配置
执行docker context inspect myecs查看上下文详情,确认其中的AWS凭据配置与aws configure设置的默认配置一致。若不一致,可重新创建上下文并明确绑定默认AWS配置:docker compose create myecs --from aws。排查临时令牌有效性(若使用STS)
如果使用的是临时安全令牌(如通过IAM角色切换、MFA认证生成),检查~/.aws/credentials中的aws_session_token字段是否过期,若过期需重新生成有效令牌。确认IAM用户权限
确保操作的IAM用户拥有ECS部署所需的核心权限,包括但不限于ecs:CreateCluster、ecs:RegisterTaskDefinition、ecs:RunTask、iam:PassRole等。可临时附加AmazonECS_FullAccess策略验证是否为权限问题(生产环境建议遵循最小权限原则配置自定义策略)。
内容的提问来源于stack exchange,提问作者Shwettha RR

