AWS CloudShell 시작하기 - AWS CloudShell

AWS CloudShell 시작하기

이 입문 자습서에서는 AWS CloudShell을(를) 시작하고 쉘 명령줄 인터페이스를 사용하여 주요 작업을 수행하는 방법을 알 수 있습니다.

먼저 AWS Management Console에 로그인하고 AWS 리전을(를) 선택합니다. 그 다음에 새 브라우저 창에서 CloudShell을 시작하고 사용할 쉘 유형을 선택합니다.

다음으로 홈 디렉터리에 새 폴더를 만들고 로컬 머신에서 파일을 업로드합니다. 명령줄에서 프로그램으로 실행하기 전에 사전 설치된 편집기로 파일 작업을 합니다. 마지막으로 AWS CLI 명령을 호출하여 Amazon S3 버킷을 생성하고 이 버킷에 객체로 추가합니다.

사전 조건

IAM 권한

다음과 같은 AWS 관리형 정책을 IAM ID(예: 사용자, 역할, 그룹)에 연결하여 AWS CloudShell 권한을 얻을 수 있습니다.

  • AWSCloudShellFullAccess: 사용자에게 AWS CloudShell 및 기능에 대한 전체 액세스 권한을 제공합니다.

이 자습서에서는 AWS 서비스와도 상호 작용하게 됩니다. 구체적으로 말하자면, S3 버킷을 만들고 해당 버킷에 객체를 추가하여 Amazon S3와 상호 작용하게 됩니다. IAM 자격 증명에는 최소한 s3:CreateBuckets3:PutObject 권한을 부여하는 정책이 필요합니다.

자세한 내용은 Amazon Simple Storage Service 사용 설명서Amazon S3 작업을 참조하십시오.

연습 파일

또한 이 연습에는 명령줄 인터페이스에서 프로그램으로 실행되는 파일을 업로드하고 편집하는 작업도 포함됩니다. 로컬 머신에서 텍스트 편집기를 열고 다음 코드 조각을 추가합니다.

import sys x=int(sys.argv[1]) y=int(sys.argv[2]) sum=x+y print("The sum is",sum)

add_prog.py 이름으로 파일을 저장합니다.

내용

1단계: AWS Management Console 가입

이 단계에는 AWS Management Console 액세스를 위한 IAM 사용자 정보를 입력하는 작업이 포함됩니다. 이미 콘솔을 사용하고 있다면 2단계로 건너뛰십시오.

  • IAM 사용자 로그인 URL을 사용하거나 메인 로그인 페이지로 이동하여 AWS Management Console에 액세스할 수 있습니다.

    IAM user sign-in URL
    • 브라우저를 열고 로그인 URL을 입력합니다. account_alias_or_id을(를) 관리자가 제공한 계정 별칭이나 계정 ID로 교체합니다.

      https://account_alias_or_id.signin.aws.amazon.com/console/
    • IAM 로그인 보안 인증을 입력하고 로그인을 선택합니다.

    IAM 사용자로 로그인
    Main sign-in page
    • https://aws.amazon.com/console/을 엽니다.

    • 이전에 이 브라우저를 사용하여 로그인하지 않은 경우, 기본 로그인 페이지가 나타납니다. IAM 사용자를 선택하고 계정 별칭 또는 계정 ID를 입력한 후 다음을 선택합니다.

      IAM 사용자로 로그인
    • 이미 IAM 사용자로 로그인한 경우 브라우저에서 AWS 계정에 대한 계정 별칭이나 계정 ID를 기억할 수 있습니다. 그렇다면, IAM 로그인 보안 인증을 입력하고 로그인을 선택합니다.

      IAM 사용자로 로그인
    참고

    루트 사용자로 로그인할 수도 있습니다. 이 자격 증명은 계정의 모든 AWS 서비스 및 리소스에 대한 완전한 액세스 권한을 갖습니다. 일상적인 작업, 심지어 관리 작업의 경우에도 루트 사용자를 사용하지 않을 것을 권장합니다. 대신, IAM 사용자를 처음 생성할 때만 루트 사용자를 사용하는 모범 사례를 준수합니다.

