使用CloudFormation创建关联ECR与负载均衡的Fargate类型ECS服务时出现IAM角色参数错误的问题求助
解决ECS Fargate服务CloudFormation部署的InvalidParameterException错误
问题分析
你碰到的这个错误提示其实已经把原因说透了:You cannot specify an IAM role for services that require a service linked role。核心问题在于,Fargate启动类型的ECS服务会自动使用AWS托管的服务关联角色(AWSServiceRoleForECS),根本不需要你手动在Role参数里指定这个角色。当你强行给这类依赖服务关联角色的服务设置自定义Role属性时,就会触发这个400参数错误。
解决方案
直接从你的ECS服务资源定义里删掉Role那一行就行,修改后的完整资源块如下:
service: Type: AWS::ECS::Service DependsOn: ALBListenerHttps Properties: Cluster: !Ref 'ECSCluster' DesiredCount: '1' LaunchType: FARGATE LoadBalancers: - ContainerName: !Sub ${Environment}-${Name} ContainerPort: '3000' TargetGroupArn: !Ref 'ECSTG' TaskDefinition: !Ref 'taskdefinition' NetworkConfiguration: AwsvpcConfiguration: AssignPublicIp: 'ENABLED' Subnets: !Ref 'SubnetId'
补充说明
- 服务关联角色(AWSServiceRoleForECS)是AWS为ECS自动创建和维护的,专门用于让ECS服务代表你完成一些必要操作(比如和负载均衡器交互、管理任务生命周期等)。
- 只有当你使用EC2启动类型的ECS服务,且需要自定义服务角色来实现特定功能(比如自动扩展ECS实例)时,才需要手动指定
Role参数。Fargate场景下完全不需要这个配置。
内容的提问来源于stack exchange,提问作者Marcus Lagerstedt
相关产品推荐
相关产品推荐

