【发布时间】:2021-04-17 00:55:53
【问题描述】:
我有一个 CloudFormation 模板,它可以创建一个像这样的 ElasticBeanstalk 环境:
"ApplicationEnvironment": {
"Type": "AWS::ElasticBeanstalk::Environment",
"Properties": {
"ApplicationName": {
"Ref": "Application"
},
"SolutionStackName": "64bit Amazon Linux 2018.03 v2.11.2 running Java 8",
"VersionLabel": {
"Ref": "AppVersion"
},
"Tier": {
"Name": "WebServer",
"Type": "Standard"
},
"OptionSettings": [
...
{
"Namespace": "aws:elasticbeanstalk:environment",
"OptionName": "EnvironmentType",
"Value": "LoadBalanced"
},
{
"Namespace": "aws:elasticbeanstalk:environment",
"OptionName": "LoadBalancerType",
"Value": "application"
},
...
---
"WAF": {
"Type": "AWS::WAFv2::WebACL",
"Properties": {
"DefaultAction": {
"Type": "BLOCK"
},
"Scope": "REGIONAL",
"VisibilityConfig": {
"CloudWatchMetricsEnabled": "false",
"MetricName": { "Fn::Join": [ "", [ { "Ref": "AWS::StackName" }, "metric-waf" ] ] },
"SampledRequestsEnabled": "false"
},
"Rules": [
{
"Action" : {
"Type" : "BLOCK"
},
"Priority" : 0,
"Statement" : {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet"
}
}
}
]
}
},
"WAFAssociation": {
"Type" : "AWS::WAFv2::WebACLAssociation",
"Properties" : {
"ResourceArn" : ???,
"WebACLArn" : { "Ref": "WAF" }
}
}
我打算将 Beanstalk ALB 与 WebACL 关联,但不知道如何引用模板创建的应用程序负载均衡器 ARN。我不能只放入硬编码的 ARN,因为它总是根据模板创建的内容而变化。
有什么方法可以在 ResourceArn 字段中引用 ALB ARN?还是我需要在 Beanstalk 选项设置中的某处应用 WebACL?
【问题讨论】:
-
我无法得到该答案,因为我无法从 ApplicationEnvironment 资源中引用 ALB:“AppAssociateWebACL”:{“Type”:“AWS::WAFv2::WebACLAssociation”、“Properties” : { "ResourceArn": { "Fn::GetAtt": [ "ApplicationEnvironment", "AWSEBV2LoadBalancer" ] 模板错误:资源 ApplicationEnvironment 不支持 Fn::GetAtt 中的属性类型 AWSEBV2LoadBalancer }, "WebACLArn": "..." } },
-
另外,如果我只使用: "AppAssociateWebACL": { "Type": "AWS::WAFv2::WebACLAssociation", "Properties": { "ResourceArn": { "Ref" : "AWSEBV2LoadBalancer " }, "WebACLArn": "..." } },我得到:模板格式错误:模板资源块中未解决的资源依赖项 [AWSEBV2LoadBalancer]
标签: amazon-web-services amazon-elastic-beanstalk amazon-cloudformation amazon-waf