aws-cliaws-cli 시작하기


비고

기술

AWS 명령 행 인터페이스 (CLI)는 AWS 서비스를 관리하기위한 통합 도구입니다. 하나의 도구 만 다운로드하여 구성하면 명령 줄에서 여러 AWS 서비스를 제어하고 스크립트를 통해 자동화 할 수 있습니다.

AWS CLI는 Amazon S3에서 효율적으로 파일을 전송하기위한 새로운 간단한 파일 명령 세트를 제공합니다.

지원 서비스

AWS 명령 행 인터페이스에서 사용할 수있는 서비스 목록은 AWS CLI 명령 참조 서에서 사용 가능한 서비스 를 참조하십시오.

GitHub의 AWS 명령 행 인터페이스

https://github.com/aws/aws-cli 프로젝트의 GitHub에서 AWS CLI의 소스 코드를보고 포크 할 수 있습니다.

버전

번역 출시일
1.10.38 2016-06-14
1.10.35 2016-06-03
1.10.33 2016-05-25
1.10.30 2016-05-18

AWS CLI 치트 시트 - 모든 CLI 명령 목록

설정

AWS CLI 설치

AWS CLI는 AWS 리소스를 관리하기위한 일반적인 CLI 도구입니다. 이 단일 도구를 사용하여 모든 aws 리소스를 관리 할 수 ​​있습니다.

sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure

배쉬 원 라이너

cat <file> # output a file
tee # split output into a file
cut -f 2 # print the 2nd column, per line
sed -n '5{p;q}' # print the 5th line in a file
sed 1d # print all lines, except the first
tail -n +2 # print all lines, starting on the 2nd
head -n 5 # print the first 5 lines
tail -n 5 # print the last 5 lines

expand # convert tabs to 4 spaces
unexpand -a # convert 4 spaces to tabs
wc # word count
tr ' ' \\t # translate / convert characters to other characters

sort # sort data
uniq # show only unique entries
paste # combine rows of text, by line
join # combine rows of text, by initial column value




Cloudtrail - 로깅 및 감사

http://docs.aws.amazon.com/cli/latest/reference/cloudtrail/ 5 전체 트레일, 리소스 수준 권한 지원

# list all trails
aws cloudtrail describe-trails

# list all S3 buckets
aws s3 ls

# create a new trail
aws cloudtrail create-subscription \
    --name awslog \
    --s3-new-bucket awslog2016

# list the names of all trails
aws cloudtrail describe-trails --output text | cut -f 8

# get the status of a trail
aws cloudtrail get-trail-status \
    --name awslog

# delete a trail
aws cloudtrail delete-trail \
    --name awslog

# delete the S3 bucket of a trail
aws s3 rb s3://awslog2016 --force

# add tags to a trail, up to 10 tags
aws cloudtrail add-tags \
    --resource-id awslog \
    --tags-list "Key=log-type,Value=all"

# list the tags of a trail
aws cloudtrail list-tags \
    --resource-id-list 

# remove a tag from a trail
aws cloudtrail remove-tags \
    --resource-id awslog \
    --tags-list "Key=log-type,Value=all"




나는

사용자

https://blogs.aws.amazon.com/security/post/Tx15CIT22V4J8RP/How-to-rotate-access-keys-for-IAM-users http://docs.aws.amazon.com/IAM/latest/UserGuide /reference_iam-limits.html 제한 = 5000 명의 사용자, 100 개의 그룹, 250 개의 역할, 2 개의 액세스 키 / 사용자

http://docs.aws.amazon.com/cli/latest/reference/iam/index.html

# list all user's info
aws iam list-users

# list all user's usernames
aws iam list-users --output text | cut -f 6

# list current user's info
aws iam get-user

# list current user's access keys
aws iam list-access-keys

# crate new user
aws iam create-user \
    --user-name aws-admin2

# create multiple new users, from a file
allUsers=$(cat ./user-names.txt)
for userName in $allUsers; do
    aws iam create-user \
        --user-name $userName
done

# list all users
aws iam list-users --no-paginate

# get a specific user's info
aws iam get-user \
    --user-name aws-admin2

