如何通过CloudFormation将WAF与ElasticBeanstalk的ALB集成?
如何获取Elastic Beanstalk ALB的ARN并集成WAF
要在同CloudFormation栈中将WAF与Elastic Beanstalk的ALB关联,核心是正确获取ALB的ARN,以下是直接可靠的实现方式:
1. 定义Elastic Beanstalk Environment资源
你提供的ConfigurationTemplate只是配置模板,实际创建ALB的是AWS::ElasticBeanstalk::Environment资源。先基于你的模板定义该环境资源:
TestEnvironment: Type: AWS::ElasticBeanstalk::Environment Properties: ApplicationName: !Ref TestApplication TemplateName: !Ref TestTemplate # 可添加环境名称等其他必要配置
2. 获取ALB ARN并创建WAF关联
使用!GetAtt从Environment资源中直接提取ALB的ARN,然后通过AWS::WAFv2::WebACLAssociation完成集成:
WAFALBAssociation: Type: AWS::WAFv2::WebACLAssociation Properties: ResourceArn: !GetAtt TestEnvironment.LoadBalancerArn WebACLArn: !Ref YourWebACL # 替换为你已定义的WAF WebACL资源名称
补充说明
LoadBalancerArn属性仅对使用ALB的Elastic Beanstalk环境有效;若使用经典ELB,需通过LoadBalancerName属性拼接ARN(格式为arn:aws:elasticloadbalancing:${Region}:${AccountId}:loadbalancer/${LoadBalancerName}),但优先推荐使用ALB。- 同栈内直接用
!GetAtt引用可保证资源依赖关系的正确性,避免依赖标签等间接方式可能引发的问题。
内容的提问来源于stack exchange,提问作者julanove
相关产品推荐
相关产品推荐

