// 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents AWS CLIとは、AWSのCommand Line Interface つまりターミナルからAWSを操作するためのツール群です。 -[[AWS コマンドラインインターフェイス | AWS>https://aws.amazon.com/jp/cli/]] $ aws s3 ls s3://nu.mine.kino.hogebucket 2016-11-10 12:46:26 700 hoge2.py とかやってS3をターミナルから操作することが出来ます。便利です。。 **インストール [#z4c0879d] あちなみにMacでやっててOSは El Capitanです $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G1108 $ sudo easy_install pip $ sudo pip install awscli --upgrade --ignore-installed six $ sudo pip install boto3 --upgrade --ignore-installed six $ sudo aws --v $ which aws どうもこのignoreオプションをつけないとエラーが出たっぽい、、。 **環境設定 [#bb785c5d] クライアントにcredential情報を設定するためのコマンドを実行します。 AWS Access Key ID、AWS Secret Access Keyはマネジメントコンソールであらかじめ設定済みと仮定します。 参考 [[Amazon S3 再入門 – AWS IAMでアクセスしてみよう!>https://cloudpack.media/5726]] $ aws configure AWS Access Key ID [****************]: xxxxxxxxxxxxxx ←あらかじめマネジメントコンソールで設定済みの値。 AWS Secret Access Key [****************]: yyyyyyyyyy ←あらかじめマネジメントコンソールで設定済みの値。 Default region name [None]: ap-northeast-1 ← 東京 Default output format [None]: json $ $ ls -lrt ~/.aws/ -rw-r--r-- 1 masatomix staff 118 11 10 12:41 credentials -rw------- 1 masatomix staff 48 11 10 12:41 config $ cat ~/.aws/config [default] output = json region = ap-northeast-1 $ cat ~/.aws/credentials [default] aws_access_key_id = xxxxxxxxxxxxxx aws_secret_access_key = yyyyyyyyyy インストール完了です。コマンドラインからAWSが操作できるようになりました。 **つかってみる。 [#tdfacf3e] $ aws s3 ls ← Bucketの一覧表示 2016-11-08 18:59:46 nu.mine.kino.hogebucket $ aws s3 ls s3://nu.mine.kino.hogebucket --recursive ← 指定したBucketの中身を表示 $ ls -lrt dir1 total 8 -rw-r--r-- 1 masatomix staff 13 11 12 10:31 file1.txt $ aws s3 sync dir1 s3://nu.mine.kino.hogebucket/dir2 upload: dir1/file1.txt to s3://nu.mine.kino.hogebucket/dir2/file1.txt ローカルのdir1ディレクトリと、Bucketのdir2ディレクトリを同期。 $ aws s3 ls s3://nu.mine.kino.hogebucket/ --recursive 2016-11-12 10:33:26 13 dir2/file1.txt ** EC2にもつなげる [#k83bfc7b] $ aws ec2 describe-instances などで、EC2のインスタンス情報がJSON取得できます。jqなどで整形した情報をだしてみるとこんなかんじ。 $ aws ec2 describe-instances | jq \ '.Reservations[].Instances[] | .PublicDnsName, .State, .PublicIpAddress, .PrivateIpAddress,.PrivateDnsName' "ec2-xx-xxx-xxx-xx.ap-northeast-1.compute.amazonaws.com" { "Code": 16, "Name": "running" } "xx.xxx.xxx.xx" "yyy.yy.yy.yy" "ip-yyy-yy-yy-yy.ap-northeast-1.compute.internal" $ aws ec2 describe-instances | jq \ '.Reservations[].Instances[] | .PublicDnsName, .State, .PublicIpAddress, .PrivateIpAddress,.PrivateDnsName' の他に、 $ aws ec2 describe-instances | jq \ '.Reservations[].Instances[] | [.PublicDnsName, .State, .PublicIpAddress, .PrivateIpAddress, .PrivateDnsName]' ってJSON配列で返したり、 $ aws ec2 describe-instances | jq \ '.Reservations[].Instances[] | {PublicDnsName, State, PublicIpAddress, PrivateIpAddress, PrivateDnsName}' って新たなJSONで返すなんて事も可能。 -[[jqを活用してAPIレスポンス等から欲しい情報だけを抽出する【中級編】 | Developers.IO>http://dev.classmethod.jp/tool/road-to-jq-master-apprentice/]] **Node.jsから使う。 [#w1297a6a] $ mkdir asw-sdk-node && cd $_ $ npm init $ npm install --save aws-sdk $ npm install SDKのインストールとかが完了しました。 $ cat index.js "use strict"; var AWS = require('aws-sdk'); AWS.config.update({region: 'ap-northeast-1'}); var ec2 = new AWS.EC2(); ec2.describeInstances( function(err, data) { if (err) { console.log(err, err.stack); } else { for (var index = 0; index < data.Reservations.length; index++){ // var instances = data.Reservations[index].Instances; data.Reservations[index].Instances.forEach( function(instance){ console.log("PublicDnsName: " + instance.PublicDnsName); console.log("State: " + JSON.stringify(instance.State)); console.log("PublicIpAddress: " + instance.PublicIpAddress); console.log("PrivateIpAddress: " + instance.PrivateIpAddress); console.log("PrivateDnsName: " + instance.PrivateDnsName); } ); } } }); と書いてみます。 $ node index.js で先のコマンドラインからとおなじ情報が得られます。 -[[Node.js 内の AWS SDK for JavaScript | AWS>https://aws.amazon.com/jp/sdk-for-node-js/]] ちなみに、AWS_ACCESS_KEY_ID とか AWS_SECRET_ACCESS_KEY などのCredential情報を取得するにはいろいろ方法があります。環境変数からや、自前のJSONファイルから、もしくはCredentialファイル直接((~/.aws/credentials のこと)) などです。これらの方法は下記にまとまっていました。 -[[Setting Credentials in Node.js - AWS SDK for JavaScript>http://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html]] ** CoffeeScriptから使う [#bc048572] Node.jsとほぼ同じなんですがHubotから使おうとして書いたコード。 $ cat hubot-sample.coffee AWS = require('aws-sdk'); module.exports = (robot) -> robot.respond /(サーバ情報)/i, (res) -> AWS.config.update {region: 'ap-northeast-1'} ec2 = new AWS.EC2() # ec2 = new AWS.EC2( # { # accessKeyId: 'xxx', # secretAccessKey: 'xxx', # region: 'ap-northeast-1' # } # ); ec2.describeInstances (err,data) -> if err console.log err, err.stack else for reservation in data.Reservations for instance in reservation.Instances console.log "PublicDnsName: " + instance.PublicDnsName console.log "State: " + JSON.stringify(instance.State) console.log "PublicIpAddress: " + instance.PublicIpAddress console.log "PrivateIpAddress: " + instance.PrivateIpAddress console.log "PrivateDnsName: " + instance.PrivateDnsName message = "" message += "PublicDnsName: " + instance.PublicDnsName + '\n' message += "State: " + instance.State.Name + '\n' message += "PublicIpAddress: " + instance.PublicIpAddress + '\n' message += "PrivateIpAddress: " + instance.PrivateIpAddress + '\n' message += "PrivateDnsName: " + instance.PrivateDnsName + '\n' res.send message **関連リンク [#h5cb69ca] -[[【初心者向け】MacユーザがAWS CLIを最速で試す方法 | Developers.IO>http://dev.classmethod.jp/cloud/aws/mac-aws-cli/]] 参考になりました! -[[Amazon S3 再入門 – AWS IAMでアクセスしてみよう!>https://cloudpack.media/5726]] IAMに権限をつける件。 -[[AWS CLIのS3コマンドまとめ - TASK NOTES>http://www.task-notes.com/entry/20150904/1441335600]] ---- この記事は #vote(おもしろかった,そうでもない) - Raspberry Piでやる場合はpipをpip3と読み替えればPython3系にインストールされるようです -- [[きの]] &new{2016-11-12 (土) 17:12:07}; #comment #topicpath SIZE(10){現在のアクセス:&counter;}