ユーザ用ツール

サイト用ツール


aws:awscli:index.html

AWS

AWS CLIの使い方

概要


事前準備

IAMユーザ

「プログラムによるアクセス」をONにすると、AWS API、CLI、SDK などので利用する 「アクセスキー ID」 と 「シークレットアクセスキー」が発行されます。

詳細は、AWS IAMで、ユーザ管理を確認してください。


AWS CLIのインストール

Amazon Linuxではデフォルトでコマンドが使えます。
MacやWindowsやCentOSやUbuntuの場合には、AWS CLIをインストールする必要があります。

CentOS

# yum install epel-release
# yum install python-pip
# pip install awscli


jqコマンドのインストール

jqコマンドは、JSON形式を整えるコマンドです。
また、JSON形式の表示をカラー表示してくれます。

aws ec2 describe-vpcs --output json | jq .

Amazon Linux, CentOSへインストール

# yum install jq


AWS CLIのコンフィグ設定

AWS CLIのコンフィグ設定

$ aws configure
AWS Access Key ID [None]:  xxxxxxxxxxxxx
AWS Secret Access Key [None]:  xxxxxxxxxxxxx
Default region name [None]: ap-northeast-1    <-  EC2インスタンスが置かれているリージョン
Default output format [None]: json            <-   json, table, textのどれかを入力
$aws configure list


AWS CLIのコンフィグ設定の確認

$ ~/.aws/credentials
[default]
aws_access_key_id = xxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxx
$ cat ~/.aws/config
[default]
region = ap-northeast-1
output = json


一時的に設定

export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXX
export AWS_DEFUAULT_REGION=ap-northeast-1
export AWS_DEFUAULT_OUTPUT=text


AWS CLI実行例

AWS CLIコマンドオプション

$ aws --region ap-northeast-1  COMMAND
$ aws --output json  COMMAND
$ aws --output text  COMMAND
$ aws --output table  COMMAND
aws --debug  COMMAND


インターネット接続できない環境でAWS CLIを利用

インターネット接続できない環境の場合、エンドポイントを指定する必要があります。
エンドポイントの作り方は、AWS VPC エンドポイントとは。設定手順・利用手順 参照

#ec2のエンドポイントを指定する例
aws ec2 describe-instances --endpoint-url https://vpce-xxxxxxxxxx.ec2.ap-northeast-1.vpce.amazonaws.com

※サービスデフォルトのDNSを利用していて、エンドポイントを作る際に「プライベートDNS名を有効にする」にした場合、
--endpoint-url https://vpce-xxxxxxxxxx.ec2.ap-northeast-1.vpce.amazonaws.com は不要になります。


AWS CLIで指定できるリージョンの確認

aws ec2 describe-regions --output table


AWS CLIで、IAM操作

aws iam list-users IAMユーザーの確認
aws iam list-groups IAMグループの確認


AWS CLIで、VPC操作

VPC

VPCの確認
aws ec2 describe-vpcs
aws ec2 describe-vpcs --vpc-ids vpc-xxxxxxx
VPCの作成
aws ec2 create-vpc --cidr-block 10.0.0.0/16
VPC削除
aws ec2 delete-vpc --vpc-id vpc-xxxxxxx
VPCタグ追加
aws ec2 create-tags --resources vpc-xxxxxxx --tags Key=Name,Value=VPC-TEST


サブネット

サブネットの作成
aws ec2 create-subnet --vpc-id vpc-xxxxxxx --cidr-block 10.0.1.0/24 --availability-zone ap-northeast-1a
サブネットの削除
aws ec2 delete-subnet --subnet-id subnet-xxxxxxx


AWS CLIで、EC2操作

インスタンスの情報を取得

#リージョン内で稼働している全インスタンスの情報を取得
aws ec2 describe-instances
インスタンスIDを指定して取得
aws ec2 describe-instances --instance-ids ${instance-id}
aws ec2 describe-instances --instance-ids ${instance-id} ${instance-id-2} ${instance-id-3}
filter指定
#インスタンスの状態が「running」のもののみ取得
aws ec2 describe-instances --filter "Name=instance-state-name,Values=running"
「pending」「shutting-down」「terminated」「stopping」「stopped」

aws ec2 describe-instances --filter "Name=instance-type,Values=m3.xlarge"

aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" "Name=instance-type,Values=m3.xlarge"

#タグを条件に指定
aws ec2 describe-instances --filter "Name=tag:Name,Values=web"
jqコマンドで絞込
#インスタンスIDのみ取得
aws ec2 describe-instances | jq '.Reservations[].Instances[].InstanceId'

#インスタンスID、インスタンスタイプ、プライベートIPを取得
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, InstanceType, PrivateIpAddress}'

#インスタンスID、プライベートIP、タグ名(Key=Name)を取得
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, PrivateIpAddress, InstanceName: (.Tags[] | select(.Key=="Name").Value)}'


AWS CLIで、S3操作

aws s3 ls バケットの一覧を表示
aws s3 ls s3://バケット名/パス バケットの内容を表示
aws s3 mb s3://バケット名
aws --region リージョン s3 mb s3://バケット名
aws --region ap-northeast-1 s3 mb s3://バケット名
バケットを作成
aws s3 rb s3://バケット名 バケットを削除
(空でない場合は削除されない)
aws s3 rb s3://バケット名 --force バケットを削除
(空でなくても削除)
aws s3 sync フォルダ s3://バケット名/パス バケットの内容をローカルのフォルダと同期
(追加・更新のみで削除されない)
aws s3 sync フォルダ s3://バケット名/パス --delete バケットの内容をローカルのフォルダと同期
(削除もされる)
aws s3 cp ファイルパス s3://バケット名/パス ローカルのファイルをバケットにコピー
aws s3 mv ファイルパス s3://バケット名/パス ローカルのファイルをバケットに移動
aws s3 rm s3://バケット名/ファイルパス バケットのファイルを削除
aws s3 rm s3://バケット名/フォルダパス --recursive バケットのフォルダを削除
aws s3 sync /xxxx/dir/  s3://test-bucket/dir1/ --exclude "*" --include "*.txt"


参考

aws/awscli/index.html.txt · 最終更新: 2021/06/11 17:24 by kurihara

ページ用ツール