Cloud Assembly Blueprint 표현식 구문은 표현식의 모든 기능을 노출합니다.

표현식을 사용하여 Cloud Assembly Blueprint 코드를 보다 다양하게 만드는 방법에 표시된 예시에서 구문은 일부만 표시됩니다.

리터럴

다음과 같은 리터럴이 지원됩니다.

  • 부울(true 또는 false)
  • 정수
  • 부동 소수점
  • String

    백슬래시는 큰따옴표,작은따옴표 및 백슬래시 자체를 이스케이프합니다.

    "\"로 이스케이프됩니다.

    '\'로 이스케이프됩니다.

    \\\로 이스케이프됩니다.

    다음 예제와 같이 따옴표는 동일한 유형의 따옴표로 묶인 문자열 내에서만 이스케이프해야 합니다.

    "I am a \"double quoted\" string inside \"double quotes\"."

  • null

환경 변수

환경 이름:

  • orgId
  • projectId
  • projectName
  • deploymentId
  • deploymentName
  • blueprintId
  • blueprintVersion
  • blueprintName
  • requestedBy(사용자)
  • requestedAt(시간)

구문:

env.ENV_NAME

예:

${env.blueprintId}

리소스 변수

리소스 변수를 사용하면 다른 리소스의 리소스 속성에 바인딩할 수 있습니다.

구문:

resource.RESOURCE_NAME.PROPERTY_NAME

예:

  • ${resource.db.id}
  • ${resource.db.networks[0].address}
  • ${resource.app.id}(count가 지정되지 않은 클러스터링되지 않은 리소스에 대해 문자열을 반환합니다. 클러스터링된 리소스에 대해서는 어레이를 반환합니다.)
  • ${resource.app[0].id}(클러스터링된 리소스에 대한 첫 번째 항목을 반환합니다.)

리소스 자체 변수

리소스 자체 변수는 할당 단계를 지원하는 리소스에만 허용됩니다. 리소스 자체 변수는 할당 단계가 완료된 후에만 사용 가능하거나 값 집합을 가집니다.

구문:

self.property_name

예:

${self.address}(할당 단계 중 할당된 주소를 반환합니다.)

resource_x, self.property_nameresource.resource_x.property_name이라는 이름의 리소스는 동일하며, 둘 다 자체 참조로 고려됩니다.

클러스터 수 인덱스

구문:

count.index

예:

${count.index == 0 ? "master" : "slave"}(클러스터링된 리소스에 대한 노드 유형을 반환합니다.)

제한 사항:

리소스 할당에 대한 count.index 사용은 지원되지 않습니다. 예를 들어 입력 시간에 생성된 디스크의 어레이 내에서 위치를 참조할 때 다음 용량 표현식이 실패합니다.

inputs:
  disks:
    type: array
    minItems: 0
    maxItems: 12
    items:
      type: object
      properties:
        size:
          type: integer
          title: Size (GB)
          minSize: 1
          maxSize: 2048
resources:
  Cloud_vSphere_Disk_1:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: '${input.disks[count.index].size}'
      count: '${length(input.disks)}'

조건

구문:

  • 같음 연산자는 ==!=입니다.
  • 관계형 연산자는 < > <=>=입니다.
  • 논리 연산자는 && ||!입니다.
  • 조건부 패턴 사용:

    condition-expression ? true-expression : false-expression

예:

${input.count < 5 && input.size == 'small'}

${input.count < 2 ? "small" : "large"}

산술 연산자

구문:

연산자는 + / *%입니다.

예:

${(input.count + 5) * 2}

문자열 연결

구문:

${'ABC' + 'DEF'}ABCDEF로 평가됩니다.

[ ] 및 . 연산자

[ ] 및 . 연산자에 대한 처리를 통일하기 위해 표현식은 ECMAScript를 따릅니다.

따라서 expr.identifierexpr["identifier"]에 해당합니다. 식별자는 값이 식별자인 리터럴을 구성하는 데 사용되며 [ ] 연산자가 해당 값과 함께 사용됩니다.

예:

${resource.app.networks[0].address}

또한 속성에 공백이 포함되어 있는 경우 점 표기법을 사용하는 대신 대괄호와 큰따옴표로 구분합니다.

틀림:

input.operating system

맞음:

input["operating system"]

맵 구성

구문:

${{'key1':'value1', 'key2':input.key2}}

어레이 구성

구문:

${['key1','key2']}

예:

${[1,2,3]}

함수

구문:

${함수(인수...)}

예:

${to_lower(resource.app.name)}

표 1. 함수
함수 설명
abs(숫자) 절대 숫자 값
floor(숫자) 인수보다 작거나 같고 수학 정수와 동일한 최대(양의 무한대에 가장 가까움) 값을 반환
ceil(숫자) 인수 보다 크거나 같고 수학 정수와 동일한 최소(음의 무한대에 가장 가까움) 값을 반환
to_lower(문자열) 문자열을 소문자로 변환
to_upper(문자열) 문자열을 대문자로 변환
contains(어레이, 값) 어레이에 값이 포함되어 있는지 확인
contains(문자열,값) 문자열에 값이 포함되어 있는지 확인
join(어레이, 구분 기호) 구분 기호로 문자열 어레이를 연결하고 문자열을 반환
split(문자열, 분 기호) 구분 기호로 문자열을 분할하고 문자열 어레이를 반환
slice(어레이, 시작, 끝) 시작 인덱스에서 끝 인덱스까지 어레이 조각을 반환
reverse(어레이) 어레이 항목의 방향을 반전
starts_with(주체, 접두사) 주체 문자열이 접두사 문자열로 시작하는지 확인
ends_with(주체, 접미사) 주체 문자열이 접미사 문자열로 끝나는지 확인
replace(문자열, 대상, 교체) 대상 문자열을 포함하는 문자열을 대상 문자열로 교체
substring(문자열, 시작, 끝) 시작 인덱스에서 끝 인덱스까지 문자열의 하위 문자열을 반환
format(형식, 값 ...) Java Class Formatter 형식 및 값을 사용하여 형식이 지정된 문자열을 반환
keys(맵) 맵의 키를 반환
values(맵) 맵의 값을 반환
merge(맵, 맵) 병합된 맵을 반환
length(문자열) 문자열 길이를 반환
length(어레이) 어레이 길이를 반환
max(어레이) 숫자 어레이에서 최대값을 반환
min(어레이) 숫자 어레이에서 최소값을 반환
sum(어레이) 숫자 어레이에서 모든 값의 합계를 반환
avg(어레이) 숫자 어레이에서 모든 값의 평균을 반환
digest(값, 유형) 지원되는 유형(md5, sha1, sha256, sha384, sha512)을 사용하여 값의 다이제스트를 반환
to_string(값) 값의 문자열 표현을 반환
to_number(문자열) 문자열을 숫자로 구문 분석
not_null(어레이) null이 아닌 첫 번째 항목을 반환
base64_encode(문자열) base64로 인코딩된 값을 반환
base64_decode(문자열) 디코딩된 base64 값을 반환
now() 현재 시간을 ISO-8601형식으로 반환
uuid() 임의로 생성된 UUID를 반환
from_json(문자열) json 문자열을 구문 분석
to_json(값) 값을 json 문자열로 직렬화
json_path(값, 경로) XPath for JSON을 사용하여 값에 대해 경로를 평가
matches(문자열, 정규식) 문자열이 정규 표현식과 일치하는지 확인
url_encode(문자열) URL 인코딩 규격을 사용하여 문자열을 인코딩
trim(문자열) 앞뒤 공백 제거