2단계: 리전 선택, AWS CloudShell 시작, 쉘 선택

이 단계에서는 콘솔 인터페이스에서 AWS CloudShell을(를) 시작하고, 사용 가능한 AWS 리전을(를) 선택하고, Bash, PowerShell, Z shell와 같은 선호하는 쉘로 전환합니다.

  1. 작업할 AWS 리전을(를) 선택하려면 리전 선택 메뉴로 이동하여 작업할 지원 대상 AWS 리전을 선택합니다. (사용 가능한 지역은 강조 표시됩니다.)

    중요

    리전을 전환하면 인터페이스가 새로고침되고 선택한 AWS 리전의 이름이 명령줄 텍스트 위에 표시됩니다. 영구 스토리지에 추가하는 모든 파일은 동일한 AWS 리전에서만 사용할 수 있습니다. 리전을 변경하면 다른 스토리지와 파일에 액세스할 수 있습니다.

    중요

    콘솔 왼쪽 하단에 있는 Console Toolbar에서 CloudShell을 시작할 때 선택한 리전에서 CloudShell을 사용할 수 없는 경우, 기본 리전은 선택한 지역과 가장 가까운 리전으로 설정됩니다. 기본 리전이 아닌 다른 리전의 리소스를 관리할 권한을 제공하는 명령을 실행할 수 있습니다. 자세한 내용은 AWS 리전 작업을 참조하십시오.

    유럽(스페인) eu-south-2을(를) 선택했지만 유럽(스페인) eu-south-2에서 CloudShell을 사용할 수 없는 경우, 기본 지역은 유럽(스페인) eu-west-1와(과) 가장 가까운 유럽(아일랜드) eu-south-2(으)로 설정됩니다.

    기본 지역인 유럽(아일랜드) eu-west-1에 대한 Service Quotas를 사용하고, 전체 리전에서 동일한 CloudShell 세션이 복원됩니다. 기본 리전은 변경할 수 있으며 CloudShell 브라우저 창에 메시지가 표시됩니다.

  2. AWS Management Console에서는 탐색 표시줄에 제공되는 다음 옵션을 선택하여 CloudShell을 실행할 수 있습니다.

    1. 콘솔 탐색 모음에서 CloudShell 아이콘을 선택합니다.

    2. 검색 상자에 “CloudShell”을 입력한 다음, CloudShell을 선택합니다.

    3. 최근 방문한 위젯에서 CloudShell을 선택합니다.

    4. 콘솔 왼쪽 하단 Console Toolbar에서 CloudShell 아이콘을 선택합니다.

      • CloudShell 세션의 높이를 조정하려면 =을(를) 끌어놓습니다.

      • CloudShell 세션을 전체 화면으로 전환하려면 새 브라우저 탭에서 열기 아이콘을 클릭합니다.

    AWS CloudShell 인터페이스의 주요 기능.

    명령 프롬프트가 표시되면 셸이 상호 작용할 준비가 된 것입니다.

    참고

    AWS CloudShell 시작 또는 상호 작용의 정상적인 실행을 방해하는 문제가 발생할 경우, AWS CloudShell 문제 해결에서 문제를 식별하고 해결하는 데 필요한 정보를 확인하십시오.

  3. 사전 설치된 쉘을 선택하여 작업하려면 명령줄 프롬프트에 프로그램 이름을 입력합니다.

    Bash

    bash

    $(으)로 전환하면 명령 프롬프트의 기호가 Bash(으)로 업데이트됩니다.

    참고

    Bash은(는) AWS CloudShell을(를) 시작할 때 실행되는 기본 쉘입니다.

    PowerShell

    pwsh

    PowerShell로 전환하면 명령 프롬프트의 기호가 PS>로 업데이트됩니다.

    Z shell

    zsh

    Z shell(으)로 전환하면 명령 프롬프트의 기호가 %(으)로 업데이트됩니다.

    쉘 환경에 사전 설치된 버전에 대한 자세한 정보는 쉘 테이블(AWS CloudShell 컴퓨팅 환경)에서 확인하십시오.

