Function 소스 조회와 공통 변경
search
python
client.search_functions(*, function_key_prefix: str | None = None, sort: str = "functionKeyAscending", limit: int = 50, cursor: str | None = None) -> dictdescribe
python
client.describe_function(function_key: str, *, version: str | None = None) -> dictplan
python
client.plan_function_source_change(function_key: str, *, version: str, source: str) -> dictapply
python
client.apply_function_change(plan: dict, *, command_id: str) -> dictdescribe_function(..., version=...)은 지정한 immutable Function version을 읽습니다. version을 생략하면 현재 head를 읽습니다.
plan_function_source_change는 지정한 version과 현재 generation을 확인하고 저장된 Function draft 전체를 복사한 뒤 source만 바꿉니다. ports, execution policy, capabilities, dependency lock, description은 그대로 유지됩니다. Runtime의 function_validate_change가 valid=True를 반환해야 Plan을 만들지만 pythonValidation="notPerformed"는 Python 실행이나 문법 검사가 수행됐다는 뜻이 아닙니다. Plan은 all_current_usages의 실제 Flow·Report 영향을 포함하며 이 단계에서는 저장하거나 실행하지 않습니다.
apply_function_change는 검토한 Plan과 command_id를 그대로 보냅니다. 충돌이나 응답 유실 뒤 새 Plan을 자동 생성하지 않습니다. 결과가 불확실하면 px.Error.command_id와 outcome_unknown을 확인하고 같은 Plan과 같은 command ID로만 재시도합니다. 과거 Function version은 immutable하게 남습니다.