【问题标题】:TaskDefinition - Encountered unsupported property Name - EnvironmentTaskDefinition - 遇到不受支持的属性名称 - 环境
【发布时间】:2018-12-26 23:01:37
【问题描述】:

运行声明一些环境变量的 CloudFormation 脚本时,CloudFormation 会引发以下错误:

CREATE_FAILED   AWS::ECS::TaskDefinition    ECSTaskDefinition   Encountered unsupported property Name

这与 CloudFormation 模板中的以下资源有关

"ECSTaskDefinition": {
    "Type": "AWS::ECS::TaskDefinition",
    "Properties": {
        "Cpu": "256",
        "ExecutionRoleArn": {
            "Fn::GetAtt": [
                "ECSTaskRole",
                "Arn"
            ]
        },
        "Family": {
            "Ref": "AWS::StackName"
        },
        "Memory": "500",
        "NetworkMode": "awsvpc",
        "RequiresCompatibilities": [
            "FARGATE"
        ],
        "ContainerDefinitions": [
            {
                "Environment": [
                    {
                        "Name": "cloudsearch:search_endpoint",
                        "Value": {
                            "Ref": "CloudSearchDomainServiceUrl"
                        }
                    }
                ],
                "Essential": true,
                "Image": {
                    "Ref": "ContainerImage"
                }
            }
        ]
    }
}

我不确定上述有什么问题,因为从文档中正确声明了 Environment 块 -https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-environment.html

任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-ecs aws-fargate


    【解决方案1】:
     ECSAppTask:
        Type: AWS::ECS::TaskDefinition
        Properties:
            RequiresCompatibilities: 
              - !FindInMap
                - ECSEnvironmentDetails
                - !Ref EnvironmentTier
                - Compatibilities
            ContainerDefinitions:
                - 
                    Name: !Join ['-', [!Ref 'ECSCluster', app]]
                    Image: !FindInMap
                            - ECSEnvironmentDetails
                            - !Ref EnvironmentTier
                            - AppImage
                    Memory: 1024
                    Cpu: 0
                    Essential: true
                    PortMappings:
                        - ContainerPort: 80
                          HostPort: 80
                        - ContainerPort: 8080
                          HostPort: 8080
                    Environment:
                        - Name: CONFIGURE_MODE
                          Value: config_mode
                        - Name: ENVIRONMENT
                          Value: env
                        - Name: ENVTYPE
                          Value: env_type
                        - Name: LICENSE
                          Value: accept
                    LogConfiguration:
                      LogDriver: logs
                      Options:
                          awslogs-group: !Ref ECSAppLogGroup
                          awslogs-region: !FindInMap
                                          - ECSEnvironmentDetails
                                          - !Ref EnvironmentTier
                                          - LogsRegion
                          awslogs-stream-prefix: !FindInMap
                                                  - ECSEnvironmentDetails
                                                  - !Ref EnvironmentTier
                                                  - LogsStreamPrefix
                    MountPoints:
                        - 
                          ContainerPath: /default/logs
                          SourceVolume:  !FindInMap
                                            - ECSEnvironmentDetails
                                            - !Ref EnvironmentTier
                                            - AppVolumeName
            Volumes:
                - 
                  Host:
                    SourcePath: !FindInMap
                                     - ECSEnvironmentDetails
                                     - !Ref EnvironmentTier
                                     - AppVolumeSourcePath
                  Name: !FindInMap
                           - ECSEnvironmentDetails
                           - !Ref EnvironmentTier
                           - AppVolumeName 
    

    这是我定义任务定义的 yaml 文件,它可以工作。一开始我遇到了同样的问题“TaskDefinition - Encountered unsupported property Name - Environment”,然后我意识到我在环境键值列表中使用了所有小写字母, 所以我改变了yaml中的环境:

           Environment:
                        - name: CONFIGURE_MODE
                          value: config_mode
                        - name: ENVIRONMENT
                          value: env
                        - name: ENVTYPE
                          value: env_type
                        - name: LICENSE
                          value: accept
    

                Environment:
                        - Name: CONFIGURE_MODE
                          Value: config_mode
                        - Name: ENVIRONMENT
                          Value: env
                        - Name: ENVTYPE
                          Value: env_type
                        - Name: LICENSE
                          Value: accept
    

    并尝试更新或重新创建堆栈,均已成功完成。

    【讨论】:

      【解决方案2】:

      想知道问题是否与环境变量cloudsearch:search_endpoint 的实际名称有关,通常我们遵循 bash 变量约定来创建环境变量,尝试类似CLOUDSEARCH_SEARCH_ENDPOINT

      【讨论】:

      猜你喜欢
      • 2018-10-13
      • 2020-06-28
      • 2019-11-02
      • 2021-06-28
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      相关资源
      最近更新 更多