3단계: AWS CloudShell에서 파일 다운로드

참고

이 옵션은 VPC 환경에서는 사용할 수 없습니다.

이 단계에서는 파일을 다운로드하는 절차를 단계별로 살펴봅니다.

  1. 파일을 다운로드하려면 작업으로 이동하여 메뉴에서 파일 다운로드를 선택합니다.

    파일 다운로드 대화 상자가 표시됩니다.

  2. 파일 다운로드 대화 상자에 다운로드할 파일의 경로를 입력합니다.

    파일 다운로드 경로 지정
    참고

    다운로드할 파일을 지정할 때는 절대 또는 상대 경로를 사용할 수 있습니다. 상대 경로 이름을 사용하면 기본적으로 시작 부분에 /home/cloudshell-user/이(가) 자동으로 추가됩니다. 따라서 mydownload-file이라는 파일을 다운로드하려면 다음 두 경로가 모두 유효해야 합니다.

    • 절대 경로: /home/cloudshell-user/subfolder/mydownloadfile.txt

    • 상대 경로: subfolder/mydownloadfile.txt

  3. 다운로드를 선택합니다.

    파일 경로가 올바르면 대화 상자가 표시됩니다. 이 대화상자에서 기본 애플리케이션으로 파일을 열 수 있습니다. 또는 로컬 머신에 있는 폴더에 파일을 저장할 수 있습니다.

참고

Console Toolbar다운로드 옵션은 에서 CloudShell을 시작할 때는 사용할 수 없습니다. CloudShell 콘솔 또는 Chrome 웹 브라우저에서 파일을 다운로드할 수 있습니다. 파일 다운로드 방법에 대한 자세한 정보는 3단계: AWS CloudShell에서 파일 다운로드 받기에서 확인하십시오.

4단계: AWS CloudShell(으)로 파일 업로드

참고

이 옵션은 VPC 환경에서는 사용할 수 없습니다.

이 단계에서는 파일을 업로드한 다음 홈 디렉터리의 새 디렉터리로 이동하는 방법을 설명합니다.

  1. 현재 작업 디렉토리를 확인하려면 프롬프트에 다음 명령을 입력합니다.

    pwd

    Enter를 누르면 쉘이 현재 작업 디렉토리(예: /home/cloudshell-user)를 반환합니다.

  2. 이 디렉터리에 파일을 업로드하려면 작업으로 이동하여 메뉴에서 파일 업로드를 선택합니다.

    파일 업로드 대화 상자가 표시됩니다.

  3. 찾아보기를 선택합니다.

  4. 시스템의 파일 업로드 대화 상자에서 이 자습서용으로 생성한 텍스트 파일(add_prog.py)을 선택하고 열기를 선택합니다.

  5. 업로드 대화 상자에서 파일 업로드를 선택합니다.

    진행률은 업로드 상태를 추적합니다. 정상적으로 업로드되면 홈 디렉터리의 루트에 add_prog.py이(가) 추가되었다는 확인 메시지가 나타납니다.

  6. 파일용 디렉터리를 생성하려면 디렉터리 만들기 명령어 mkdir mysub_dir을(를) 입력합니다.

  7. 업로드된 파일을 홈 디렉터리의 루트에서 새 디렉터리로 이동하려면 다음 mv 명령을 사용합니다.

    mv add_prog.py mysub_dir.

  8. 현재 작업 디렉터리를 새로운 디렉터리로 변경하려면 cd mysub_dir을(를) 입력합니다.

    명령 프롬프트가 업데이트되어 작업 디렉토리가 변경되었음을 알립니다.

  9. 현재 디렉터리 mysub_dir의 내용을 보려면 ls 명령을 입력합니다.

    작업 디렉토리의 내용이 나열됩니다. 여기에는 방금 업로드한 파일도 포함됩니다.

5단계: AWS CloudShell에서 파일 삭제