# delete one user
aws iam delete-user \
    --user-name aws-admin2

# delete all users
# allUsers=$(aws iam list-users --output text | cut -f 6);
allUsers=$(cat ./user-names.txt)
for userName in $allUsers; do
    aws iam delete-user \
        --user-name $userName
done

비밀번호 정책

http://docs.aws.amazon.com/cli/latest/reference/iam/

# list policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html
aws iam get-account-password-policy

# set policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html
aws iam update-account-password-policy \
    --minimum-password-length 12 \
    --require-symbols \
    --require-numbers \
    --require-uppercase-characters \
    --require-lowercase-characters \
    --allow-users-to-change-password

# delete policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html
aws iam delete-account-password-policy

액세스 키

http://docs.aws.amazon.com/cli/latest/reference/iam/

# list all access keys
aws iam list-access-keys

# list access keys of a specific user
aws iam list-access-keys \
    --user-name aws-admin2

# create a new access key
aws iam create-access-key \
    --user-name aws-admin2 \
    --output text | tee aws-admin2.txt

# list last access time of an access key
aws iam get-access-key-last-used \
    --access-key-id AKIAINA6AJZY4EXAMPLE

# deactivate an acccss key
aws iam update-access-key \
    --access-key-id AKIAI44QH8DHBEXAMPLE \
    --status Inactive \
    --user-name aws-admin2

# delete an access key
aws iam delete-access-key \
    --access-key-id AKIAI44QH8DHBEXAMPLE \
    --user-name aws-admin2

그룹, 정책, 관리되는 정책

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html http://docs.aws.amazon.com/cli/latest/reference/iam/

# list all groups
aws iam list-groups

# create a group
aws iam create-group --group-name FullAdmins

# delete a group
aws iam delete-group \
    --group-name FullAdmins

# list all policies
aws iam list-policies

# get a specific policy
aws iam get-policy \
    --policy-arn <value>

# list all users, groups, and roles, for a given policy
aws iam list-entities-for-policy \
    --policy-arn <value>

# list policies, for a given group
aws iam list-attached-group-policies \
    --group-name FullAdmins

# add a policy to a group
aws iam attach-group-policy \
    --group-name FullAdmins \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

# add a user to a group
aws iam add-user-to-group \
    --group-name FullAdmins \
    --user-name aws-admin2

# list users, for a given group
aws iam get-group \
    --group-name FullAdmins

# list groups, for a given user
aws iam list-groups-for-user \
    --user-name aws-admin2

# remove a user from a group
aws iam remove-user-from-group \
    --group-name FullAdmins \
    --user-name aws-admin2

# remove a policy from a group
aws iam detach-group-policy \
    --group-name FullAdmins \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

# delete a group
aws iam delete-group \
    --group-name FullAdmins




EC2

키 쌍

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

# list all keypairs
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html
aws ec2 describe-key-pairs

# create a keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html
aws ec2 create-key-pair \
    --key-name <value>

# create a new private / public keypair, using RSA 2048-bit
ssh-keygen -t rsa -b 2048

# import an existing keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html
aws ec2 import-key-pair \
    --key-name keyname_test \
    --public-key-material file:///home/apollo/id_rsa.pub

# delete a keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html
aws ec2 delete-key-pair \
    --key-name <value>

보안 그룹

http://docs.aws.amazon.com/cli/latest/reference/ec2/index.html

# list all security groups
aws ec2 describe-security-groups

# create a security group
aws ec2 create-security-group \
    --vpc-id vpc-1a2b3c4d \
    --group-name web-access \
    --description "web access"

# list details about a securty group
aws ec2 describe-security-groups \
    --group-id sg-0000000

# open port 80, for everyone
aws ec2 authorize-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/24

# get my public ip
my_ip=$(dig +short myip.opendns.com @resolver1.opendns.com);
echo $my_ip

# open port 22, just for my ip
aws ec2 authorize-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr $my_ip/24

# remove a firewall rule from a group
aws ec2 revoke-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/24

# delete a security group
aws ec2 delete-security-group \
    --group-id sg-00000000

