์ด ํ์ด์ง์์๋ Workflows๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
์์ธํ ๋ด์ฉ์ Workflows ๋ชจ๋ํฐ๋ง ๋ฐ ๋๋ฒ๊น ์ ์ฐธ์กฐํ์ธ์.
๋ฐฐํฌ ์ค๋ฅ
์ํฌํ๋ก๊ฐ ๋ฐฐํฌ๋ ๋ Workflows๋ ์์ค ์ฝ๋์ ์ค๋ฅ๊ฐ ์๊ณ ์ธ์ด ๊ตฌ๋ฌธ๊ณผ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค. ๋ฌธ์ ๊ฐ ์์ผ๋ฉด Workflows๊ฐ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐฐํฌ ์ค๋ฅ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ์๋์ง ์์ ๋ณ์, ๋จ๊ณ ๋๋ ํ์ ์ํฌํ๋ก ์ฐธ์กฐ
- ์๋ชป๋ ๊ตฌ๋ฌธ
- ์๋ชป๋ ๋ค์ฌ์ฐ๊ธฐ
- ๋๋ฝ๋์๊ฑฐ๋ ๋ถํ์ํ
{
,}
,"
,-
,:
์๋ฅผ ๋ค์ด ๋ค์ ์์ค ์ฝ๋๋ ๋ฐํ ๊ตฌ๋ฌธ์ด ์ ์๋์ง ์์ ๋ณ์ varC
๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค.
- step1: assign: - varA: "Hello" - varB: "World" - step2: return: ${varC + varB}
์ด ์๋ชป๋ ์์ค ์ฝ๋๋ ๋ค์ Google Cloud Console ๋ฐ gcloud CLI ์์์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฝ์
๋ฐฐํฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด Workflows๊ฐ ์ํฌํ๋ก ์์ ํ์ด์ง์ ๋ฐฐ๋์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.
์ด ์ค๋ฅ ๋ฉ์์ง๋ ์์ค ์ฝ๋์ ๋ฌธ์ ๋ฅผ ํ๋๊ทธ๋ก ํ์ํ๊ณ , ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ค๋ฅ ์์ ์ ์ง์ ํฉ๋๋ค.
Could not deploy workflow: failed to build: error in step step2: error
evaluating return value: symbol 'varC' is neither a variable nor a
sub-workflow name (Code: 3)
gcloud
gcloud workflows deploy
๋ช
๋ น์ด๋ฅผ ์คํํ ๋ ๋ฐฐํฌ๊ฐ ์คํจํ๋ฉด Workflows๊ฐ ๋ช
๋ น์ค์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค. ์ด ์ค๋ฅ ๋ฉ์์ง๋ ์์ค ์ฝ๋์ ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ฉฐ, ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ค๋ฅ์ ์ถ์ฒ๋ฅผ ์ง์ ํฉ๋๋ค.
ERROR: (gcloud.workflows.deploy) [INVALID_ARGUMENT] failed to build:
error in step step2: error evaluating return value: symbol 'varC' is neither
a variable nor a sub-workflow name
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ํฌํ๋ก์ ์์ค ์ฝ๋๋ฅผ ์์ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ varC
๋์ varA
๋ฅผ ์ฐธ์กฐํ์ธ์.
HTTP 403
์๋น์ค ๊ณ์ ๊ถํ ์ค๋ฅ
HTTP ์๋ฒ๊ฐ 403
์ค๋ฅ ์ฝ๋๋ก ์๋ตํ๋ฉด ์ํฌํ๋ก ์คํ์ด ์คํจํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Permission 'iam.serviceaccounts.actAs' denied on service account PROJECT_NUMBER-compute@developer.gserviceaccount.com (or it may not exist).
๋๋
SERVICE_ACCOUNT does not have storage.objects.create access to the Google Cloud Storage object. Permission 'storage.objects.create' denied on resource (or it may not exist).
๋ชจ๋ ์ํฌํ๋ก๋ ์ํฌํ๋ก๊ฐ ์์ฑ๋ ๋ IAM ์๋น์ค ๊ณ์ ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ํฌํ๋ก ๊ด๋ฆฌ์ ํ์ํ ์ต์ ๊ถํ์ด ํฌํจ๋ ํ๋ ์ด์์ IAM ์ญํ ์ ์๋น์ค ๊ณ์ ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ํฌํ๋ก์์ Cloud Logging์ผ๋ก ๋ก๊ทธ๋ฅผ ์ ์กํ๋๋ก ํ๋ ค๋ฉด ์ํฌํ๋ก๋ฅผ ์คํํ๋ ์๋น์ค ๊ณ์ ์ logging.logEntries.create
๊ถํ์ด ํฌํจ๋ ์ญํ ์ด ๋ถ์ฌ๋์๋์ง ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ํฌํ๋ก์ Google Cloud ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ถํ ๋ถ์ฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
HTTP 404 No such object
๋๋ Not found
์ค๋ฅ
Cloud Storage ์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ ๋ HTTP ์๋ฒ๊ฐ 404
์ค๋ฅ ์ฝ๋๋ก ์๋ตํ๋ฉด ์ํฌํ๋ก ์คํ์ด ์คํจํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
HTTP server responded with error code 404 in step "read_input_file", routine "main", line: 13 { "body": "Not Found", "code": 404, ... }
๊ฒฝ๋ก์ ์์ ์ฑ์ ์ํด ๊ฐ์ฒด ์ด๋ฆ์ URL๋ก ์ธ์ฝ๋ฉํด์ผ ํฉ๋๋ค. url_encode
๋ฐ url_encode_plus
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ URL์ ๊ฐ์ฒด ์ด๋ฆ ๋๋ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ํด๋น ๋ฌธ์๊ฐ ํ์๋ ๋ ์ด๋ฅผ ์ธ์ฝ๋ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- init: assign: - source_bucket: "my-bucket" - file_name: "my-folder/my-file.json" - list_objects: call: googleapis.storage.v1.objects.get args: bucket: ${source_bucket} object: ${text.url_encode(file_name)} alt: media result: r - returnStep: return: ${r}
๊ฐ์ฒด ์ด๋ฆ์ URL ์ธ์ฝ๋ฉํ์ง ์๊ณ ์คํ ๋ฆฌ์ง ๋ฒํท์ ํด๋๊ฐ ์์ผ๋ฉด ์์ฒญ์ด ์คํจํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ URL ๊ฒฝ๋ก ๋ถ๋ถ ์ธ์ฝ๋ฉ ๋ฐ Cloud Storage ์ด๋ฆ ์ง์ ๊ณ ๋ ค์ฌํญ์ ์ฐธ์กฐํ์ธ์.
HTTP 429 Too many requests
์ค๋ฅ
ํ์ฑ ์ํฌํ๋ก ์คํ์ด ๋์์ ๋ฐ์ํ ์ ์๋ ์ต๋ ๊ฐ์๊ฐ ์กด์ฌํฉ๋๋ค. ์ด ํ ๋น๋์ด ์์ง๋๊ณ ์คํ ๋ฐฑ๋ก๊ทธ๊ฐ ์ฌ์ฉ ์ค์ง๋์๊ฑฐ๋ ๋ฐฑ๋ก๊ทธ๋ ์คํ์ ํ ๋น๋์ ๋๋ฌํ๋ฉด ์ ์คํ์ HTTP 429 Too many requests
์ํ ์ฝ๋์ ํจ๊ป ์คํจํฉ๋๋ค.
์คํ ๋ฐฑ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ ์คํ ํ ๋น๋์ ๋๋ฌํ ํ ์ํฌํ๋ก ์คํ์ ๋๊ธฐ์ด์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ ๋ฐฑ๋ก๊น ์ ๋ค์ ์์ธ๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ์์ฒญ(Cloud Tasks์์ ํธ๋ฆฌ๊ฑฐ๋ ์์ฒญ ํฌํจ)์ ๋ํด ์ฌ์ฉ ์ค์ ๋ฉ๋๋ค.
- ์ํฌํ๋ก์์
executions.run
๋๋executions.create
์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ ๋ง๋ค ๋ ์คํ ๋ฐฑ๋ก๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ์ค์ง๋ฉ๋๋ค. ์คํ์disableConcurrencyQuotaOverflowBuffering
ํ๋๋ฅผfalse
๋ก ๋ช ์์ ์ผ๋ก ์ค์ ํ์ฌ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. - Pub/Sub์์ ํธ๋ฆฌ๊ฑฐ๋ ์คํ์ ๊ฒฝ์ฐ ์คํ ๋ฐฑ๋ก๊ทธ๊ฐ ์ฌ์ฉ ์ค์ง๋๋ฉฐ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์คํ ๋ฐฑ๋ก๊ทธ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์๊ฐ ์ ์ํ ์๋๋ก Cloud Tasks ํ์์ ํ์ ์ํฌํ๋ก๋ฅผ ์คํํ๋๋ก ์ฌ์ฉ ์ค์ ํ๊ณ ์คํ ์๋๋ฅผ ๊ฐ์ ํ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ช ์์ ์ผ๋ก ์คํ ๋ฐฑ๋ก๊ทธ๋ฅผ ์ฌ์ฉ ์ค์งํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ๊ฐ ์๋น์ค ๊ณ์ ๊ถํ ์ค๋ฅ
ํ๋ก์ ํธ ๊ฐ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ์ฌ ์ํฌํ๋ก๋ฅผ ๋ฐฐํฌํ๋ ค๊ณ ํ ๋ PERMISSION_DENIED
์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก์ ํธ์ iam.disableCrossProjectServiceAccountUsage
๋ถ์ธ ์ ์ฝ์กฐ๊ฑด์ด ์ ์ฉ๋์ง ์์๋์ง ๊ทธ๋ฆฌ๊ณ ์๋น์ค ๊ณ์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋์ง ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ ๊ฐ ์๋น์ค ๊ณ์ ์ผ๋ก ์ํฌํ๋ก ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฆฌ์์ค ์ด๋ฆ์ RFC 1123์ ์ค์ํด์ผ ํฉ๋๋ค.
HTTP ์๋ฒ๊ฐ 400
์ค๋ฅ ์ฝ๋๋ก ์๋ตํ๋ฉด ์ํฌํ๋ก ์คํ์ด ์คํจํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"description": "must conform to RFC 1123: only lowercase, digits, hyphens, and periods are allowed, must begin and end with letter or digit, and less than 64 characters."
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ฆฌ์์ค ์ด๋ฆ์ด RFC 1123์ ์ ์๋ ๋๋ก DNS ๋ผ๋ฒจ ํ์ค์ ๋ฐ๋ฅด๊ณ ๋ณ์๋ฅผ ํ ๋นํ ๋ ๋ฌธ์์ด ๋ฐ ํํ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ๋๋์ง ํ์ธํฉ๋๋ค.
์๋ฅผ ๋ค์ด - string: hello-${world}
์ ๊ฐ์ด ๋ณ์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
๋์ ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
YAML
- assign_vars: assign: - string: "hello" - string: ${string+" "+"world"}
JSON
[ { "assign_vars": { "assign": [ { "string": "hello" }, { "string": "${string+" "+"world"}" }, ] } } ]
์ฝ๋ก ์ด ํฌํจ๋ ํํ์
YAML์์ ์ฝ๋ก ์ด ํฌํจ๋ ํํ์์ ๊ฒฝ์ฐ ์ฝ๋ก ์ด ๋งต ์ ์๋ก ํด์๋๋ฉด ์๊ธฐ์น ์์ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ํฌํ๋ก๋ฅผ ๋ฐฐํฌ ๋ฐ ์คํํ ์ ์์ง๋ง ์ถ๋ ฅ์ด ์์ํ ๋๋ก ํ์๋์ง ์์ต๋๋ค.
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ์ํฌํ๋ก๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ Google Cloud ์ฝ์์์ ์ํฌํ๋ก๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ ๋๋งํ ์ ์์ผ๋ฉฐ ๋ค์๊ณผ ๋น์ทํ ๊ฒฝ๊ณ ๊ฐ ํ์๋ ์ ์์ต๋๋ค.
YAML ํํ์์ ์์๋ฐ์ดํ๋ก ๋ฌถ์ผ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ถ์ฅ: '${"a: " +string(a)}'
๊ถ์ฅํ์ง ์์: ${"a: " +string(a)}
์์ซ์๊ฐ ์๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ํค ๋งคํ
์์ซ์๊ฐ ์๋ ๋ฌธ์(์: "special!key": value
์ ๋๋ํ)๋ก ๋งต ํค์ ์ก์ธ์คํ ๋๋ ํค ์ด๋ฆ์ ๋ฐ์ดํ๋ก ๋ฌถ์ด์ผ ํฉ๋๋ค. ํค ์ด๋ฆ์ ๋ฐ์ดํ๋ก ๋ฌถ์ง ์์ผ๋ฉด ์ํฌํ๋ก๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์์ค ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ ค๊ณ ํ๋ฉด token recognition error
๊ฐ ๋ฐ์ํฉ๋๋ค.
- init: assign: - var: key: "special!key": bar - returnOutput: return: '${"foo" + var.key[special!key]}'
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅ์ ๋ฐํํฉ๋๋ค.
'${"foo" + var.key["special!key"]}'
๋ชฉ๋ก์์ ์ฌ๋ฌ ํํ์
๋ค์ ๋ฐ๋ณต ๋ฒ์ ์์์ ๊ฐ์ด ๋ชฉ๋ก ๋ด์์ ์ฌ๋ฌ ํํ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํจํ YAML์ด ์๋๋๋ค.
[${rangeStart}, ${rangeEnd}])
๋ค์ ์ค ํ๋๋ฅผ ์ํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ชฉ๋ก์ ํํ์ ๋ด์ ๋ฐฐ์นํฉ๋๋ค.
${[rangeStart, rangeEnd]}
๊ฐ ํํ์์ ์์๋ฐ์ดํ๋ก ๋ฌถ์ต๋๋ค.
['${rangeStart}', '${rangeEnd}']
๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ณผ๋ ์์๋๋ก ๋ ๊ฐ ๋ชฉ๋ก์ด ๋ฉ๋๋ค.
๊ณ ๊ฐ ๊ด๋ฆฌ ์ํธํ ํค(CMEK)
Workflows์์ Cloud KMS๋ฅผ ์ฌ์ฉํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ค์ ํ๋ ๋ค์ํ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๋ฌธ์ | ์ค๋ช |
---|---|
cloudkms.cryptoKeyVersions.useToEncrypt ๊ถํ์ด ๊ฑฐ๋ถ๋จ |
์ ๊ณต๋ Cloud KMS ํค๊ฐ ์๊ฑฐ๋ ๊ถํ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ง ์์์ต๋๋ค.
์๋ฃจ์ :
|
ํค ๋ฒ์ ์ด ์ฌ์ฉ ์ค์ ๋์ง ์์ | ์ ๊ณต๋ Cloud KMS ํค๊ฐ ์ฌ์ฉ ์ค์ง๋์์ต๋๋ค. ์๋ฃจ์ : Cloud KMS ํค ๋ฒ์ ์ ๋ค์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. |
ํค๋ง ๋ฆฌ์ ์ด ๋ณดํธํ ๋ฆฌ์์ค์ ์ผ์นํ์ง ์์ | ์ ๊ณต๋ KMS ํค๋ง ๋ฆฌ์ ์ ์ํฌํ๋ก์ ๋ฆฌ์ ๊ณผ ๋ค๋ฆ
๋๋ค.
์๋ฃจ์ ๋์ผํ ๋ฆฌ์ ์์ Cloud KMS ํค๋ง๊ณผ ๋ณดํธ๋ ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค. (๋ค๋ฅธ ํ๋ก์ ํธ์ ์์ ์ ์์ต๋๋ค.) ์์ธํ ๋ด์ฉ์ Cloud KMS ์์น ๋ฐ Workflows ์์น๋ฅผ ์ฐธ์กฐํ์ธ์. |
Cloud KMS ํ ๋น๋ ํ๋๋ฅผ ์ด๊ณผํจ | Cloud KMS ์์ฒญ์ ํ ๋น๋ ํ๋์ ๋๋ฌํ์ต๋๋ค.
์๋ฃจ์ : Cloud KMS ํธ์ถ ์๋ฅผ ์ ํํ๊ฑฐ๋ ํ ๋น๋ ํ๋๋ฅผ ๋๋ฆฝ๋๋ค. ์์ธํ ๋ด์ฉ์ Cloud KMS ํ ๋น๋์ ์ฐธ์กฐํ์ธ์. |
Cloud Run ์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ ๋ ์์ฒญ๋ ํญ๋ชฉ์ ์ฐพ์ ์ ์์
googleapis.run.v1.namespaces.jobs.create
์ปค๋ฅํฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ ๋ HTTP ์๋ฒ๊ฐ 404
์ค๋ฅ ์ฝ๋๋ก ์๋ตํ๋ฉด ์ํฌํ๋ก ์คํ์ด ์คํจํฉ๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ค๋ฉด HTTP ์๋ํฌ์ธํธ์ ์์น๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด us-central1
๋๋ asia-southeast1
์
๋๋ค. ์์น๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ์ ์ญ ์๋ํฌ์ธํธ https://run.googleapis.com
์ด ์ฌ์ฉ๋์ง๋ง ์ด ์์น๋ list ๋ฉ์๋๋ง ์ง์ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ปค๋ฅํฐ๋ฅผ ํธ์ถํ ๋ location
์ธ์๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
Cloud Run Admin API ์์น ์ต์
์ ์๋น์ค ์๋ํฌ์ธํธ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฆฌ์์ค ํ๋
๋ฆฌ์์ค ์ ํ ๋๋ ResourceLimitError
, MemoryLimitExceededError
, ResultSizeLimitExceededError
์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ณ์๋ฅผ ์ญ์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น์ธ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ํ์ ๋จ๊ณ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค. ๋๋ ๊ด์ฌ ์๋ ๊ฒฐ๊ณผ๊ฐ ํฌํจ๋ ํธ์ถ์ด ์์ ์ ์์ผ๋ฉฐ ํด๋น ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ์๋ตํ ์ ์์ต๋๋ค.
YAML ๋ค์ฌ์ฐ๊ธฐ
YAML ๋ค์ฌ์ฐ๊ธฐ๋ ์๋ฏธ๊ฐ ์์ผ๋ฉฐ ๋ค์ฌ์ฐ๊ธฐ ์์ค๋น ์ต์ 2๊ฐ ์ด์์ ๊ณต๋ฐฑ์ด์ด์ผ ํฉ๋๋ค. ๋ค์ฌ์ฐ๊ธฐ๊ฐ ๋ถ์กฑํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ ์ ์์ค์ ์ด์ ์ค์ ํ ์คํธ ์์๋ถํฐ ์ต์ 2๊ฐ ์ด์์ ๊ณต๋ฐฑ์ด์ด์ผ ํฉ๋๋ค.์๋ฅผ ๋ค์ด ๋ค์์ stepName
๋ฐ call
ํญ๋ชฉ์ด ์๋ ๋งต์ด ํฌํจ๋ ๋ชฉ๋ก ํญ๋ชฉ์ ์๋ชป ์ง์ ํฉ๋๋ค.
- stepName: call: sys.log
๋์ ํ์ ์ค์ ๊ณต๋ฐฑ 2๊ฐ๋ก ๋ค์ฌ์จ stepName
๋ด์์ call
์ ์ค์ฒฉํด์ผ ํฉ๋๋ค.
- stepName: call: sys.log
ํญ ๋ฌธ์๊ฐ ์๋ ๊ณต๋ฐฑ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ค์ฌ์จ์ผ ํฉ๋๋ค.