이 단계에서는 AWS CloudShell에서 파일을 삭제하는 방법을 설명합니다.

  1. AWS CloudShell에서 파일을 삭제하려면 rm(삭제)와 같은 표준 쉘 명령을 사용합니다.

    rm my-file-for-removal

  2. 지정된 기준에 맞는 여러 파일을 삭제하려면 find 명령을 실행합니다.

    다음 예시에서는 이름에 접미사 “.pdf”가 포함된 모든 파일을 삭제합니다.

    find -type f -name '*.pdf' -delete
참고

특정 AWS 리전에서 AWS CloudShell 사용을 중단한다고 가정해 보겠습니다. 이후 지정된 기간이 지나면 해당 리전의 영구 스토리지에 있는 데이터가 자동으로 삭제됩니다. 더 자세한 내용은 영구 스토리지를 확인합니다.

6단계: 홈 디렉터리 백업 생성

이 단계에서는 홈 디렉터리 백업을 생성하는 방법을 설명합니다.

  1. 백업 파일 생성

    홈 디렉터리 외부에 임시 폴더를 생성합니다.

    HOME_BACKUP_DIR=$(mktemp --directory)

    다음 중 하나를 사용하여 백업을 생성할 수 있습니다.

    1. tar를 사용하여 백업 파일 생성

      tar를 사용하여 백업 파일을 생성하려면 다음 명령을 입력합니다.

      tar \ --create \ --gzip \ --verbose \ --file=${HOME_BACKUP_DIR}/home.tar.gz \ [--exclude ${HOME}/.cache] \ // Optional ${HOME}/ echo "Home directory backed up to this file: ${HOME_BACKUP_DIR}/home.tar.gz"
    2. zip을 사용하여 백업 파일 생성

      zip을 사용하여 백업 파일을 생성하려면 다음 명령을 입력합니다.

      zip \ --recurse-paths \ ${HOME_BACKUP_DIR}/home.zip \ ${HOME} \ [--exclude ${HOME}/.cache/\*] // Optional echo "Home directory backed up to this file: ${HOME_BACKUP_DIR}/home.zip"
  2. 백업 파일을 CloudShell 외부로 전송

    다음 옵션 중 하나를 사용하여 CloudShell 외부로 백업 파일을 전송할 수 있습니다.

    1. 로컬 시스템에 백업 파일 다운로드

      이전 단계에서 생성한 파일을 다운로드할 수 있습니다. CloudShell에서 파일을 다운로드하는 방법에 대한 자세한 정보는 AWS CloudShell에서 파일 다운로드 받기에서 확인하십시오.

      파일 다운로드 대화 상자에 다운로드할 파일의 경로(예: /tmp/tmp.iA99tD9L98/home.tar.gz)를 입력합니다.

    2. 백업 파일의 S3 전송

      버킷을 생성하려면 다음 명령을 입력합니다.

      aws s3 mb s3://${BUCKET_NAME}

      AWS CLI를 사용하여 파일을 S3 버킷에 복사합니다.

      aws s3 cp ${HOME_BACKUP_DIR}/home.tar.gz s3://${BUCKET_NAME}
      참고

      데이터 전송 요금이 부과될 수 있습니다.

  3. S3 버킷에 직접 백업

    S3 버킷에 직접 백업하려면 다음 명령을 입력합니다.

    aws s3 cp \ ${HOME}/ \ s3://${BUCKET_NAME} \ --recursive \ [--exclude .cache/\*] // Optional

7단계: 쉘 세션 재시작

이 단계에서는 쉘 세션을 다시 시작하는 방법을 설명합니다.

참고

