我正在尝试在 cloudformation 中创建 ECS 服务,我想使用它创建的默认 VPC,并选择任何子网

I am trying to create an ECS service in cloudformation, and I want to use the default VPC that it creates, and choose any of the subnets

下面是yaml模板。在 NetworkConfiguration 中,子网 属性 是必需的。我应该如何将其设置为创建的默认 VPC 的任何子网?

Resources:
    ECSService:
        Type: AWS::ECS::Service
        Properties:
            TaskDefinition: !Ref ECSTaskDefinition
            LaunchType: FARGATE
            Cluster: !Ref ECSCluster
            ServiceName: !Join
                - '-'
                - 
                    - !Ref Message
                    - !Ref Stage
                    - service
            DesiredCount: 1
            DeploymentConfiguration:
                MaximumPercent: 200
                MinimumHealthyPercent: 100
            NetworkConfiguration:
                AwsvpcConfiguration:
                    AssignPublicIp: ENABLED
                    Subnets: 
                        - ?????

“此 vpc 中的任何子网”没有值,您必须在模板中或作为参数设置子网。

或者,您可以在模板中创建 vpc 和子网,并在描述您的 ECS 服务时引用它们。

最后,您可以使用自定义资源来调用查找子网的 Lambda 函数,但它比本机引用更复杂。在此处查看 AWS 博客 post https://aws.amazon.com/blogs/mt/looking-up-information-on-aws-cloudformation-stack-parameters-using-aws-lambda/

如果它是默认 vpc,您可以尝试对值进行硬编码。或者在您的模板中定义一个新的 vpc 和子网并引用它们。

顺便说一句,您可以尝试 cloudkast,这是一个在线 aws cloudformation 模板生成器。在处理 cloudformation 模板时,它应该会让你的生活不那么可怕。 ;-)