로컬 소스에서 함수 실행
이 튜토리얼을 통해 로컬 시스템의 코드에서 Code Engine CLI로 함수를 실행해 보세요
함수는 상태가 없는 코드 조각으로, HTTP 요청에 의해 호출될 때 작업을 수행합니다. IBM Code Engine 기능을 사용하면 확장 가능하고 서버가 필요 없는 방식으로 비즈니스 로직을 실행할 수 있습니다. IBM Code Engine 기능은 최적화된 런타임 환경을 제공하여 짧은 대기 시간과 신속한 스케일 아웃 시나리오를 지원합니다. 기능 코드는 특정 관리형 런타임 (Node.js)또는 관리형 런타임(Python) 버전을 포함하는 관리형 런타임에 기록될 수 있습니다.
코드 번들은 기능 코드를 나타내는 파일의 콜렉션입니다. 이 코드 번들은 런타임 컨테이너에 삽입됩니다. 코드 번들은 Code Engine 에 의해 작성되며 컨테이너 레지스트리에 저장되거나 함수와 함께 인라인으로 저장됩니다. 코드 번들은 OCI (Open Container Initiative) 표준 컨테이너 이미지가 아닙니다.
시작하기 전에
모든 Code Engine 사용자에게는 종량과금제 계정이 있어야 합니다. 튜토리얼은 비용이 부과될 수 있습니다. 비용 추정기를 사용하여 예상 사용량을 기반으로 한 비용 추정을 생성하십시오. 자세한 정보는 Code Engine 가격을 참조하십시오.
환경 설정
-
IBM Cloud에 로그인하십시오.
ibmcloud login -r us-south -
다음 명령을 실행하여 리소스 그룹을 대상으로 지정하십시오. 리소스 그룹 목록을 보려면
ibmcloud resource groups.ibmcloud target -g <resource_group>출력 예
Targeted resource group default -
Code Engine에
sample이라는 프로젝트를 작성하십시오.ibmcloud ce project create --name sample출력 예
Creating project 'sample'... ID for project 'sample' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'. Waiting for project 'sample' to be active... Now selecting project 'sample'. OK프로젝트가 컨텍스트에 맞게 선택되었으므로 모든 후속 애플리케이션 관련 명령은 이 새
sample프로젝트의 범위 내에 있습니다. -
명령 옵션을 보고 기능 명령에 익숙해지십시오.
ibmcloud ce fn --help
소스 코드 작성
다음 샘플 코드를 사용하여 funhello.js 라는 Node.js 소스 파일을 작성하십시오.
function main(params) {
var msg = 'You did not tell me who you are.';
if (params.name) {
msg = `Hello, ${params.name}!`
} else {
msg = `Hello, Functions on CodeEngine!`
}
return {
headers: { 'Content-Type': 'text/html; charset=utf-8' },
body: `<html><body><h3>${msg}</h3></body></html>`
}
}
module.exports.main = main;
함수 작성
funhello.js 파일에서 함수를 작성하십시오.
ibmcloud ce fn create --name funhello --runtime nodejs --build-source funhello.js
명령 출력
Preparing function 'funhello' for build push...
Creating function 'funhello'...
Packaging files to upload from source path 'hello.js'...
Submitting build run 'funhello-run-230623-090738611'...
Creating image 'private.stg.icr.io/ce--8a6a0-13c66hbi3rhz/function-funhello:230623-1407-s8kzr'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n funhello-run-230623-090738611' to check the build run status.
Waiting for function 'funhello' to become ready...
Function 'funhello' is ready.
OK
Run 'ibmcloud ce function get -n funhello' to see more details.
https://funhello.13c66hbi3rhz.us-south.codeengine.appdomain.cloud
함수 호출 후 URL 를 사용할 수 있게 되면, 다음 명령을 사용하여 함수에 대한 정보를 찾으십시오.
ibmcloud ce fn get -n funhello
위의 function create 명령을 더 자세히 살펴보겠습니다. 명령의 출력은 function create 명령의 출력은 함수가 생성되고 배포되기 전에 빌드 실행의 진행 상황에 대한 정보를 제공합니다.
- Code Engine 는 소스 코드에서 함수를 작성하기 위한 요청을 수신합니다.
- Code Engine 선택한 프로젝트와 연결된 IAM 서비스 ID 및 API 키를 확인합니다. 이 서비스 ID는 IBM Cloud Container Registry 에 읽고 쓸 수 있는 권한이 있어야 합니다. 서비스 ID가 없는 경우 Code Engine에서 작성합니다. 이 서비스 ID는 동일한 프로젝트에서 실행되는 후속 Code Engine 빌드 요청에 사용됩니다.
- 이 예에서는 로컬 소스(
--build-source)에서 코드를 빌드합니다. 소스 코드(hello.js)는 코드 번들 파일에 패키징되어 계정의 IBM Cloud Container Registry 인스턴스 내의 관리 네임스페이스에 업로드됩니다. 로컬 빌드의 경우 IBM Cloud Container Registry만 대상으로 지정할 수 있습니다. 할당량 제한 및 액세스 권한에 대한 정보를 포함하여 IBM Container Registry 에 대한 자세한 내용은 IBM Cloud Container Registry 시작하기를 참조하세요. - Code Engine 는 소스 코드를 코드 번들로 빌드합니다. 소스 코드 번들은 소스 아카이브 파일과 동일한 네임스페이스에 생성됩니다.
- 빌드가 완료되면 함수가 배포됩니다. 제공된 URL 에서 기능에 액세스할 수 있습니다.
함수 호출
URL 함수를 브라우저 창에 붙여넣기하여 호출합니다. 명령행에서 curl 명령을 사용할 수도 있습니다.
Hello, Functions on CodeEngine!
Code Engine 함수를 작성하고 호출했습니다!
함수에 대한 매개변수 제공
함수 호출 URL 매개 변수를 사용하여 URL 의 끝에 ?name=Sunshine 를 추가하고 브라우저 창에 붙여 넣습니다.
https://funhello.13c66hbi3rhz.us-south.codeengine.appdomain.cloud?name=Sunshine
Hello, Sunshine!
정리
다음 명령을 사용하여 함수를 삭제할 수 있습니다.
ibmcloud ce fn delete -n funhello
함수를 삭제하면 관련 빌드 파일도 삭제됩니다.
마지막으로 IBM Cloud Container Registry 에서 빌드가 생성한 코드 번들을 삭제합니다.
- 로 이동 Container Registry> 이미지 에서 IBM Cloud 콘솔.
- 에서 지역을 선택하세요. 위치 로그온할 때 선택한 드롭다운 메뉴 IBM Cloud.
- 함수 이름(예:
funhello). - 이미지를 선택합니다(예:
au.icr.io/ce--27b98-1jp42v8n9n3o/function-funhello@sha256:b53683f47e0e548b4fa1d3fc93404399fdc4008b54ccecc0852794ea88d01538)를 선택하고 삭제 줄임표(...) 메뉴에서.
다음 단계
-
URL 함수가 생성된 후 콘솔에서 함수 테스트를 클릭하거나
function get명령. -
사용자 정의 도메인 맵핑 을 작성하고 이를 함수에 지정할 수 있습니다.
-
기능을 작성하고 배치한 후에는 콘솔에서 또는
ibmcloud ce function update명령을 사용하여 필요에 맞게 기능을 업데이트할 수 있습니다. 함수에 사용할 소스를 업데이트하려면--build-source옵션을 제공해야 합니다function update명령에 제공해야 합니다.
함수가 생성된 후에는 함수를 만들거나 이전에 함수를 업데이트한 방법과 관계없이 다음 방법 중 하나를 사용하여 함수와 참조 코드를 업데이트할 수 있습니다:
-
기존 코드 번들이 있는 경우 앱을 배치할 때 컨테이너 레지스트리의 위치를 가리키는 이미지에 대한 참조만 제공해야 합니다. 자세한 정보는 기존 코드 번들에서 함수 워크로드 작성 을 참조하십시오.
function create명령을 사용하여 함수를 작성하고 로컬 또는 저장소 소스에서 코드 번들을 빌드하기 위해--build-source옵션을 지정한 경우 다른 코드 번들을 가리키도록 함수를 변경하려면 먼저 함수에서 빌드의 연관을 제거해야 합니다. 예를 들어,ibmcloud ce function update -n FUN_NAME --build-clear를 실행하십시오. 함수에서 빌드의 연관을 제거한 후 다른 이미지를 참조하도록 함수를 업데이트할 수 있습니다. -
Git 리포지토리에 있는 소스 코드로 시작하는 경우 Code Engine 에서 소스에서 코드 번들을 빌드하고 한 번의 작업으로 함수를 만들도록 선택할 수 있습니다. 이 시나리오에서 Code Engine 는 코드 번들을 IBM Cloud® Container Registry 에 업로드합니다. 자세한 정보는 저장소 소스 코드에서 함수 작성 을 참조하십시오.
-
로컬 워크스테이션에 상주하는 소스 코드로 시작하는 경우, Code Engine 에 대해 선택하여 소스에서 코드 번들을 빌드하고 단일 CLI 명령으로 함수를 작성할 수 있습니다. 이 시나리오에서 Code Engine 는 소스 코드 및 코드 번들을 IBM Cloud® Container Registry에 업로드합니다.
예를 들어 함수 소스의 개발을 발전시키는 동안 Code Engine 에서 로컬 소스를 빌드하도록 선택할 수 있습니다. 그런 다음 코드 번들이 성숙되면 원하는 특정 코드 번들을 참조하도록 함수를 업데이트할 수 있습니다. 이 프로세스는 필요에 따라 반복할 수 있습니다.
더 많은 코드 예를 찾고 계십니까? Samples for IBM Cloud Code Engine GitHub 저장소를 확인하십시오.