如何通过AWS CloudFormation配置ALB路由规则及管理目标组实例?
问题解答与CloudFormation模板示例
一、核心问题确认
是的,仅通过AWS CloudFormation就能将已手动创建的EC2实例关联至目标组,无需额外工具或控制台操作,关键是在模板中正确引用现有资源的标识符(比如EC2实例ID、目标组ARN等)。
二、CloudFormation模板示例
以下模板实现两个核心操作:
- 将指定EC2实例关联到已存在的目标组
- 为已存在的ALB添加路由规则
AWSTemplateFormatVersion: '2010-09-09' Description: 关联现有EC2实例至目标组,并配置ALB路由规则 Parameters: # 现有资源的参数,需根据实际环境填写 TargetGroupARN: Type: String Description: 已创建的目标组ARN EC2InstanceIds: Type: CommaDelimitedList Description: 要关联的EC2实例ID列表(用逗号分隔) ALBListenerARN: Type: String Description: 已创建的ALB监听器ARN(如HTTP/HTTPS监听器) RulePriority: Type: Number Default: 10 Description: 路由规则优先级(数值越小优先级越高) PathPattern: Type: String Default: /* Description: 路由规则匹配的路径模式 Resources: # 关联EC2实例到目标组 EC2TargetGroupAssociation: Type: AWS::ElasticLoadBalancingV2::TargetGroupTarget Properties: TargetGroupArn: !Ref TargetGroupARN Targets: - Id: !Select [0, !Ref EC2InstanceIds] # 若目标组使用实例端口,可指定Port;若用注册端口可省略 # Port: 80 - Id: !Select [1, !Ref EC2InstanceIds] # Port: 80 # 配置ALB路由规则 ALBRouteRule: Type: AWS::ElasticLoadBalancingV2::ListenerRule Properties: ListenerArn: !Ref ALBListenerARN Priority: !Ref RulePriority Conditions: - Field: path-pattern Values: - !Ref PathPattern Actions: - Type: forward TargetGroupArn: !Ref TargetGroupARN
三、使用说明
参数填写:部署模板时需提供以下实际资源信息:
TargetGroupARN:从EC2控制台目标组详情页获取ARNEC2InstanceIds:输入两个EC2实例ID,用逗号分隔(示例:i-1234567890abcdef0,i-0987654321fedcba0)ALBListenerARN:从ALB控制台监听器详情页获取ARN- 按需调整
RulePriority和PathPattern参数
注意事项:
- 确保EC2实例的安全组允许目标组所属安全组的流量(比如目标组监听80端口,EC2安全组需开放80端口给ALB的安全组)
- 若目标组为
instance类型,EC2实例必须在ALB的VPC内且状态为运行中 - 路由规则优先级不能与ALB上已有的规则冲突
四、验证方法
部署完成后可通过以下方式验证:
- 进入目标组控制台,查看「目标」标签页,确认EC2实例已添加且状态为「健康」
- 访问ALB的DNS名称,检查是否能正常路由到EC2实例提供的服务
内容的提问来源于stack exchange,提问作者Surbhi Singhal
相关产品推荐
相关产品推荐

