AWS CloudShell 컴퓨팅 환경: 사양 및 소프트웨어 - AWS CloudShell

AWS CloudShell 컴퓨팅 환경: 사양 및 소프트웨어

AWS CloudShell을 시작하면 쉘 경험을 호스팅하기 위해 Amazon Linux 2023을 기반으로 하는 컴퓨팅 환경이 생성됩니다. 이 환경은 컴퓨팅 리소스(vCPU 및 메모리)로 구성되며 명령줄 인터페이스에서 액세스할 수 있는 다양한 사전 설치 소프트웨어가 있습니다. 컴퓨팅 환경에 설치하는 소프트웨어가 패치되어 있고 최신 상태인지 확인합니다. 소프트웨어를 설치하고 쉘 스크립트를 수정하여 기본 환경을 구성할 수도 있습니다.

컴퓨팅 환경 리소스

개별 AWS CloudShell 컴퓨팅 환경에는 다음과 같은 CPU 및 메모리 리소스가 할당됩니다.

  • 1 vCPU(가상 중앙 처리 장치)

  • 2-GiB RAM

또한 환경은 다음과 같은 스토리지 구성으로 프로비저닝됩니다.

  • 1-GB 영구 스토리지(세션 종료 후에도 스토리지 유지)

자세한 내용은 영구 스토리지 단원을 참조하십시오.

CloudShell 네트워크 요구사항

WebSocket

CloudShell은 WebSocket 프로토콜을 기반으로 하는데, 이 프로토콜은 사용자의 웹 브라우저와 AWS 클라우드에 있는 CloudShell 서비스 간 양방향 대화형 통신을 가능하게 합니다. 사설망에서 브라우저를 사용하는 경우, 아마도 프록시 서버와 방화벽을 통해 인터넷 보안 접속이 가능할 것입니다. WebSocket 통신은 일반적으로 문제 없이 프록시 서버를 통과할 수 있습니다. 그러나 프록시 서버에서 WebSocket이 제대로 작동하지 않는 경우도 있습니다. 이런 문제가 발생할 경우, CloudShell 인터페이스에서 Failed to open sessions : Timed out while opening the session 오류로 보고합니다.

이 오류가 반복적으로 발생하는 경우, 프록시 서버 설명서를 참조하여 WebSocket을 허용하는 구성인지 확인하십시오. 아니면 네트워크 시스템 관리자에게 문의하시기 바랍니다.

참고

특정 URL을 허용하여 세부적인 권한을 정의하고자 할 경우, AWS Systems Manager 세션에서 입력 전송 및 출력 수신을 위해 WebSocket 연결을 열 때 사용하는 URL의 일부를 추가할 수 있습니다. (AWS CloudShell 명령은 해당 Systems Manager 세션으로 전송됩니다.)

Systems Manager에서 사용하는 StreamUrl 형식은 wss://ssmmessages.region.amazonaws.com/v1/data-channel/session-id?stream=(input|output)입니다.

리전은 미국 동부(오하이오) 리전의 us-east-2 같이 AWS Systems Manager이 지원하는 AWS 리전의 리전 식별자를 나타냅니다.

세션 ID는 특정 Systems Manager 세션이 정상적으로 시작된 생성되므로 URL 허용 목록을 업데이트할 때만 wss://ssmmessages.region.amazonaws.com 지정이 가능합니다. 자세한 정보는 AWS Systems Manager API 참조의 StartSession 작업에서 확인하십시오.

사전 설치 소프트웨어

참고

AWS CloudShell 개발 환경은 최신 소프트웨어에 액세스할 수 있도록 정기적으로 업데이트되므로 이 설명서에는 특정 버전 번호가 표시하지 않습니다. 그 대신, 설치된 버전을 확인할 수 있는 방법을 알려 드립니다. 설치된 버전을 확인하려면 프로그램명을 입력하고 --version 옵션(예: git --version)을 입력합니다.

사전 설치 쉘
명칭 설명 Version information

Bash

Bash 쉘은 AWS CloudShell용 기본 쉘 애플리케이션입니다.

bash --version

PowerShell(pwsh)

명령줄 인터페이스와 스크립팅 언어 지원을 제공하는 PowerShell은 Microsoft의 .NET 명령 언어 런타임을 기반으로 구축되었습니다. PowerShell은 .NET 객체를 수락하고 반환하는 cmdlets라는 경량 명령을 사용합니다.