보안 조치로서, 오랜 시간 동안 키보드나 포인터로 쉘과 상호 작용하지 않으면 세션이 자동으로 중단됩니다. 장기 실행 세션 또한 자동으로 중단됩니다. 자세한 내용은 쉘 세션 단원을 참조하십시오.

  1. 쉘 세션을 재시작하려면 작업, 재시작을 선택합니다.

    AWS CloudShell을(를) 재시작하면 현재 AWS 리전에 있는 활성 세션이 모두 중단된다는 메시지가 표시됩니다.

  2. 확인하려면 재시작을 선택합니다.

    인터페이스에 CloudShell 컴퓨팅 환경이 중지된다는 메시지가 표시됩니다. 환경을 중단했다가 재시작한 후, 새 세션에서 명령줄 작업을 시작할 수 있습니다.

    참고

    환경을 재시작 시 몇 분이 걸릴 수도 있습니다.

8단계: 쉘 세션 홈 디렉터리 삭제

이 단계에서는 쉘 세션을 삭제하는 방법을 설명합니다.

참고

이 옵션은 VPC 환경에서는 사용할 수 없습니다. VPC 환경을 다시 시작하면 홈 디렉터리가 삭제됩니다.

주의

홈 디렉터리 삭제는 홈 디렉터리에 저장된 모든 데이터가 영구적으로 삭제되는 되돌릴 수 없는 작업입니다. 단, 다음 상황에서는 이 옵션을 고려해 볼 수 있습니다.

  • 파일을 잘못 수정하여 AWS CloudShell 컴퓨팅 환경에 액세스할 수 없는 경우. 홈 디렉터리를 삭제하면 기본 설정으로 AWS CloudShell 돌아갑니다.

  • 모든 데이터를 AWS CloudShell에서 즉시 제거하고 싶을 것입니다. AWS 리전에서 AWS CloudShell 사용을 중지하면, 해당 리전에서 AWS CloudShell을(를) 다시 시작하지 않는 한 보존 기간 종료 시 영구 스토리지가 자동으로 삭제됩니다.

파일을 장기간 보관해야 하는 경우 Amazon S3 또는 CodeCommit과 같은 서비스를 고려해 보십시오.

  1. 쉘 세션을 삭제하려면 작업, 삭제를 선택합니다.

    AWS CloudShell 홈 디렉터리를 삭제하면 현재 AWS CloudShell에 저장된 모든 데이터가 삭제된다는 메시지가 표시됩니다.

    참고

    이 작업을 취소할 수 없습니다.

  2. 삭제를 확인하려면 텍스트 입력 필드에 삭제를 입력한 다음 삭제를 선택합니다.

    AWS CloudShell은 현재 AWS 리전의 모든 활성 세션을 중지합니다. 새 환경을 생성하거나 CloudShell VPC 환경을 설정할 수 있습니다.

  3. 새 환경을 생성하려면 탭 열기를 선택합니다.

  4. CloudShell VPC 환경을 생성하려면 VPC 환경 생성을 선택합니다.

    쉘 세션을 수동으로 종료합니다.

    명령줄을 사용하여 쉘 세션에서 나가 exit 명령을 사용하여 로그아웃할 수 있습니다. 그 다음에 아무 키나 눌러 다시 연결하고 AWS CloudShell을(를) 계속 사용할 수 있습니다.

9단계: 파일 코드를 편집하고 명령줄을 사용하여 실행하기

