[Modal] 03. Secret

2025. 12. 31. 15:24·ML

Secret은 Modal에서 실행하는 이미지(컨테이너) 안에서 사용할 환경변수를 제공합니다. API 토큰의 키 값과 같은 경우 외부에 노출되지 않아야 하는 민감한 정보이기 때문에, Secret을 이용해 안전하게 관리할 수 있습니다.

Secret 등록하기

대시보드를 통해서

Modal 대시보드를 연 뒤 Secrets 탭으로 이동합니다. 처음 상태라면 아래와 같이 화연에 보여집니다.

Get started 또는 Create new secret으로 새로운 Secret을 생성해줍니다. 아래와 같이 몇 가지의 선택지들이 나오는데, 간단하게 Custom을 선택합니다.

Name에 전체 Secret 이름을 입력한 후, Enrionment variables에서 환경 변수들을 등록해주면 됩니다. 여기서는 r2-credentials라는 이름의 Secret을 생성했고, 그 안에 R2-ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_ENDPOINT_URL 세 가지의 환경 변수를 등록했습니다.

로컬의 환경변수를 사용

로컬 환경에서 정의한 환경변수를 Modal에서도 사용하려고 한다면 from_dict( ) 메소드를 사용하면 됩니다.

# 'LOCAL_FOO'라는 로컬 환경변수를 'FOO'라는 Modal Secret 환경변수로 등록했습니다.
if modal.is_local():
    local_secret = modal.Secret.from_dict({"FOO": os.environ["LOCAL_FOO"]})
else:
    local_secret = modal.Secret.from_dict({})

Secret 사용하기

Secret은 주로 Function의 인자로 넘겨줍니다. Secret의 from_name( ) 메소드를 이용하면 우리가 원하는 이름의 Secret(이 경우에는 r2-credentials라는 이름의 Secret)을 function에서 사용할 수 있습니다.

@app.function(secrets=[modal.Secret.from_name("r2-credentials")])
def main():
    # ...

Secret이 가지는 환경변수를 사용할 때는 일반적인 환경변수를 사용할 때와 동일하게 호출하면 됩니다.

r2 = boto3.client(
    "s3",
    endpoint_url=os.environ["R2_ENDPOINT_URL"],
    aws_access_key_id=os.environ["R2_ACCESS_KEY_ID"],
    aws_secret_access_key=os.environ["R2_SECRET_ACCESS_KEY"]
)

메소드

메소드 기능 반환값
hydrate( ) 로컬 환경의 객체와 Modal 서버의 객체를 동기화  
name( ) 이름 반환 str
from_dict( ) { 이름 : 값 } 형식으로 새로운 Secret 등록 _Secret
from_local_environ( ) 로컬 환경변수로부터 새로운 Secret 등록 _Secret
from_dotenv( ) .env 파일로부터 새로운 Secret 등록 _Secret
from_name( ) Secret이름으로부터 새로운 Secret 등록 _Secret
info( ) 정보 반환 SecretInfo

hydrate( )

def hydrate(self, client: Optional[_Client] = None) -> Self:

name( )

@property
def name(self) -> Optional[str]:

from_dict( )

@staticmethod
def from_dict(
    env_dict: dict[
        str, Optional[str]
    ] = {},  # dict of entries to be inserted as environment variables in functions using the secret
) -> "_Secret":

from_local_environ( )

@staticmethod
def from_local_environ(
    env_keys: list[str],  # list of local env vars to be included for remote execution
) -> "_Secret":

from_dotenv( )

@staticmethod
def from_dotenv(
    path=None,
    *,
    filename=".env",
    client: Optional[_Client] = None
) -> "_Secret":

path가 주어지지 않으면, 현재 경로부터 시작해서 .env 파일을 자동으로 탐색합니다.

from_name( )

@staticmethod
def from_name(
    name: str,
    *,
    environment_name: Optional[str] = None,
    required_keys: list[
        str
    ] = [],  # Optionally, a list of required environment variables (will be asserted server-side)
    client: Optional[_Client] = None,
) -> "_Secret":

이름은 반드시 Modal 대시보드에 등록되어 있어야 합니다.

info( )

@live_method
def info(self) -> SecretInfo:
728x90

'ML' 카테고리의 다른 글

[Modal] 02. Function  (1) 2025.12.31
[Modal] 01. App  (1) 2025.12.30
[Modal] App, Function, Entrypoint  (0) 2025.12.29
[Modal] Modal에 대하여  (0) 2025.12.28
[GAN] Style 적대적 생성 신경망 (StyleGAN)  (0) 2023.04.28
'ML' 카테고리의 다른 글
  • [Modal] 02. Function
  • [Modal] 01. App
  • [Modal] App, Function, Entrypoint
  • [Modal] Modal에 대하여
Rayi
Rayi
  • Rayi
    아카이브
    Rayi
  • 전체
    오늘
    어제
    • 분류 전체보기 (276)
      • CS (40)
        • CV (2)
        • PS (34)
      • Reveiw (18)
        • Paper (18)
        • Github (0)
      • ML (8)
        • Pytorch (5)
      • Language (59)
        • Python (8)
        • JavaScript (32)
        • TypeScript (16)
        • C++ (3)
      • IDE (12)
      • Git (13)
      • Frontend (77)
        • React (8)
        • ReactNative (6)
        • SolidJS (20)
        • CSS (12)
      • Backend (44)
        • DB (18)
        • Node.js (11)
      • UI (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CSS
    GAN
    Express
    python
    Three
    ts
    PyTorch
    SOLID
    js
    frontend
    vscode
    deploy
    expo
    ps
    CV
    DB
    ReactNative
    postgresql
    Git
    ML
    react
    review
    CS
    modal
    figma
    PRISMA
    mongo
    API
    backend
    nodejs
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Rayi
[Modal] 03. Secret
상단으로

티스토리툴바