pwsh --version

Z 쉘(zsh)

Z 쉘, 또는 zsh은(는) 일명 Bourne 쉘의 확장 버전으로 테마 및 플러그인에 대한 향상된 사용자 지정 지원을 제공합니다.

zsh --version

AWS 명령줄 인터페이스(CLI)

CLI
명칭 설명 Version information

AWS CDK 툴킷 CLI

AWS CDK 툴킷, CLI 명령어 cdk은(는) AWS CDK 앱과 상호 작용하는 기본 도구입니다. 앱을 실행하고, 정의한 애플리케이션 모델 정보를 얻고, AWS CloudFormation 템플릿(AWS CDK에서 생성)을 배포합니다.

자세한 내용은 AWS CDK 툴킷 단원을 참조하십시오.

cdk --version

AWS CLI

AWS CLI은(는) 명령줄에서 여러 AWS 서비스를 관리하고 스크립트를 사용하여 자동화하는 데 사용할 수 있는 명령줄 인터페이스입니다. 자세한 내용은 CloudShell의 CLI에서 AWS 서비스 관리 단원을 참조하십시오.

최신 버전인 AWS CLI 버전 2를 사용하고 있는지 확인하는 방법에 대한 자세한 내용은 홈 디렉터리에 AWS CLI 설치하기에서 확인하십시오.

aws --version

EB CLI

AWS Elastic Beanstalk CLI는 로컬 리포지토리에서 환경 생성, 업데이트 및 모니터링을 단순화하는 대화형 명령을 제공하는 명령줄 인터페이스입니다.

자세한 내용은 AWS Elastic Beanstalk 개발자 안내서에서 Elastic Beanstalk 명령줄 인터페이스(EB CLI) 사용을 참조하십시오.

eb --version

Amazon ECS CLI

Amazon Elastic Container Service(Amazon ECS) 명령줄 인터페이스(CLI)는 로컬 개발 환경에서 클러스터 및 작업 모니터링을 간소화하는 상위 수준 명령을 제공합니다.

자세한 내용은 Amazon Elastic Container Service 개발자 안내서Amazon ECS 명령줄 참조 사용을 참조하십시오.

ecs-cli --version

AWS SAM CLI

AWS SAM CLI는 AWS Serverless Application Model 템플릿 및 애플리케이션에서 작동하는 명령줄 도구입니다. 여러 작업을 수행할 수 있습니다. 여기에는 로컬에서 람다 함수 호출, 서버리스 애플리케이션을 위한 배포 패키지 생성, 서버리스 애플리케이션을AWS 클라우드에 배포하는 방법이 포함됩니다.

자세한 내용은 AWS Serverless Application Model 개발자 가이드AWS SAM CLI 명령 참조를 참조하십시오.

sam --version

AWS Tools for PowerShell AWS Tools for PowerShell은(는) AWS SDK for .NET에서 제공하는 기능에 구축되는 PowerShell 모듈입니다. AWS Tools for PowerShell이(가) 있으면 PowerShell 명령줄에서 AWS 리소스에 대한 작업을 스크립팅할 수 있습니다.

AWS CloudShell은(는) AWS Tools for PowerShell의 모듈화된 버전(AWS.tools)을 사전 설치합니다.

자세한 내용은 AWS Tools for PowerShell 사용 설명서AWS Tools for PowerShell 사용을 참조하십시오.

pwsh --Command ' Get-Module -ListAvailable -Name AWS.Tools.Common'

런타임 및 AWS SDK: Node.js 및 Python 3

런타임 및 AWS SDK
명칭 설명 Version information

Node.js (npm 포함)

Node.js는 비동기 프로그래밍 기술을 보다 쉽게 적용할 수 있도록 설계된 JavaScript 런타임입니다. 자세한 정보는 공식 Node.js 사이트에 있는 설명서에서 확인하십시오.

npm은 JavaScript 모듈의 온라인 레지스트리 액세스를 제공하는 패키지 관리자입니다. 자세한 내용은 공식 npm 사이트의 설명서를 참조하십시오.

  • Node.js: node --version

  • npm: npm --version

Node.js의 JavaScript용 SDK

소프트웨어 개발 키트(SDK)는 Amazon S3, Amazon EC2, DynamoDB, Amazon SWF를 비롯한 AWS 서비스에 JavaScript 객체를 제공하여 코딩을 간소화하는 데 도움이 됩니다. 자세한 정보는 AWS SDK for JavaScript 개발자 안내서를 참조하십시오.