인스턴스

http://docs.aws.amazon.com/cli/latest/reference/ec2/index.html

# list all instances (running, and not running)
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html
aws ec2 describe-instances

# create a new instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html
aws ec2 run-instances \
    --image-id ami-f0e7d19a \    
    --instance-type t2.micro \
    --security-group-ids sg-00000000 \
    --dry-run

# stop an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html
aws ec2 terminate-instances \
    --instance-ids <instance_id>

# list status of all instances
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html
aws ec2 describe-instance-status

# list status of a specific instance
aws ec2 describe-instance-status \
    --instance-ids <instance_id>

태그

# list the tags of an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html
aws ec2 describe-tags

# add a tag to an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html
aws ec2 create-tags \
    --resources "ami-1a2b3c4d" \
    --tags Key=name,Value=debian

# delete a tag on an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-tags.html
aws ec2 delete-tags \
    --resources "ami-1a2b3c4d" \
    --tags Key=Name,Value=




Cloudwatch

로그 그룹

http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html http://docs.aws.amazon.com/cli/latest/reference/logs/index.html#cli-aws-logs

그룹을 만들자.

http://docs.aws.amazon.com/cli/latest/reference/logs/create-log-group.html

aws logs create-log-group \
    --log-group-name "DefaultGroup"
모든 로그 그룹 나열

http://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-groups.html

aws logs describe-log-groups

aws logs describe-log-groups \
    --log-group-name-prefix "Default"
그룹을 지우다.

http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html

aws logs delete-log-group \
    --log-group-name "DefaultGroup"

스트림 기록

# Log group names can be between 1 and 512 characters long. Allowed
# characters include a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen),
# '/' (forward slash), and '.' (period).

# create a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/create-log-stream.html
aws logs create-log-stream \
    --log-group-name "DefaultGroup" \
    --log-stream-name "syslog"

# list details on a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-streams.html
aws logs describe-log-streams \
    --log-group-name "syslog"

aws logs describe-log-streams \
    --log-stream-name-prefix "syslog"

# delete a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-stream.html
aws logs delete-log-stream \
    --log-group-name "DefaultGroup" \
    --log-stream-name "Default Stream"

배쉬와 함께 우분투를위한 AWS 완성 자

명령의 자동 완성을 위해 다음 유틸리티를 사용할 수 있습니다.

$ which aws_completer
/usr/bin/aws_completer

$ complete -C '/usr/bin/aws_completer' aws
 

장래의 쉘 세션에서는 ~ / .bashrc에 이것을 추가하는 것을 고려해주세요.

$ echo "complete -C '/usr/bin/aws_completer' aws" >> ~/.bashrc
 

확인하려면 다음을 입력하십시오.

$ aws ec
 

[TAB] 키를 누르면 자동으로 2가 추가됩니다 :

$ aws ec2
 

새 프로필 만들기

myprofile 이라는 이름으로 새 자격 증명 프로필을 설정하려면 다음을 수행하십시오.

$ aws configure --profile myprofile
AWS Access Key ID [None]: ACCESSKEY
AWS Secret Access Key [None]: SECRETKEY
Default region name [None]: REGIONNAME
Default output format [None]: text | table | json

AWS 액세스 키 ID 및 비밀번호의 경우 AWS 콘솔에서 IAM 사용자를 생성하고 키를 생성하십시오.

Region은 eu-west-1 또는 us-east-1 형식의 명령에 대한 기본 영역입니다.

기본 출력 형식은 text , table 또는 json 일 수 있습니다.

이제 --profile 옵션을 사용하여 다른 명령에서 프로파일 이름을 사용할 수 있습니다. 예 :

$ aws ec2 describe-instances --profile myprofile

다른 언어의 AWS 라이브러리 (예 : Ruby의 경우 aws-sdk , Python의 경우 boto3 )에는이 방법으로 작성한 프로파일을 사용할 수있는 옵션이 있습니다. 예를 들어, boto3 새로운 세션을 생성하는 것은 boto3.Session(profile_name:'myprofile') 과 같이 할 수 있으며, 프로파일을 위해 생성 한 자격증 명을 사용합니다.

