

AWS App Runner 는 2026년 4월 30일부터 신규 고객에게 더 이상 공개되지 않습니다. App Runner를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [AWS App Runner 가용성 변경](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)을 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Python 플랫폼 사용
<a name="service-source-code-python"></a>

**중요**  
App Runner는 2025년 12월 1일에 **Python 3.7** 및 **Python 3.8**에 대한 지원을 종료합니다. 권장 사항 및 자세한 내용은 섹션을 참조하세요[관리형 런타임 버전에 대한 지원 종료](service-source-code.md#service-source-code.managed-platforms.eos).

 AWS App Runner Python 플랫폼은 관리형 런타임을 제공합니다. 각 런타임을 사용하면 Python 버전을 기반으로 웹 애플리케이션을 사용하여 컨테이너를 쉽게 빌드하고 실행할 수 있습니다. Python 런타임을 사용하는 경우 App Runner는 관리형 Python 런타임 이미지로 시작합니다. 이 이미지는 [Amazon Linux Docker 이미지를](https://hub.docker.com/_/amazonlinux) 기반으로 하며 Python 버전에 대한 런타임 패키지와 일부 도구 및 인기 있는 종속성 패키지를 포함합니다. App Runner는이 관리형 런타임 이미지를 기본 이미지로 사용하고 애플리케이션 코드를 추가하여 도커 이미지를 빌드합니다. 그런 다음이 이미지를 배포하여 컨테이너에서 웹 서비스를 실행합니다.

 App Runner 콘솔 또는 [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html) API 작업을 사용하여 서비스를 [생성할 때 App Runner 서비스에](manage-create.md) 대한 런타임을 지정합니다. 런타임을 소스 코드의 일부로 지정할 수도 있습니다. 코드 리포지토리에 포함하는 [App Runner 구성 파일의](config-file.md) `runtime` 키워드를 사용합니다. 관리형 런타임의 이름 지정 규칙은 *<language-name><major-version>*입니다.

유효한 Python 런타임 이름 및 버전은 섹션을 참조하세요[Python 런타임 릴리스 정보](service-source-code-python-releases.md).

App Runner는 모든 배포 또는 서비스 업데이트 시 서비스의 런타임을 최신 버전으로 업데이트합니다. 애플리케이션에 특정 버전의 관리형 런타임이 필요한 경우 [App Runner 구성 파일의](config-file.md) `runtime-version` 키워드를 사용하여 지정할 수 있습니다. 메이저 또는 마이너 버전을 포함하여 모든 수준의 버전으로를 잠글 수 있습니다. App Runner는 서비스의 런타임만 하위 수준으로 업데이트합니다.

Python 런타임의 버전 구문: `major[.minor[.patch]]`

예: `3.8.5`

다음 예제에서는 버전 잠금을 보여줍니다.
+ `3.8` - 메이저 및 마이너 버전을 잠급니다. App Runner는 패치 버전만 업데이트합니다.
+ `3.8.5` - 특정 패치 버전으로 잠급니다. App Runner는 런타임 버전을 업데이트하지 않습니다.

**Topics**
+ [Python 런타임 구성](#service-source-code-python.config)
+ [특정 런타임 버전에 대한 콜아웃](#service-source-code-python.callouts)
+ [Python 런타임 예제](#service-source-code-python.examples)
+ [Python 런타임 릴리스 정보](service-source-code-python-releases.md)

## Python 런타임 구성
<a name="service-source-code-python.config"></a>

관리형 런타임을 선택할 때는 최소한 빌드 및 실행 명령도 구성해야 합니다. App Runner 서비스를 [생성](manage-create.md)하거나 [업데이트](manage-configure.md)하는 동안 이를 구성합니다. 다음 방법 중 하나를 사용하여이 작업을 수행할 수 있습니다.
+ **App Runner 콘솔 사용** - 생성 프로세스 또는 **구성 탭의 빌드** 구성 섹션에서 명령을 지정합니다.
+ **App Runner API 사용** - [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html) 또는 [UpdateService](https://docs.aws.amazon.com/apprunner/latest/api/API_UpdateService.html) API 작업을 호출합니다. [CodeConfigurationValues](https://docs.aws.amazon.com/apprunner/latest/api/API_CodeConfigurationValues.html) 데이터 형식의 `BuildCommand` 및 `StartCommand` 멤버를 사용하여 명령을 지정합니다.
+ **[구성 파일](config-file.md) 사용** - 최대 3개의 빌드 단계에서 하나 이상의 빌드 명령을 지정하고 애플리케이션을 시작하는 데 사용되는 단일 실행 명령을 지정합니다. 추가 선택적 구성 설정이 있습니다.

구성 파일을 제공하는 것은 선택 사항입니다. 콘솔 또는 API를 사용하여 App Runner 서비스를 생성할 때 App Runner가 구성 설정을 생성할 때 직접 가져오거나 구성 파일에서 가져올지 지정합니다.

## 특정 런타임 버전에 대한 콜아웃
<a name="service-source-code-python.callouts"></a>

**참고**  
App Runner는 이제 Python 3.11, Node.js 22 및 Node.js 18 런타임 버전을 기반으로 애플리케이션에 대해 업데이트된 빌드 프로세스를 실행합니다. 애플리케이션이 이러한 런타임 버전 중 하나에서 실행되는 경우 수정된 빌드 프로세스에 대한 자세한 내용은 [관리형 런타임 버전 및 App Runner 빌드](service-source-code.md#service-source-code.build-detail) 섹션을 참조하세요. 다른 모든 런타임 버전을 사용하는 애플리케이션은 영향을 받지 않으며 원래 빌드 프로세스를 계속 사용합니다.

### Python 3.11(개정된 App Runner 빌드)
<a name="service-source-code-python.callouts.python311"></a>

관리형 Python 3*.11 런타임에 대해 apprunner.yaml*에서 다음 설정을 사용합니다.
+ 상단 섹션의 `runtime` 키를 로 설정 `python311`   
**Example**  

  ```
  runtime: python311
  ```
+ 대신를 사용하여 종속성을 `pip3` `pip` 설치합니다.
+ 대신 인터`python3`프리터를 사용합니다`python`.
+ `pip3` 설치 관리자를 `pre-run`명령으로 실행합니다. Python은 `/app` 디렉터리 외부에 종속성을 설치합니다. App Runner는 Python 3.11용 수정된 App Runner 빌드를 실행하므로 `apprunner.yaml` 파일의 빌드 섹션에 있는 명령을 통해 `/app` 디렉터리 외부에 설치된 모든 항목이 손실됩니다. 자세한 내용은 [수정된 App Runner 빌드](service-source-code.md#service-source-code.build-detail.v2) 단원을 참조하십시오.  
**Example**  

  ```
  run:
    runtime-version: 3.11
    pre-run:  
      - pip3 install pipenv
      - pipenv install
      - python3 copy-global-files.py
    command: pipenv run gunicorn django_apprunner.wsgi --log-file -
  ```

자세한 내용은이 주제 뒷부분[의 Python 3.11에 대한 확장 구성 파일의 예제](#service-source-code-python.examples.extended-v2)도 참조하세요.

## Python 런타임 예제
<a name="service-source-code-python.examples"></a>

다음 예제에서는 Python 서비스를 빌드하고 실행하기 위한 App Runner 구성 파일을 보여줍니다. 마지막 예제는 Python 런타임 서비스에 배포할 수 있는 전체 Python 애플리케이션의 소스 코드입니다.

**참고**  
이 예제에서 사용되는 런타임 버전은 *3.7.7* 및 *3.11*입니다. 사용하려는 버전으로 바꿀 수 있습니다. 지원되는 최신 Python 런타임 버전은 섹션을 참조하세요[Python 런타임 릴리스 정보](service-source-code-python-releases.md).

### 미니멀 Python 구성 파일
<a name="service-source-code-python.examples.minimal"></a>

이 예제는 Python 관리형 런타임과 함께 사용할 수 있는 최소 구성 파일을 보여줍니다. App Runner가 최소 구성 파일로 가정하는 내용은 섹션을 참조하세요[구성 파일 예제](config-file-examples.md#config-file-examples.managed).

Python 3.11은 `pip3` 및 `python3` 명령을 사용합니다. 자세한 내용은이 주제의 뒷부분에서 [Python 3.11용 확장 구성 파일의 예를](#service-source-code-python.examples.extended-v2) 참조하세요.

**Example apprunner.yaml**  

```
version: 1.0
runtime: python3 
build:
  commands:
    build:
      - pip install pipenv
      - pipenv install 
run: 
  command: python app.py
```

### 확장 Python 구성 파일
<a name="service-source-code-python.examples.extended"></a>

이 예제에서는 Python 관리형 런타임에서 모든 구성 키를 사용하는 방법을 보여줍니다.

**참고**  
이 예제에서 사용되는 런타임 버전은 *3.7.7*입니다. 사용하려는 버전으로 바꿀 수 있습니다. 지원되는 최신 Python 런타임 버전은 섹션을 참조하세요[Python 런타임 릴리스 정보](service-source-code-python-releases.md).  
Python 3.11은 `pip3` 및 `python3` 명령을 사용합니다. 자세한 내용은이 주제의 뒷부분에서 Python 3.11용 확장 구성 파일의 예를 참조하세요.

**Example apprunner.yaml**  

```
version: 1.0
runtime: python3 
build:
  commands:
    pre-build:
      - wget -c https://s3.amazonaws.com/amzn-s3-demo-bucket/test-lib.tar.gz -O - | tar -xz
    build:        
      - pip install pipenv
      - pipenv install
    post-build:
      - python manage.py test
  env:
    - name: DJANGO_SETTINGS_MODULE
      value: "django_apprunner.settings"
    - name: MY_VAR_EXAMPLE
      value: "example"
run:
  runtime-version: 3.7.7
  command: pipenv run gunicorn django_apprunner.wsgi --log-file -
  network: 
    port: 8000
    env: MY_APP_PORT  
  env:
    - name: MY_VAR_EXAMPLE
      value: "example"
  secrets:
    - name: my-secret
      value-from: "arn:aws:secretsmanager:us-east-1:123456789012:secret:testingstackAppRunnerConstr-kJFXde2ULKbT-S7t8xR:username::"
    - name: my-parameter
      value-from: "arn:aws:ssm:us-east-1:123456789012:parameter/parameter-name"
    - name: my-parameter-only-name
      value-from: "parameter-name"
```

### 확장 Python 구성 파일 - Python 3.11(개정된 빌드 사용)
<a name="service-source-code-python.examples.extended-v2"></a>

이 예제는에서 Python 3.11 관리형 런타임과 함께 모든 구성 키를 사용하는 방법을 보여줍니다`apprunner.yaml`. 이 Python 버전은 수정된 App Runner 빌드를 사용하기 때문에이 예제에는 `pre-run` 섹션이 포함되어 있습니다.

`pre-run` 파라미터는 수정된 App Runner 빌드에서만 지원됩니다. 애플리케이션이 원래 App Runner 빌드에서 지원하는 런타임 버전을 사용하는 경우 구성 파일에이 파라미터를 삽입하지 마십시오. 자세한 내용은 [관리형 런타임 버전 및 App Runner 빌드](service-source-code.md#service-source-code.build-detail) 단원을 참조하십시오.

**참고**  
이 예제에서 사용되는 런타임 버전은 *3.11*입니다. 사용하려는 버전으로 바꿀 수 있습니다. 지원되는 최신 Python 런타임 버전은 섹션을 참조하세요[Python 런타임 릴리스 정보](service-source-code-python-releases.md).

**Example apprunner.yaml**  

```
version: 1.0
runtime: python311
build:
  commands:
    pre-build:
      - wget -c https://s3.amazonaws.com/amzn-s3-demo-bucket/test-lib.tar.gz -O - | tar -xz
    build:        
      - pip3 install pipenv
      - pipenv install
    post-build:
      - python3 manage.py test
  env:
    - name: DJANGO_SETTINGS_MODULE
      value: "django_apprunner.settings"
    - name: MY_VAR_EXAMPLE
      value: "example"
run:
  runtime-version: 3.11
  pre-run:  
    - pip3 install pipenv
    - pipenv install
    - python3 copy-global-files.py
  command: pipenv run gunicorn django_apprunner.wsgi --log-file -
  network: 
    port: 8000
    env: MY_APP_PORT  
  env:
    - name: MY_VAR_EXAMPLE
      value: "example"
  secrets:
    - name: my-secret
      value-from: "arn:aws:secretsmanager:us-east-1:123456789012:secret:testingstackAppRunnerConstr-kJFXde2ULKbT-S7t8xR:username::"
    - name: my-parameter
      value-from: "arn:aws:ssm:us-east-1:123456789012:parameter/parameter-name"
    - name: my-parameter-only-name
      value-from: "parameter-name"
```

### 전체 Python 애플리케이션 소스
<a name="service-source-code-python.examples.end2end"></a>

이 예제는 Python 런타임 서비스에 배포할 수 있는 전체 Python 애플리케이션의 소스 코드를 보여줍니다.

**Example requirements.txt**  

```
pyramid==2.0
```

**Example server.py**  

```
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
import os

def hello_world(request):
    name = os.environ.get('NAME')
    if name == None or len(name) == 0:
        name = "world"
    message = "Hello, " + name + "!\n"
    return Response(message)

if __name__ == '__main__':
    port = int(os.environ.get("PORT"))
    with Configurator() as config:
        config.add_route('hello', '/')
        config.add_view(hello_world, route_name='hello')
        app = config.make_wsgi_app()
    server = make_server('0.0.0.0', port, app)
    server.serve_forever()
```

**Example apprunner.yaml**  

```
version: 1.0
runtime: python3
build:
  commands:
    build:
      - pip install -r requirements.txt
run:
  command: python server.py
```