npm -g ls --depth 0 2>/dev/null | grep aws-sdk

Python

Python 3는 쉘 환경에서 사용 가능합니다. 현재 Python 3이 프로그래밍 언어 기본 버전으로 간주됩니다(Python 2 지원은 2020년 1월에 종료). 자세한 정보는 Python 공식 사이트에 있는 설명서에서 확인하십시오.

또한 사전 설치된 pip는 Python용 패키지 설치 프로그램입니다. 이 명령줄 프로그램을 사용하여 Python 패키지 색인과 같은 온라인 색인에서 Python 패키지를 설치할 수 있습니다. 자세한 정보는 Python Packaging Authority 제공 설명서에서 확인하십시오.

  • Python 3: python3 --version

  • pip: pip3 --version

SDK for Python(Boto3)

Boto는 Python 개발자가 Amazon EC2, Amazon S3처럼 AWS 서비스의 생성, 구성, 관리 시 사용하는 소프트웨어 개발 키트(SDK)입니다. SDK는 사용법이 쉽고, 객체 지향 API와 하위 수준 AWS 서비스 액세스를 자랑합니다.

자세한 내용은Boto3 설명서를 참조하십시오.

pip3 list | grep boto3

개발 도구 및 쉘 유틸리티

개발 도구 및 쉘 유틸리티
명칭 설명 Version information

bash-completion

bash-completion은 Tab 키를 눌러 부분적으로 입력된 명령이나 인수를 자동으로 완성할 수 있는 쉘 함수 모음입니다. bash-completion이 지원하는 패키지는 /usr/share/bash-completion/completions에서 찾을 수 있습니다.

패키지 명령에 대한 자동 완성을 설정하려면 프로그램 파일을 소싱해야 합니다. 예를 들어, Git 명령의 자동 완성을 설정하려면 다음 줄을 .bashrc에 추가하여 AWS CloudShell 세션이 시작될 때마다 기능을 사용할 수 있게 합니다.

source /usr/share/bash-completion/completions/git

사용자 지정 완성 스크립트를 사용하려면 영구 홈 디렉터리($HOME)에 추가하고 .bashrc에서 직접 소싱합니다.

자세한 정보는 GitHub에서 프로젝트 README를 참조하십시오.

dnf info bash-completion

Git용 CodeCommit 유틸리티

git-remote-codecommit은 Git을 확장하여 CodeCommit 리포지토리에서 코드를 푸시하고 끌어오는 간단한 방법을 제공하는 유틸리티입니다. 이는 페더레이션 액세스, ID 공급자 및 임시 자격 증명을 사용한 연결을 지원하는 데 권장되는 방법입니다.

자세한 내용은 AWS CodeCommit 사용 설명서에서 git-remote-codecommit으로 AWS CodeCommit로 HTTPS를 연결하기 위한 설정 단계 를 참조하십시오.

pip3 list | grep git-remote-codecommit

Git

Git는 브랜치 워크플로와 콘텐츠 스테이징을 통해 최신 소프트웨어 개발 방식을 지원하는 분산 버전 제어 시스템입니다. 자세한 정보는 Git 공식 사이트에 있는 설명서에서 확인하십시오.

git --version

iputils

iputils 패키지에는 Linux 네트워킹용 유틸리티가 들어 있습니다. 제공된 유틸리티에 대한 자세한 정보는 GitHub에 있는 iputils 리포지토리에서 확인하십시오.

iputils 도구 예시: arping -V

jq jq 유틸리티는 JSON 형식의 데이터를 구문 분석하여 명령줄 필터로 수정된 출력을 생성합니다. 자세한 정보는 GitHub에서 호스팅 하는 jq 매뉴얼에서 확인하십시오.

jq --version

kubectl

kubectl은 Kubernetes API를 사용하여 Kubernetes 클러스터의 컨트롤 플레인과 통신하는 명령줄 도구입니다.

kubectl --version

make

make 유틸리티는 makefiles으로 작업 세트를 자동화하고 코드 컴파일을 구성합니다. 자세한 내용은 GNU Make 설명서를 참조하십시오.

make --version

man

man 명령은 명령줄 유틸리티 및 도구에 대한 매뉴얼 페이지를 제공합니다. 예를 들어, man ls은(는) 디렉토리 콘텐츠를 나열하는 ls 명령의 매뉴얼 페이지를 반환합니다. 자세한 내용은 man 페이지에 대한 Wikipedia 페이지를 참조하십시오.