aws-cli 구성에 대한 자세한 내용은 ~/.aws/config~/.aws/credentials (linux 및 mac-os)에서 찾을 수 있습니다. 이 세부 정보는 거기에서 수동으로 편집 할 수 있습니다.

설치 및 설정

사용중인 운영 체제 및 환경에 따라 시스템에 AWS CLI를 설치하는 여러 가지 방법이 있습니다.

Microsoft Windows - MSI 설치 프로그램을 사용하십시오. Linux, OS X 또는 Unix에서는 pip (Python 소프트웨어의 패키지 관리자)를 사용하거나 번들로 제공되는 설치 프로그램을 사용하여 수동으로 설치하십시오.

pip를 사용하여 설치 :

파이썬이 설치되어 있어야합니다 (버전 2, 2.6.5 +, 3 또는 3.3+). 확인

python --version

pip --help
 

이 두 가지가 모두 설치 되었다면 다음 명령을 사용하여 aws cli를 설치하십시오.

sudo pip install awscli
 

Windows에 설치 AWS CLI는 Microsoft Windows XP 이상에서 지원됩니다. Windows 사용자의 경우 MSI 설치 패키지는 다른 선행 조건을 설치하지 않고 AWS CLI를 설치하는 친숙하고 편리한 방법을 제공합니다. Windows 사용자는 이미 패키지 관리를 위해 pip를 사용하지 않는 한 MSI 설치 프로그램을 사용해야합니다.

다운로드 한 MSI 설치 프로그램을 실행하십시오. 나타나는 지시 사항을 따르십시오.

번들 된 설치 프로그램을 사용하여 AWS CLI를 설치하려면

선수 과목 :

  • Linux, OS X 또는 Unix
  • Python 2 버전 2.6.5 이상 또는 Python 3 버전 3.3 이상
  1. wget 또는 curl을 사용하여 AWS CLI 번들로 된 설치 프로그램을 다운로드하십시오.

  2. 패키지의 압축을 풉니 다.

  3. 설치 실행 파일을 실행하십시오.

Linux 및 OS X에서 각 단계에 해당하는 세 가지 명령은 다음과 같습니다.

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
 

OS X에서 HomeBrew를 사용하여 설치 :

OS X을위한 또 다른 옵션

brew install awscli
 

AWS CLI 설치 테스트

도움말 파일을보고 CLI가 올바르게 설치되었는지 확인하십시오. 터미널, 쉘 또는 명령 프롬프트를 열고 aws help를 입력 한 다음 Enter 키를 누릅니다.

$ aws help
 

AWS CLI 구성

설치가 끝나면 구성해야합니다. aws에서 계정을 만들 때 얻게되는 액세스 키와 비밀 키가 필요합니다. 기본 지역 이름 과 기본 출력 유형 (text | table | json)을 지정할 수도 있습니다.

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
 

CLI 도구 업데이트

Amazon은 주기적으로 AWS Tool의 새 버전을 출시합니다. Python Pip 도구를 사용하여 도구를 설치 한 경우 다음 명령은 원격 저장소에 업데이트가 있는지 확인하고이를 로컬 시스템에 적용합니다.

$ pip install awscli --upgrade
 

S3 버킷 나열

aws s3 ls
 

명명 된 프로필 사용

aws --profile myprofile s3 ls
 

사람이 읽을 수있는 형식의 크기와 마지막에 버킷 속성 요약을 포함하여 폴더의 객체를 포함하여 버킷의 모든 객체를 나열합니다.

aws s3 ls --recursive --summarize --human-readable s3://<bucket_name>/
 

aws cli 명령 사용

aws cli를 사용하는 구문은 다음과 같습니다.

aws [options] <command> <subcommand> [parameters]
 

'ec2'명령과 'describe-instances'부속 명령을 사용하는 몇 가지 예는 다음과 같습니다.

aws ec2 describe-instances

aws ec2 describe-instances --instance-ids <your-id>
 

가짜 ID를 사용한 예 :

aws ec2 describe-instances --instance-ids i-c71r246a