问题描述
我有一个大致如下所示的 cloudformation 片段:
from collections import Counter
class ChoreTracker:
def __init__(self):
self.chores = Counter()
def add_hours(self,chore,time):
self.chores[chore] += time
def print_summary(self):
for chore,time in self.chores.items():
print(f"{chore}:",time)
tracker = ChoreTracker()
tracker.add_hours("sweeping",0.75)
tracker.add_hours("laundry",0.5)
tracker.add_hours("working",6)
tracker.add_hours("mopping",0.5)
tracker.add_hours("laundry",1)
tracker.add_hours("working",5.5)
tracker.print_summary()
ContainerSecurityGroup:
Type : AWS::EC2::SecurityGroup
Properties :
InstanceId: !Ref ContainerSG
GroupDescription : "ECS Containers Security Group"
VpcId : !Sub {{resolve:ssm:/ca/config/network/vpc_id:${ParamVersion}}}
GroupName : !Sub ${Env}-${ServiceName}-sg
SecurityGroupIngress :
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.49.63.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.93.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.97.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.128.0/21
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.144.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 172.25.0.0/16
解决方法
YAML 需要一致的缩进间距。确保为每个缩进使用相同的间距。您发布的示例为某些缩进了 2 个空格,为其他缩进了 3 个空格。如果您在现代 IDE(即 VSCode)中编辑 YAML 文件,它应该为您格式化和缩进,这样您就不必考虑它了。
此外,VpcId 行不正确,目前无法将 {{resolve:}}
机制与 !Sub
结合来参数化值,这必须进行硬编码。您可能想改用 SSM Parameter types 或只是对其进行硬编码。
ContainerSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
InstanceId: !Ref ContainerSG
GroupDescription: "ECS Containers Security Group"
VpcId: {{resolve:ssm:/ca/config/network/vpc_id:1}}
GroupName: !Sub ${Env}-${ServiceName}-sg
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
CidrIp: 10.49.63.0/24
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
CidrIp: 10.93.0.0/16
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
CidrIp: 10.97.0.0/16
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
CidrIp: 10.50.128.0/21
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
CidrIp: 10.50.144.0/24
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
CidrIp: 172.25.0.0/16