Ruby 런타임

Cloud Run 함수는 부가기능 패키지가 포함된 운영체제 버전, 언어 지원, 함수를 지원하고 호출하는 Ruby Functions Framework 라이브러리로 구성된 환경에서 실행됩니다. 이 환경은 언어 버전으로 식별되며 런타임 ID라고 합니다.

함수 준비

Google Cloud 콘솔에서 직접 함수를 준비하거나 로컬 머신에 작성하여 업로드할 수 있습니다. Ruby 개발용 로컬 머신을 준비하려면 Ruby 개발 환경 설정을 참고하세요.

지원되는 Ruby 런타임 및 기본 이미지

런타임 런타임 ID 스택 런타임 기본 이미지
Ruby 3.3 ruby33
  • google-22(기본값)
  • google-22-full
  • google-22/ruby33
  • google-22-full/ruby33
  • Ruby 3.2 ruby32
  • google-22(기본값)
  • google-22-full
  • google-22/ruby32
  • google-22-full/ruby32
  • Ruby 3.0 ruby30 google-18-full google-18-full/ruby30
    Ruby 2.7 ruby27 google-18-full google-18-full/ruby27
    Ruby 2.6 ruby26 google-18-full google-18-full/ruby26

    런타임 선택

    배포 중에 함수에 지원되는 Ruby 런타임 중 하나를 선택할 수 있습니다.

    Google Cloud 콘솔 또는 gcloud CLI를 사용하여 런타임 버전을 선택할 수 있습니다. 선택한 도구 사용에 관한 안내를 보려면 해당 탭을 클릭하세요.

    gcloud

    함수를 배포할 때 --base-image 플래그를 사용하여 함수의 Ruby 기본 이미지를 지정합니다. 예를 들면 다음과 같습니다.

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image ruby33
    

    다음과 같이 바꿉니다.

    • FUNCTION을 배포하려는 함수의 이름으로 바꿉니다. 이 매개변수를 완전히 생략할 수 있지만 생략하면 이름을 입력하라는 메시지가 표시됩니다.

    • FUNCTION_ENTRYPOINT를 소스 코드에 있는 함수의 진입점으로 바꿉니다. 이는 함수가 실행될 때 Cloud Run이 실행하는 코드입니다. 이 플래그의 값은 소스 코드에 있는 함수 이름 또는 정규화된 클래스 이름이어야 합니다.

    gcloud CLI를 사용하여 함수를 배포하는 방법에 관한 자세한 내용은 Cloud Run에서 함수 배포를 참고하세요.

    콘솔

    Google Cloud 콘솔에서 Cloud Run 함수를 만들거나 업데이트할 때 런타임 버전을 선택할 수 있습니다. 함수 배포에 관한 자세한 안내는 Cloud Run에서 함수 배포를 참고하세요.

    함수를 만들 때 Google Cloud 콘솔에서 런타임을 선택하려면 다음 단계를 따르세요.

    1. Google Cloud 콘솔에서 Cloud Run 페이지로 이동합니다.

      Cloud Run으로 이동

    2. 함수 작성을 클릭합니다.

    3. 런타임 목록에서 Ruby 런타임 버전을 선택합니다.

    4. 만들기를 클릭하고 Cloud Run이 자리표시자 버전을 사용해서 서비스를 만들 때까지 기다립니다.

    5. 콘솔이 함수의 소스 코드를 볼 수 있는 소스로 리디렉션됩니다. 저장 및 재배포를 클릭합니다.

    함수가 배포된 후 런타임 버전을 업데이트하는 방법에 관한 자세한 내용은 새 소스 코드 다시 배포를 참고하세요.

    소스 코드 구조

    Cloud Run Functions에서 함수 정의를 찾으려면 소스 코드가 특정 구조를 따라야 합니다. 자세한 내용은 Cloud Run 함수 작성을 참고하세요.

    종속 항목 지정

    Ruby로 작성된 Cloud Run 함수는 bundler를 사용하여 종속 항목에 액세스합니다.

    함수 프레임워크는 모든 함수에 필요한 종속 항목입니다. Cloud Run 함수는 함수 생성 시 이를 자동으로 설치하지만 명확히 하자면 명시적 종속 항목으로 포함하는 것이 좋습니다.

    함수에서 비공개 종속 항목을 사용하는 경우 functions-framework를 비공개 레지스트리에 미러링하는 것이 좋습니다. 공개 인터넷에서 패키지를 설치하지 않으려면 미러링된 functions-framework를 함수에 대한 종속 항목으로 포함합니다.

    각 함수는 함수에 필요한 추가 gem과 함께 functions_framework gem을 지정하는 Gemfile을 제공해야 합니다. Gemfile은 함수 코드가 포함된 app.rb 파일과 동일한 디렉터리에 있어야 합니다. 또한 함수는 모든 임시 종속 항목과 정확한 버전을 지정하는 lockfile을 제공해야 합니다. 이 Gemfile.lock 파일도 Gemfile과 함께 동일한 디렉터리에 있습니다.

    함수를 배포하면 Cloud Run이 bundler를 사용하여 GemfileGemfile.lock에 선언된 종속 항목을 다운로드하고 설치합니다.

    Gemfile은 선택적 버전 제약조건과 함께 함수에 필요한 패키지를 나열합니다. 자세한 내용은 Gemfile 참조를 확인하세요.

    다음은 Gemfile 예시입니다.

    source "https://rubygems.org"
    
    gem "functions_framework", "~> 0.7"
    gem "google-cloud-storage", "~> 1.29"
    

    로컬 종속 항목 패키징

    함수와 함께 종속 항목을 패키징하고 배포할 수도 있습니다. 이 방법은 rubygems 패키지 관리자를 사용하여 종속 항목을 사용할 수 없는 경우에 유용합니다.

    gem을 로컬로 패키징하려면 함수의 디렉터리 구조에 있는 디렉터리에 이를 포함하고 종속 항목의 Gemfile 항목에 경로를 제공합니다. gem 디렉터리는 유효한 gemspec 파일을 포함해야 하며 해당 코드가 함수와 함께 배포되도록 함수의 디렉터리 계층 구조 내에 있어야 합니다. 예를 들어 다음과 같은 디렉터리 구조를 사용할 수 있습니다.

    myfunction/
    ├── Gemfile
    ├── Gemfile.lock
    ├── app.rb
    └── my_private_gem/
        ├── lib/
        |   └── my_private_gem.rb
        └── my_private_gem.gemspec
    

    Gemfile 항목은 다음과 같이 표시됩니다.

    source "https://rubygems.org"
    
    gem "functions_framework", "~> 0.7"
    gem "my_private_gem", path: "./my_private_gem"
    

    로컬 gem 경로 참조에 대한 자세한 내용은 Gemfile 참조를 확인하세요.