-AWSをコマンドから管理する。cloudwatchにはJavaのツールもあるようだが、シンプルに実行できるPython版CLIで実施 #contents *IAMユーザーの作成とキーの配布 [#q2e8a6c9] ROOTアカウントをそのまま使うのは危険なので、適切な権限を与える。セキュリティキーはコンソールから簡単に再発行できるので、定期的に使い捨てるように! *aws-cliのインストール [#gca3e532] **インストール [#z8e72655] -EPELリポジトリをインストールしてから、python-pipインストール rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm yum --enablerepo=epel search python-pip pip install awscli **コード補間 [#p5802613] -以下のコマンドを打ち込むとコード補間が可能になる。 complete -C aws_completer aws **設定 [#m8f86b58] -利用開始前にIAMのキーとパスワードと地域を設定する。デフォルトのフォーマットはJSONなのでjqと合わせると操作しやすい。 aws configure [--profile=任意の名前] aws configure AWS Access Key ID [None]: IAMのアクセスキー AWS Secret Access Key [None]: IAMのアクセスキー Default region name [None]: ap-northeast-1 Default output format [None]: *各種操作 [#c519585a] **s3 [#yce0458b] |バケット一覧|aws s3 ls| |ローカルファイルをs3へ|aws s3 cp pukiwiki-1_5_0_utf8.zip s3://バケット名/パス/| |s3ファイルをローカルへ|aws s3 cp s3://バケット名/パス/ファイル名 ローカルファイル名| |ミラーリングs3からローカルへ| aws s3 sync s3://バケット名/パス /var/tmp/s3temp/| |ミラーリングローカルからs3へ| aws s3 sync /var/tmp/s3_temp s3://バケット名/パス| **EC2 [#g4e840ae] |aws ec2 describe-instances|一覧| |aws ec2 start-instances --instance-ids インスタンスID|起動| |aws ec2 stop-instances --instance-ids インスタンスID|終了| |aws ec2 terminate-instances --instance-ids インスタンスID|削除までできてしまう!| オプションで絞ることが可能。running or stopped or terminatedなど aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" aws ec2 describe-instances --instance-ids インスタンスID **Snapshot [#e7fe5692] ***注意点 [#u1221d8f] rootデバイスは停止必須とのこと http://docs.aws.amazon.com/cli/latest/reference/ec2/create-snapshot.html ***実際のコマンド [#afc130a8] #--dry-runを付けて権限などの確認をしてから実施。 aws ec2 create-snapshot --volume-id ボリュームID --description "test from cli" aws ec2 create-snapshot --volume-id ボリュームID --description "test from cli" --dry-run #snapshot-idを与えて確認 aws ec2 describe-snapshots --snapshot-ids=上記スナップショットID #削除 aws ec2 delete-snapshot --snapshot-id=snap-47b67c78 **JQを組み合わせて結果を絞る。 [#a5e0459c] -インストール sudo yum install jq -絞り込み。JSONのフォーマットを知らないとダメだが、JQで絞ると後続に渡しやすい。InstanceIdの部分をPbulicIpAddressなどに変えれば任意の情報を得られるぞ aws ec2 describe-instances | jq '.Reservations[].Instances[].InstanceId' -複数項目を並べる。 aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, InstanceType, PublicIpAddress, PrivateIpAddress}' *boto3 [#q8811567] Pythonライブラリ。ansibleでも利用している。 **インストールとキーの設定 [#v6f04011] sudo pip install boto3