全部产品
Search
文档中心

资源编排:ALIYUN::EDAS::Application

更新时间:Nov 02, 2023

ALIYUN::EDAS::Application类型用于创建ECS集群的应用。

语法

{
  "Type": "ALIYUN::EDAS::Application",
  "Properties": {
    "ApplicationName": String,
    "HealthCheckURL": String,
    "Description": String,
    "ClusterId": String,
    "PackageType": String,
    "BuildPackId": Integer,
    "EcuInfo": String,
    "ComponentIds": String,
    "LogicalRegionId": String,
    "ResourceGroupId": String,
    "Deployment": Map
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

ApplicationName

String

应用名称。

必须以字母开头,可包含数字、英文字母、短横线(-)和下划线(_),长度为1~36个字符。

HealthCheckURL

String

健康检查URL。

Description

String

描述信息。

ClusterId

String

向指定集群ID的ECS集群创建应用,不指定则向默认ECS集群创建应用。

PackageType

String

应用包格式

取值:

  • war

  • jar

ResourceGroupId

String

资源组ID。

BuildPackId

Integer

EDAS-Container构建包号。

您可以通过容器版本列表接口ListBuildPack或者根据容器版本说明 中的构建包序号列查询EDAS-Container构建包号。

当创建HSF应用时,必须指定该参数。

EcuInfo

String

需要扩容机器的ecu_id(导入EDAS的 ECS实例在EDAS中的唯一身份)。

多个ecu_id用“,”分开。

您可以通过ListScaleOutEcu接口查询ecu_id。

ComponentIds

String

应用组件ID。

说明

设置该参数需要将Java或者Python SDK版本更新到2.57.3及以上。未使用EDAS提供的SDK的用户可直接设置该参数。例如:用户在使用aliyun-python-sdk-core、aliyun-java-sdk-core、aliyun cli等SDK时可以直接设置该参数。

当创建的应用运行环境使用Apache Tomcat(war包格式的 Dubbo应用使用)或者标准Java应用(jar包格式的Spring Boot/Spring Cloud应用使用)运行环境时需要指定。常用的应用组件 ID 及含义如下:

  • 4:Apache Tomcat 7.0.91

  • 7:Apache Tomcat 8.5.42

  • 5:OpenJDK 1.8.x

  • 6:OpenJDK 1.7.x

LogicalRegionId

String

命名空间ID,示例值:cn-beijing:prod

  • 如果指定的集群不在默认命名空间下,则需要指定该参数,否则会遇到错误提示application regionId is different with cluster regionId!

  • 如果在默认命名空间下,则不需要指定该参数。

该参数需要与指定的集群ID所在的命名空间保持一致。您可以登录EDAS控制台,选择应用管理>命名空间,找到命名空间对应的命名空间ID。

Deployment

Map

部署应用程序信息。

更多信息,请参见Deployment属性

Deployment语法

"Deployment": {
  "ReleaseType": Integer,
  "Batch": Integer,
  "TrafficControlStrategy": String,
  "BatchWaitTime": Integer,
  "PackageVersion": String,
  "Desc": String,
  "Gray": Boolean,
  "WarUrl": String,
  "GroupId": String,
  "AppEnv": String
}

Deployment属性

属性名称

类型

必须

允许更新

描述

约束

ReleaseType

Integer

分批方式。

取值:

  • 0为自动。

  • 1为各批次间需要手动确认。可在控制台目标应用的变更流程详情中单击继续下一批,也可通过调用ContinuePipeline继续下一批(由于使用API部署,建议使用自动分批),请参见ContinuePipeline

Batch

Integer

每组批次。

  • 当指定了应用分组的GroupId为具体的某个应用分组ID时,表示向指定应用分组部署。此时可指定的最小批次数为1,最大批次数为该应用分组下正常状态的ECS实例数最大值,实际分批数结果范围:[1,指定的分批数] (指定的分批数=指定的分组下面ECS总数)。

  • 当指定了应用分组的GroupId为all时,表示向所有应用分组部署,此时可指定的最小批次数为1,最大批次数为正常状态的ECS数量最多的分组下的ECS实例数。

TrafficControlStrategy

String

灰度发布策略内容。

BatchWaitTime

Integer

分批等待时间。

单位:分钟。

  • 默认为0,表示不等待。

  • 最大为5。

当实际批次数较多时,需要设置一个合理值,否则会导致本次应用部署的变更持续时间比较长。

PackageVersion

String

部署的应用部署包版本。

最长64个字符,建议使用时间戳。

Desc

String

应用部署描述信息。

Gray

Boolean

是否为金丝雀发布。

取值:

  • true:金丝雀发布。

    • 灰度发布时,必须指定灰度发布的分组ID,即GroupId。

    • 灰度发布作为一个批次发布。

    • 灰度结束后,正常发布,分组批次由Batch控制。

  • false:非金丝雀发布(单批或分批发布)。

WarUrl

String

应用部署包(WAR或JAR)的URL地址。

DeployTypeurl时必填,建议使用OSS存储的应用部署包路径。

GroupId

String

部署分组ID。

AppEnv

String

部署环境变量。

格式必须符合{"name":"x","value":"y"},{"name":"x2","value":"y2"}key固定为namevalue

返回值

Fn::GetAtt

  • Port:创建成功的应用端口号,默认值:8080。

  • AppId:应用ID,EDAS应用的唯一标识符。

示例

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ClusterId:
    Type: String
    Description: Cluster ID of ECS application
    Default: '****'
  RegionTag:
    Type: String
    Description: Allowed letters and numbers
    Default: mytest
  ApplicationName:
    Type: String
    Default: mytest
Resources:
  App:
    Type: ALIYUN::EDAS::Application
    Properties:
      ApplicationName:
        Ref: ApplicationName
      LogicalRegionId:
        Fn::Join:
          - ':'
          - - Ref: ALIYUN::Region
            - Ref: RegionTag
      ClusterId:
        Ref: ClusterId
      PackageType: jar
Outputs:
  ClusterName:
    Value:
      Fn::GetAtt:
        - Cluster
        - ClusterName
  IaasProvider:
    Value:
      Fn::GetAtt:
        - Cluster
        - IaasProvider
  ClusterId:
    Value:
      Fn::GetAtt:
        - Cluster
        - ClusterId
  ClusterType:
    Value:
      Fn::GetAtt:
        - Cluster
        - ClusterType
  Port:
    Value:
      Fn::GetAtt:
        - App
        - Port
  AppId:
    Value:
      Fn::GetAtt:
        - App
        - AppId
  GroupName:
    Value:
      Fn::GetAtt:
        - DeployGroup
        - GroupName
  Id:
    Value:
      Fn::GetAtt:
        - DeployGroup
        - Id
  DeployGroupAppId:
    Value:
      Fn::GetAtt:
        - DeployGroup
        - AppId
  BelongRegion:
    Value:
      Fn::GetAtt:
        - LogicalRegion
        - BelongRegion
  DebugEnable:
    Value:
      Fn::GetAtt:
        - LogicalRegion
        - DebugEnable
  UserId:
    Value:
      Fn::GetAtt:
        - LogicalRegion
        - UserId
  LogicalRegionId:
    Value:
      Fn::GetAtt:
        - LogicalRegion
        - Id
  RegionName:
    Value:
      Fn::GetAtt:
        - LogicalRegion
        - RegionName

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "ClusterId": {
      "Type": "String",
      "Description": "Cluster ID of ECS application",
      "Default": "****"
    },
    "RegionTag": {
      "Type": "String",
      "Description": "Allowed letters and numbers",
      "Default": "mytest"
    },
    "ApplicationName": {
      "Type": "String",
      "Default": "mytest"
    }
  },
  "Resources": {
    "App": {
      "Type": "ALIYUN::EDAS::Application",
      "Properties": {
        "ApplicationName": {
          "Ref": "ApplicationName"
        },
        "LogicalRegionId": {
          "Fn::Join": [
            ":",
            [
              {
                "Ref": "ALIYUN::Region"
              },
              {
                "Ref": "RegionTag"
              }
            ]
          ]
        },
        "ClusterId": {
          "Ref": "ClusterId"
        },
        "PackageType": "jar"
      }
    }
  },
  "Outputs": {
    "ClusterName": {
      "Value": {
        "Fn::GetAtt": [
          "Cluster",
          "ClusterName"
        ]
      }
    },
    "IaasProvider": {
      "Value": {
        "Fn::GetAtt": [
          "Cluster",
          "IaasProvider"
        ]
      }
    },
    "ClusterId": {
      "Value": {
        "Fn::GetAtt": [
          "Cluster",
          "ClusterId"
        ]
      }
    },
    "ClusterType": {
      "Value": {
        "Fn::GetAtt": [
          "Cluster",
          "ClusterType"
        ]
      }
    },
    "Port": {
      "Value": {
        "Fn::GetAtt": [
          "App",
          "Port"
        ]
      }
    },
    "AppId": {
      "Value": {
        "Fn::GetAtt": [
          "App",
          "AppId"
        ]
      }
    },
    "GroupName": {
      "Value": {
        "Fn::GetAtt": [
          "DeployGroup",
          "GroupName"
        ]
      }
    },
    "Id": {
      "Value": {
        "Fn::GetAtt": [
          "DeployGroup",
          "Id"
        ]
      }
    },
    "DeployGroupAppId": {
      "Value": {
        "Fn::GetAtt": [
          "DeployGroup",
          "AppId"
        ]
      }
    },
    "BelongRegion": {
      "Value": {
        "Fn::GetAtt": [
          "LogicalRegion",
          "BelongRegion"
        ]
      }
    },
    "DebugEnable": {
      "Value": {
        "Fn::GetAtt": [
          "LogicalRegion",
          "DebugEnable"
        ]
      }
    },
    "UserId": {
      "Value": {
        "Fn::GetAtt": [
          "LogicalRegion",
          "UserId"
        ]
      }
    },
    "LogicalRegionId": {
      "Value": {
        "Fn::GetAtt": [
          "LogicalRegion",
          "Id"
        ]
      }
    },
    "RegionName": {
      "Value": {
        "Fn::GetAtt": [
          "LogicalRegion",
          "RegionName"
        ]
      }
    }
  }
}