man --version

nano nano는 텍스트 기반 인터페이스용의 작고 사용자 친화적인 편집기입니다. 자세한 내용은 GNU 나노 설명서를 참조하십시오.

nano --version

procps

procps는 현재 실행 중인 프로세스를 모니터링하고 중지하는 데 사용하는 시스템 관리 유틸리티입니다. 자세한 정보는 procps로 실행 가능한 프로그램 목록이 수록되어 있는 README 파일에서 확인하십시오.

ps --version

SSH 클라이언트

SSH 클라이언트는 보안 쉘 프로토콜로 원격 컴퓨터와의 암호화된 통신을 합니다. OpenSSH는 사전 설치된 SSH 클라이언트입니다. 자세한 정보는 OpenBSD가 유지관리하는 OpenSSH 사이트에서 확인하십시오.

ssh -V

sudo

sudo 유틸리티가 있으면 다른 사용자(일반적으로 수퍼유저)의 보안 권한으로 프로그램을 실행할 수 있습니다. Sudo는 시스템 관리자로서 애플리케이션을 설치해야 할 때 유용합니다. 자세한 정보는 Sudo 매뉴얼에서 확인하십시오.

sudo --version

tar

tar는 여러 파일을 단일 아카이브 파일(tarball)로 그룹화할 때 사용하는 명령줄 유틸리티입니다. 자세한 내용은 GNU 타르 설명서를 참조하십시오.

tar --version

tmux

tmux는 여러 창에서 여러 프로그램을 동시에 실행할 때 사용하는 터미널 멀티플렉서입니다. 자세한 정보는 tmux를 간단하게 소개하는 내용의 블로그에서 확인하십시오.

tmux -V

unzip

자세한 정보는 zip/unzip에서 확인하십시오.
vim

vim은 텍스트 기반 인터페이스를 통해 상호 작용할 수 있는 사용자 지정 가능한 편집기입니다. 자세한 내용은 vim.org에서 제공되는 설명서 리소스를 참조하십시오.

vim --version

wget

wget은 명령줄의 엔드포인트로 지정된 웹 서버에서 콘텐츠를 검색할 때 사용하는 컴퓨터 프로그램입니다. 자세한 내용은 GNU Wget 설명서를 참조하십시오.

wget --version

zip/unzip

zip/unzip 유틸리티는 데이터 손실 없이 무손실 데이터 압축을 제공하는 아카이브 파일 형식을 사용합니다. zip 명령을 호출하면 파일을 단일 아카이브로 그룹화하고 압축합니다. unzip을 사용하면 아카이브에서 지정된 디렉터리로 파일을 추출합니다.

unzip --version

zip --version

Docker

Docker는 애플리케이션 개발, 배송, 실행을 위한 개방형 플랫폼입니다. Docker를 사용하면 애플리케이션을 인프라와 분리하여 소프트웨어를 빠르게 제공할 수 있습니다. 이를 통해 AWS CloudShell 내부에서 Dockerfile을 빌드하고 CDK를 사용하여 Docker 자산을 빌드할 수 있습니다. Docker에서 지원되는 AWS 리전에 대한 자세한 내용은 AWS CloudShell 지원 AWS 리전을 참조하세요. Docker는 환경에서 공간이 제한적이라는 점에 유의해야 합니다. 개별 이미지가 크거나 기존 Docker 이미지가 너무 많으면 문제가 발생할 수 있습니다. Docker에 대한 자세한 내용은 Docker 설명서 가이드를 참조하세요.

docker --version

홈 디렉터리에 AWS CLI 설치하기

CloudShell 환경에 사전 설치된 다른 소프트웨어와 마찬가지로 AWS CLI 도구는 예정된 업그레이드 및 보안 패치를 통해 자동 업데이트됩니다. AWS CLI이(가) 최신 버전임을 확인하기 위해 쉘의 홈 디렉터리에서 도구 수동 설치를 선택할 수 있습니다.

중요

홈 디렉터리에서 AWS CLI의 사본을 수동으로 설치해야 다음에 CloudShell 세션을 시작할 때 사용할 수 있습니다. 수동 설치가 필요한 이유는 $HOME 외부 디렉터리에 추가된 파일이 쉘 세션 종료 시 삭제되기 때문입니다. 또한 AWS CLI 복사본 설치 후에는 자동으로 업데이트되지 않습니다. 다시 말해, 업데이트와 보안 패치 관리는 사용자의 책임입니다.

