我正試圖將一個手動創建的服務翻譯成云計算模板,但我一直得到錯誤。
任務定義已經用UI創建,因為它需要一些特定的角色
這個模板給了我。Fargate不支持經典負載均衡器 這個模板給我的提示是:
Fargate不支持經典負載均衡器。
ServicesSG:
型別: AWS::EC2::安全組
屬性:
GroupDescription: Security group for cluster services
VpcId: !Ref 'VPC'
SecurityGroupIngress:
- IpProtocol:tcp
FromPort: 0
ToPort: 65535
SourceSecurityGroupId: !Ref "PublicLoadBalancerSG"
ServiceStaging:
型別: AWS::ECS::Service
屬性:
服務名稱: pouch-svc-staging[/span
TaskDefinition: pouch-td-staging:4
集群: !Ref 'ClusterECS'
DesiredCount: 2
SchedulingStrategy: REPLICA
發射型別: FARGATE
EnableECSManagedTags: true
DeploymentConfiguration:
MinimumHealthyPercent: 100
MaximumPercent: 200
DeploymentCircuitBreaker:
Enable: false
Rollback: false
NetworkConfiguration:
AwsvpcConfiguration:
AssignPublicIp: ENABLED
子網:
- !Ref PublicSubnetOne
- !Ref PublicSubnetTwo
安全組: 安全組:
- !Ref ServicesSG
LoadBalancers:
- ContainerName: pouch-image-staging
LoadBalancerName: ! Ref 'LoadBalancerName'
ContainerPort: 3100。
更新:這里是修改后的完整的云計算模板,沒有一些評論所闡述的負載均衡器的名稱
AWSTemplateFormatVersion: '2010-09-09'。
Description: VPC, subnets 和 external, 公共 面向 負載 平衡器。 for for for for for for public traffic to containers
引數:
LoadBalancerName:
型別: String
Default: pouch-api-elb
集群名稱:
型別: String
默認值: pouch-api-cluster
映射:
SubnetConfig:
VPC:/span>
CIDR: '172.16.0.0/16'/span>
PublicOne:
CIDR: '172.16.0.0/24'
PublicTwo:
CIDR: '172.16.1.0/24'
資源:
VPC:
Type: AWS::EC2::VPC
屬性:
EnableDnsSupport: true
EnableDnsHostnames: true
CidrBlock: ! FindInMap ['SubnetConfig', 'VPC', 'CIDR']
PublicSubnetOne:
型別: AWS::EC2::Subnet
屬性:
AvailabilityZone:
Fn::Select:
- 0
- Fn::GetAZs: {Ref: 'AWS::Region'}。
VpcId: !Ref 'VPC'
CidrBlock: !FindInMap ['SubnetConfig'/span>, 'PublicOne'/span>, 'CIDR'/span>]
MapPublicIpOnLaunch: true
PublicSubnetTwo:
型別: AWS::EC2::Subnet
屬性:
AvailabilityZone:
Fn::Select:
- 1
- Fn::GetAZs: {Ref: 'AWS::Region'}。
VpcId: !Ref 'VPC'
CidrBlock: !FindInMap ['SubnetConfig'/span>, 'PublicTwo'/span>, 'CIDR'/span>]
MapPublicIpOnLaunch: true
InternetGateway:/span>
型別: AWS::EC2::InternetGateway
GatewayAttachement:
型別: AWS::EC2::VPCGatewayAttachment
屬性:
VpcId: !Ref 'VPC'
InternetGatewayId: !Ref 'InternetGateway'/span>
PublicRouteTable:
型別: AWS::EC2::RouteTable
屬性:
VpcId: !Ref 'VPC'
PublicRoute:/span>
型別: AWS::EC2::Route
DependsOn: GatewayAttachement[/span
屬性:
RouteTableId: !Ref 'PublicRouteTable'
DestinationCidrBlock: '0.0.0.0/0'/span>
GatewayId: !Ref 'InternetGateway'/span>
PublicSubnetOneRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation。
屬性:
SubnetId: !Ref PublicSubnetOne
RouteTableId: ! Ref PublicRouteTable
PublicSubnetTwoRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation。
屬性:
SubnetId: !Ref PublicSubnetTwo
RouteTableId: ! Ref PublicRouteTable
PublicLoadBalancerSG:/span>
型別: AWS::EC2::安全組
屬性:
GroupDescription: 訪問 到 的 public facing load balancer
VpcId: !Ref 'VPC'
SecurityGroupIngress:
- CidrIp: 0.0.0.0/0
IpProtocol: 1
PublicLoadBalancer:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
屬性:
Name: !Ref 'LoadBalancerName'
Scheme: internet-facing[/span]。
LoadBalancerAttributes:
- Key: idle_timeout.timeout_seconds
值: "30"
子網:
- !Ref PublicSubnetOne
- !Ref PublicSubnetTwo
SecurityGroups: [! Ref "PublicLoadBalancerSG"]
TargetGroupStaging:
型別: AWS::ElasticLoadBalancingV2::TargetGroup
屬性:
HealthCheckIntervalSeconds: 6
HealthCheckPath: /
HealthCheckProtocol: HTTP
HealthCheckTimeoutSeconds: 5
HealthyThresholdCount: 2
埠: 80
協議: HTTP
TargetType: ip
UnhealthyThresholdCount: 2
VpcId: !Ref 'VPC'
TargetGroupProduction:
型別: AWS::ElasticLoadBalancingV2::TargetGroup
屬性:
HealthCheckIntervalSeconds: 6
HealthCheckPath: /
HealthCheckProtocol: HTTP
HealthCheckTimeoutSeconds: 5
HealthyThresholdCount: 2
埠: 80
協議: HTTP
TargetType: ip
UnhealthyThresholdCount: 2
VpcId: !Ref 'VPC'
ListenerRuleProduction:
Type: "AWS::ElasticLoadBalancingV2::ListenerRule"
屬性:
行動:
- 型別: forward
TargetGroupArn: !Ref "TargetGroupProduction"
條件:
- Field: path-pattern
PathPatternConfig:
值:
- /production/*
ListenerArn: !Ref PublicLoadBalancerListener
Priority: 100
ListenerRuleStaging:
Type: "AWS::ElasticLoadBalancingV2::ListenerRule"
屬性:
行動:
- 型別: forward
TargetGroupArn: !Ref "TargetGroupStaging"
條件:
- Field: path-pattern
PathPatternConfig:
值:
- /staging/*
ListenerArn: !Ref PublicLoadBalancerListener
Priority: 50
PublicLoadBalancerListener:
Type: AWS::ElasticLoadBalancingV2::Listener。
屬性:
DefaultActions:
- 型別: "redirect"
RedirectConfig:
協議: "#{protocol}"/span>
埠: "#{port}"/span>
主機: "#{host}"/span>
路徑: "/production/"/span>
StatusCode: "HTTP_301"/span>
LoadBalancerArn: !Ref "PublicLoadBalancer"
埠: 80
協議: HTTP
ClusterECS:
Type: AWS::ECS::Cluster
DependsOn: PublicLoadBalancerListener
屬性:
ClusterName: !Ref 'ClusterName'
CapacityProviders:
- FARGATE
ServicesSG:
Type: AWS::EC2::SecurityGroup
屬性:
GroupDescription: Security group for cluster services
VpcId: !Ref 'VPC'
SecurityGroupIngress:
- IpProtocol:tcp
FromPort: 0
ToPort: 65535
SourceSecurityGroupId: !Ref "PublicLoadBalancerSG"
ServiceStaging:
型別: AWS::ECS::Service
屬性:
服務名稱: pouch-svc-staging[/span
TaskDefinition: pouch-td-staging:4
集群: !Ref 'ClusterECS'
DesiredCount: 2
SchedulingStrategy: REPLICA
發射型別: FARGATE
EnableECSManagedTags: true
DeploymentConfiguration:
MinimumHealthyPercent: 100
MaximumPercent: 200
DeploymentCircuitBreaker:
Enable: false
Rollback: false
NetworkConfiguration:
AwsvpcConfiguration:
AssignPublicIp: ENABLED
子網:
- !Ref PublicSubnetOne
- !Ref PublicSubnetTwo
安全組: 安全組:
- !Ref ServicesSG
LoadBalancers:
- ContainerName: pouch-image-staging
TargetGroupArn: ! Ref 'TargetGroupStaging'
ContainerPort: 3100
服務生產:
型別: AWS::ECS::Service
屬性:
服務名稱: pouch-svc-production
TaskDefinition: pouch-td-production:4
集群: !Ref 'ClusterECS'
DesiredCount: 2
SchedulingStrategy: REPLICA
發射型別: FARGATE
EnableECSManagedTags: true
DeploymentConfiguration:
MinimumHealthyPercent: 100
MaximumPercent: 200
DeploymentCircuitBreaker:
Enable: false
Rollback: false
NetworkConfiguration:
AwsvpcConfiguration:
AssignPublicIp: ENABLED
子網:
- !Ref PublicSubnetOne
- !Ref PublicSubnetTwo
安全組: 安全組:
- !Ref ServicesSG
LoadBalancers:
- ContainerName: pouch-image-production
TargetGroupArn: ! Ref 'TargetGroupProduction'
ContainerPort: 3100
輸出:
VpcId:
描述。 The ID of the VPC that this stack is deployed in
Value: !Ref 'VPC'
PublicSubnetOne:
描述: Public subnet one
Value: ! Ref 'PublicSubnetOne'
PublicSubnetTwo:
描述: Public subnet two
Value: !Ref 'PublicSubnetTwo'
ExternalUrl:
Description: The url of the external load balancer >。
Value: ! Sub http://${PublicLoadBalancer.DNSName}
現在我得到了 "targetGroupArn arn:aws:elasticloadbalancing: ... :targetgroup/pouch-Targe-XFJ4AI7HCF6G/f2a665925da27326的目標組沒有一個相關的負載均衡器"
uj5u.com熱心網友回復:
來自官方AWS 檔案:
LoadBalancerName
負載均衡器的名稱。 要與Amazon ECS服務或任務集相關聯的負載平衡器的名稱。只有在使用經典負載平衡器時才會指定負載平衡器的名稱。如果您使用的是應用程式負載平衡器或網路負載平衡器,則應省略負載平衡器名稱引數。
這意味著您不應該在 CloudFormation 模板中指定負載平衡器的名稱,因為您使用的是 Fargate,因此,不要使用經典負載平衡器。
另外,在您的位置上,我會考慮使用類似Former2的東西。這是一個偉大的工具,可以為您生成 CloudFormation 模板。你可以掃描你的賬戶,選擇你想要創建模板的服務。但是為了使用它,您需要一個訪問密鑰和秘密密鑰,因此請考慮創建一個具有只讀權限的 IAM 用戶。
編輯以覆寫關于目標組的第二個錯誤:
Amazon ECS 服務需要明確依賴 應用負載平衡器聽眾規則和應用負載平衡器 平衡器監聽器。這可以防止服務在 聽眾準備好之前啟動服務。
有可能是
AWS::ECS::Service在目標組被添加到負載平衡器之前,試圖附加到目標組。為了解決這個問題,你應該在你的服務中添加一個依賴關系,就像這樣:
Type: ECS::Service。型別。AWS::ECS::Service DependsOn: Listener # 添加準確的監聽器名稱,取決于服務 屬性。這應該有助于解決這個問題。
uj5u.com熱心網友回復:
我還不能添加評論。我認為下面的鏈接可以幫助解決這個問題 Fargate不支持經典負載均衡器
AWS 負載平衡與 Fargate 的 ECS 服務的多個埠
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/325348.html
標籤:
上一篇:關于限制S3物件訪問的S3安全










