Sma*_* Ma 5 amazon-ecs aws-cloudformation
在AWS::ECS::Service通过 cloudformation创建期间,我收到错误消息:Model validation failed
该错误与#HealthCheckGracePeriodSeconds其他一些属性有关。错误详情是: expected type: Number, found: String。
在 yaml 中它已经是一个数字。我不清楚出了什么问题。已经尝试将其声明为字符串或类型为 Number 的参数。
我需要一些提示,因为此时我陷入困境。
错误是:
Model validation failed
(
#/HealthCheckGracePeriodSeconds: expected type: Number, found: String
#/DesiredCount: expected type: Number, found: String
#/DeploymentConfiguration/MaximumPercent: expected type: Number, found: String
#/DeploymentConfiguration/MinimumHealthyPercent: expected type: Number, found: String
)
Run Code Online (Sandbox Code Playgroud)
template.yaml 中的定义是:
ServiceDefinition:
Type: AWS::ECS::Service
Properties:
ServiceName: !Ref ServiceName
Cluster: !Ref ClusterName
TaskDefinition: !Ref TaskDefinition
DeploymentConfiguration:
MinimumHealthyPercent: 100
MaximumPercent: 200
DesiredCount: 1
HealthCheckGracePeriodSeconds: 60
LaunchType: FARGATE
NetworkConfiguration:
AwsVpcConfiguration:
AssignPublicIP: ENABLED
SecurityGroups: !FindInMap [Env2SecurityGroups, !Ref AWS::AccountId, securitygroup]
Subnets: !FindInMap [Env2PublicSubnets, !Ref AWS::AccountId, subnets]
Run Code Online (Sandbox Code Playgroud)
该错误是由于格式错误SecurityGroups而引起的。Subnets
提取subnets并使用securitygroups该功能。FindInMap这个结果必须是一个列表。这可以使用该功能来实现Split。
不幸的是,错误的格式会导致完全误导性的错误消息。
像这样声明映射:
Mappings
Env2SecurityGroups:
'111111111111':
securitygroup: 'sg-1111111111111111'
'222222222222':
securitygroup: 'sg-2222222222222222'
'333333333333':
securitygroup: 'sg-3333333333333333'
Env2PublicSubnets:
'111111111111':
subnets: subnet-1111111111111111,subnet-22222222222222222,subnet-33333333333333333
'222222222222':
subnets: subnet-1111111111111111,subnet-22222222222222222,subnet-33333333333333333
'333333333333':
subnets: subnet-1111111111111111,subnet-22222222222222222,subnet-33333333333333333
Run Code Online (Sandbox Code Playgroud)
使用!Split与 结合!FindInMap来获取列表:
SecurityGroups: !Split [",", !FindInMap [ Env2SecurityGroups, !Ref AWS::AccountId, securitygroup] ]
Subnets: !Split [",", !FindInMap [ Env2PublicSubnets, !Ref AWS::AccountId, subnets] ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2563 次 |
| 最近记录: |