AWS 공동 책임 모델AWS CloudShell 데이터 보호에 대한 자세한 내용은 을(를) 참조하십시오.

AWS CLI을(를) 설치하려면
  1. CloudShell 명령줄에서 curl 명령으로 쉘에 설치된 AWS CLI의 압축 사본을 전송합니다.

    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  2. 폴더의 압축을 풉니다.

    unzip awscliv2.zip
  3. 도구를 지정 폴더에 추가하려면 AWS CLI 설치 프로그램을 실행합니다.

    sudo ./aws/install --install-dir /home/cloudshell-user/usr/local/aws-cli --bin-dir /home/cloudshell-user/usr/local/bin

    정상적으로 설치되면 명령줄에 다음 메시지가 표시됩니다.

    You can now run: /home/cloudshell-user/usr/local/bin/aws --version
  4. PATH 환경 변수도 업데이트하면 aws 명령을 실행할 때 도구 설치 경로를 지정하지 않아도 되므로 편리합니다.

    export PATH=/home/cloudshell-user/usr/local/bin:$PATH
    참고

    PATH 변경을 취소하면 지정된 경로가 없는 aws 명령에는 기본적으로 AWS CLI의 사전 설치된 버전이 사용됩니다.

쉘 환경에 타사 소프트웨어 설치

참고

공동 보안 책임 모델을 검토한 다음 AWS CloudShell 컴퓨팅 환경에 타사 애플리케이션을 설치할 것을 권장합니다.

기본적으로 전체 AWS CloudShell 사용자에게는 sudo 권한이 있습니다. 따라서 sudo 명령으로 쉘의 컴퓨팅 환경에서 아직 사용할 수 없는 소프트웨어를 설치할 수 있습니다. 예를 들어, DNF 패키지 관리 유틸리티와 함께 sudo를 사용하여 cowsay를 설치하면. 다음과 같은 메시지가 포함된 소의 ASCII 아트 사진이 생성됩니다.

sudo dnf install cowsay

그리고 echo "Welcome to AWS CloudShell" | cowsay을(를) 입력하면 새로 설치된 프로그램이 열립니다.

중요

디렉터리에 있는 dnf 설치 프로그램과 같은 패키지 관리 유틸리티(예: /usr/bin)는 쉘 세션 종료 시 재생됩니다. 즉 세션별로 추가 소프트웨어가 설치되고 사용됩니다.

스크립트로 쉘 수정

기본 쉘 환경을 수정하려면 쉘 환경이 시작될 때마다 실행되는 쉘 스크립트를 편집해야 합니다. .bashrc 스크립트는 기본 bash 쉘이 시작될 때마다 실행됩니다.

주의

.bashrc 파일을 잘못 수정하면 이후에 쉘 환경에 액세스하지 못할 수 있습니다. 편집하기 전 파일 사본을 만들어 두는 것이 좋습니다. .bashrc 편집 시 쉘을 두 개 열어 위험을 줄일 수도 있습니다. 그러면 한 쉘에서 액세스 권한을 잃더라도 다른 쉘에는 계속 로그인한 상태이므로 변경 내용을 롤백할 수 있습니다.

.bashrc 또는 다른 파일을 잘못 수정하여 액세스 권한을 잃은 경우, 홈 디렉터리 삭제를 통해 AWS CloudShell을(를) 기본 설정으로 복원시키면 됩니다.

이 절차에서는 쉘 환경이 Z 쉘 실행으로 자동 전환되도록 .bashrc 스크립트를 수정합니다.

  1. 텍스트 편집기(예: Vim)로 .bashrc을(를) 엽니다.

    vim .bashrc
  2. 편집기 인터페이스에서 I 키를 눌러 편집을 시작하고 다음을 추가합니다.

    zsh
  3. 종료하고 편집한 .bashrc 파일을 저장하려면 Esc 키를 눌러 Vim 명령 모드로 전환하고 다음을 입력합니다.

    :wq

  4. source 명령으로 .bashrc 파일을 재로드합니다.

    source .bashrc

    명령줄 인터페이스를 다시 사용할 수 있게 되면 프롬프트 기호가 %로 바뀌어 현재 Z 쉘을 사용하고 있음을 나타냅니다.