メモ > サーバ > サービス: AWS > AWS CLI(Amazon Linux で使用する場合)
■AWS CLI(Amazon Linux で使用する場合)
AWSのサービスをコマンドラインで操作できる
Amazon Linux にはプリインストールされている
$ aws --version … CLIのバージョンを確認
aws-cli/1.10.56 Python/2.7.10 Linux/4.4.16-27.56.amzn1.x86_64 botocore/1.4.46
$ aws ec2 describe-security-groups … CLIの設定を行っていないので実行できない
You must specify a region. You can also configure your region by running "aws configure".
$ aws configure … CLIの設定を行う
AWS Access Key ID [None]: XXXXX … アクセスキーを入力
AWS Secret Access Key [None]: YYYYY … シークレットアクセスキーを入力
Default region name [None]: ap-northeast-1 … デフォルトで使用するリージョンを入力
Default output format [None]: text … 実行結果の出力形式を入力(「text」「json」「table」のいずれか)
$ aws ec2 describe-security-groups … EC2を一覧表示(CLIの設定を行ったので実行できる)
SECURITYGROUPS default VPC security group sg-30240955 default 123456789012 vpc-f11d9094
IPPERMISSIONS -1
USERIDGROUPPAIRS sg-30240955 123456789012
IPPERMISSIONSEGRESS -1
IPRANGES 0.0.0.0/0
〜略〜
SECURITYGROUPS for ssh. sg-5e270a3b ssh 123456789012 vpc-f11d9094
IPPERMISSIONS 10022 tcp 10022
IPRANGES 203.0.113.9/32
IPPERMISSIONS 22 tcp 22
IPRANGES 172.31.0.0/16
IPPERMISSIONSEGRESS -1
IPRANGES 0.0.0.0/0
$ ll ~/.aws/ … 設定ファイルを確認
合計 8
-rw------- 1 ec2-user ec2-user 48 8月 25 18:19 config … リージョンと出力形式の設定が保存されている
-rw------- 1 ec2-user ec2-user 116 8月 25 18:19 credentials … アクセスキーの設定が保存されている
■オプション指定例(条件指定&絞り込み)
$ aws ec2 describe-instances … EC2を一覧表示
$ aws ec2 describe-instances --filters "Name=private-ip-address,Values=10.0.0.150"
… filtersで検索条件を指定
$ aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId'
… queryで出力結果を絞り込み(インスタンスIDを表示)
$ aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,PrivateIpAddress]'
… queryで出力結果を絞り込み(インスタンスIDとIPアドレスを表示)
■S3を操作
$ aws s3 ls refirio/images/ … S3の特定フォルダの内容を一覧表示
2015-10-30 20:20:01 0
2017-11-16 13:21:40 5115 photo01.jpg
2015-10-30 20:21:40 8853 photo02.jpg
2017-11-16 14:12:57 12008 photo03.jpg
$ aws s3 cp s3://refirio/test/ /home/ec2-user/s3/test/ --recursive … S3の特定フォルダの内容をダウンロード
S3バケットにアップロードしたファイルを一括ダウンロードする方法 - *いしのなかにいる*
https://teleporter.hateblo.jp/entry/bulk-download-from-s3
$ aws s3 sync /home/ec2-user/sync_test s3://refirio/sync_test/ --delete … S3の特定フォルダの内容と同期
「aws s3 sync」を実行すると、「/home/ec2-user/sync_test」の内容が正しいとして「s3://refirio/sync_test/」の内容が同期される
つまりEC2側にファイルを作成して「aws s3 sync」を実行するとS3側にファイルが作成され、
S3側にファイルを作成して「aws s3 sync」を実行するとS3側のファイルは削除される
MySQLを毎日バックアップして、S3に同期するシェルスクリプト - Qiita
https://qiita.com/taiko19xx/items/215b9943c8aa0d8edcf6
「aws s3 sync」でバックアップの仕組みを作る場合、うっかりファイルを削除するとそれも同期されてしまう
S3側でバージョン管理を有効にしておく必要はありそうだが、永久に残らないようにライフサイクルの設定が必要
今さらだけどS3のバージョニングを試してみた。 - Qiita
https://qiita.com/kooohei/items/8775b380632e8b7940a3
今さらだけどS3のライフサイクルを試してみた。 - Qiita
https://qiita.com/kooohei/items/645deeb08cd1a6f4948a#_reference-f9f014ed309e5ecc614a
以下のようにバケットを指定することで、バケット間で直接コピーもできるみたい(未検証)
cpコマンドでも同様にできるか、なども含めて要検証
$ aws s3 sync s3://DOC-EXAMPLE-BUCKET-SOURCE s3://DOC-EXAMPLE-BUCKET-TARGET
Amazon S3 バケット間でオブジェクトをコピーする
https://aws.amazon.com/jp/premiumsupport/knowledge-center/move-objects-s3-bucket/