Amazon Linux 2(AL2) 또는 Amazon Linux 2023(AL2023)에서 실행되는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있습니다. 인스턴스에 AWS SDK for Python(Boto3)을 사용해 격리된 Python 3 가상 환경을 만들고 싶습니다.
해결 방법
Python 3 설치
다음 단계를 완료하십시오.
-
SSH를 사용해 EC2 Linux 인스턴스에 연결합니다.
-
패키지 인덱스를 새로 고치려면 다음 명령을 실행합니다.
yum check-update
참고: 위의 명령은 사용 가능한 업데이트도 찾습니다. Python 3 환경을 생성할 때는 다른 패키지를 업데이트할 필요가 없습니다.
-
호스트에 이미 Python 3이 설치되어 있는지 확인하려면 다음 명령을 실행합니다.
[ec2-user ~]$ yum list installed | grep -i python3
Python 3이 설치되어 있지 않으면 다음과 같은 결과가 출력됩니다.
[ec2-user ~]$ yum list installed | grep -i python3
[ec2-user ~]$ python3
-bash: python3: command not found
Python 3이 설치된 경우 배포를 기반으로 다음과 같은 결과가 출력됩니다.
AL2:
[ec2-user ~]$ yum list installed | grep -i python3
python3.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core
python3-libs.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core
python3-pip.noarch 9.0.3-1.amzn2.0.1 @amzn2-core
python3-setuptools.noarch 38.4.0-3.amzn2.0.6 @amzn2-core
[ec2-user ~]$ whereis python3
python3: //usr/bin/python3 /usr/bin/python3.7 /usr/bin/python3.7m /usr/lib/python3.7 /usr/lib64/python3.7 /usr/include/python3.7m /usr/share/man/man1/python3.1.gz
AL2023:
[ec2-user ~]$ yum list installed | grep -i python3
python3.x86_64 3.9.21-1.amzn2023.0.3 @System
python3-pip-wheel.noarch 21.3.1-2.amzn2023.0.11 @System
python3-libs.x86_64 3.9.21-1.amzn2023.0.3 @System
python3-setuptools.noarch 59.6.0-2.amzn2023.0.5 @System
[ec2-user ~]$ whereis python3
python3: /usr/bin/python3 /usr/share/man/man1/python3.1.gz
-
Python 3이 설치되어 있지 않은 경우 다음 명령을 실행하여 yum 패키지 관리자로 패키지를 설치합니다.
[ec2-user ~]$ sudo yum install python3 -y
ec2-user 홈 디렉터리에 가상 환경 생성
가상 환경이 포함된 앱 디렉터리를 생성하려면 다음 명령을 실행합니다.
[ec2-user ~]$ python3 -m venv my_app/env
참고: my_app을 애플리케이션 디렉터리 이름으로 대체하십시오.
가상 환경을 활성화하고 Boto3 라이브러리 설치
다음 단계를 완료하십시오.
-
AWS Identity and Access Management(AWS IAM) 역할을 인스턴스에 연결합니다. 역할에는 SDK for Python(Boto3)이 구성에 필요한 작업을 수행할 수 있도록 허용하는 권한 정책이 있어야 합니다. 다른 인증 방법은 Boto3 웹 사이트의 ](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html)Configuration[을 참조하십시오.
-
환경을 활성화하려면 다음 명령을 실행합니다.
[ec2-user ~]$ source ~/my_app/env/bin/activate
(env) [ec2-user ~]$
참고: my_app을 애플리케이션 디렉터리 이름으로 대체하십시오.
-
환경에 최신 pip 모듈이 설치되어 있는지 확인하려면 다음 명령을 실행합니다.
(env) [ec2-user ~]$ pip install pip --upgrade
-
가상 환경에 Boto3 라이브러리를 설치하려면 다음 명령을 실행합니다.
(env) [ec2-user ~]$ pip install boto3
-
Python을 실행하려면 다음 명령을 실행합니다.
(env) [ec2-user ~]$ python
Python 3.7.4 (default, Dec 13 2019, 01:02:18)[GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>>
-
Boto3 라이브러리를 가져와서 제대로 작동하는지 확인하려면 다음 명령을 실행합니다.
>>> import boto3 # no error
다음 예제 출력에는 AWS 계정 내 Amazon Simple Storage Service(S3) 버킷의 전체 목록이 나와 있습니다.
>>> import boto3 # no error
>>> s3 = boto3.resource('s3')
>>> for bucket in s3.buckets.all():
... print(bucket.name)
... # Press Enter twice to execute the loop
>>> exit() # Then type exit() to quit Python shell
-
가상 환경을 종료하려면 다음 명령을 실행합니다.
(env) [ec2-user ~]$ deactivate
[ec2-user ~]$
-
로그인할 때 가상 환경을 자동으로 활성화하려면 다음 명령을 실행하여 ~/.bashrc 파일을 업데이트합니다.
[ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc
참고: my_app을 애플리케이션 디렉터리 이름으로 대체하십시오. 위의 명령은 가상 환경을 자동으로 활성화합니다.
-
환경의 bash 환경을 다시 로드하려면 다음 명령을 실행합니다.
[ec2-user ~]$ source ~/.bashrc
출력 예시:
(env) [ec2-user ~]$
참고: **(env)**는 가상 환경을 올바르게 활성화했음을 보여줍니다. 이제 향후 모든 SSH 세션에서 그리고 source ~/bashrc 명령을 실행할 때 기본적으로 Python 환경을 사용할 수 있습니다.
관련 정보
AL2 인스턴스에서 인스턴스 소프트웨어 업데이트
콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스 시작
Python Packaging Authority(PYPA) 웹 사이트의 Virtualenv