이 단계에서는 사전 설치된 Vim 편집기를 사용하여 파일 작업을 수행하는 방법을 설명합니다. 그런 다음 명령줄에서 해당 파일을 프로그램으로 실행합니다.

  1. 이전 단계에서 업로드한 파일을 편집하려면 다음 명령을 입력합니다.

    vim add_prog.py

    쉘 인터페이스가 새로 고쳐져 Vim 편집기가 표시됩니다.

  2. Vim에서 파일을 편집하려면 I 키를 누릅니다. 이제 프로그램에서 두 개가 아닌 세 개의 숫자를 더하도록 내용을 편집합니다.

    import sys x=int(sys.argv[1]) y=int(sys.argv[2]) z=int(sys.argv[3]) sum=x+y+z print("The sum is",sum)
    참고

    텍스트를 편집기에 붙여넣고 안전한 붙여넣기 기능을 활성화하면 경고가 표시됩니다. 복사된 여러 줄 텍스트에 악성 스크립트가 포함될 수 있습니다. 안전한 붙여넣기 기능을 사용하면 텍스트를 붙여넣기 전에 전체 텍스트를 확인할 수 있습니다. 텍스트가 안전하다고 판단되면 붙여넣기 를 선택합니다.

  3. 프로그램을 편집한 후 Esc을(를) 눌러 Vim 명령 모드로 들어갑니다. 그 다음 :wq 명령을 입력하여 파일을 저장하고 편집기를 종료합니다.

    참고

    Vim 명령 모드를 처음 사용하는 경우, 처음에는 명령 모드와 삽입 모드 사이를 전환하는 것이 어려울 수 있습니다. 명령 모드는 파일을 저장하고 애플리케이션을 종료할 때 사용됩니다. 새 텍스트를 삽입할 때는 삽입 모드가 사용됩니다. 삽입 모드로 들어가려면 및 I을(를) 누르고, 명령 모드로 들어가려면 Esc을(를) 누릅니다. AWS CloudShell에서 사용할 수 있는 Vim 및 도구에 대한 자세한 내용은 개발 도구 및 쉘 유틸리티 단원을 참조하십시오.

  4. 메인 명령줄 인터페이스에서 다음 프로그램을 실행하고 입력할 숫자 3개를 지정합니다. 구문은 다음과 같습니다.

    python3 add_prog.py 4 5 6

    명령줄에 프로그램 결과 The sum is 15이(가) 표시됩니다.

10단계: AWS CLI을(를) 사용하여 Amazon S3 버킷에 파일을 객체로 추가

이 단계에서는 Amazon S3 버킷을 생성한 다음 PutObject 방법으로 코드 파일을 해당 버킷의 객체로 추가합니다.

참고

대부분의 경우 AWS CloudShell에서 CodeCommit 사용을 통해 소프트웨어 파일을 버전 관리 리포지토리에 커밋할 수 있습니다. 이 자습서에서는 AWS CloudShell에서 AWS CLI을(를) 사용하여 다양한 AWS 서비스와 상호 작용하는 방법을 알 수 있습니다. 이 방법을 사용하면 추가 리소스를 다운로드하거나 설치할 필요가 없습니다. 또한 셸 내에서 이미 인증되었기 때문에 직접 호출을 하기 전에 보안 인증을 구성하지 않아도 됩니다.

  1. 지정된 AWS 리전 버킷을 생성하려면 다음 명령을 입력합니다.

    aws s3api create-bucket --bucket insert-unique-bucket-name-here --region us-east-1
    참고

    us-east-1 리전 외부에서 버킷을 생성하는 경우, LocationConstraint 파라미터에 create-bucket-configuration을(를) 추가하여 리전을 지정합니다. 다음은 구문의 예제입니다.

    $ aws s3api create-bucket --bucket my-bucket --region eu-west-1 --create-bucket-configuration LocationConstraint=eu-west-1

    직접 호출이 성공하면 명령줄에 다음 출력과 비슷한 서비스의 응답이 표시됩니다.

    { "Location": "/insert-unique-bucket-name-here" }
    참고

    버킷 이름 지정 규칙을 준수하지 않으면 다음 오류가 표시됩니다. ‘CreateBucket 작업을 호출하는 동안 오류가 발생했습니다(InvalidBucketName). 지정된 버킷이 유효하지 않습니다.

  2. 파일을 업로드하고 방금 만든 버킷에 해당 파일을 객체로 추가하려면 PutObject 방법을 직접 호출합니다.

    aws s3api put-object --bucket insert-unique-bucket-name-here --key add_prog --body add_prog.py

    객체가 Amazon S3 버킷에 업로드되면 명령줄에 다음 출력과 비슷한 서비스의 응답이 표시됩니다.

    {"ETag": "\"ab123c1:w:wad4a567d8bfd9a1234ebeea56\""}

    ETag는 저장된 객체의 해시입니다. 이 해시로 Amazon S3에 업로드된 객체의 무결성을 확인할 수 있습니다.