{"id":1021,"date":"2014-09-02T10:00:00","date_gmt":"2014-09-02T01:00:00","guid":{"rendered":"http:\/\/www.skyarch.net\/blog\/?p=1021"},"modified":"2014-11-19T12:37:30","modified_gmt":"2014-11-19T03:37:30","slug":"api-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%9f%e7%9b%a3%e8%a6%96%ef%bc%88aws%e3%80%80%e2%91%a0aws-cli","status":"publish","type":"post","link":"https:\/\/www.skyarch.net\/blog\/api-%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%9f%e7%9b%a3%e8%a6%96%ef%bc%88aws%e3%80%80%e2%91%a0aws-cli\/","title":{"rendered":"API \u3092\u5229\u7528\u3057\u305f\u76e3\u8996\uff08AWS)\u3000\u2460AWS CLI"},"content":{"rendered":"<p>AWS\u74b0\u5883\u306e\u69d8\u3005\u306a\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u76e3\u8996\u3059\u308b\u4e0a\u3067\u3001API\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u8a73\u7d30\u306b\u76e3\u8996\u3067\u304d\u308b\u9805\u76ee\u3001<\/p>\n<p>\u307e\u305f\u306fAPI\u3092\u5229\u7528\u3057\u306a\u3044\u3068\u76e3\u8996\u304c\u96e3\u3057\u3044\u3082\u306e\u304c\u591a\u3005\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u5f53\u8a18\u4e8b\u3067\u306f\u3001API\u3067\u76e3\u8996\u3092\u884c\u3046\u5e7e\u3064\u304b\u306e\u57fa\u790e\u7684\u306a\u65b9\u6cd5\u306e\u3046\u3061\u3001<\/p>\n<p>Amazon Linux \u3067\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b <strong>AWS CLI<\/strong>\u306e\u5229\u7528\u65b9\u6cd5\u3092\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n<p>AWC CLI \u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067<strong>\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3088\u308a\u7c21\u5358\u306bAPI\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u51fa\u6765\u307e\u3059<\/strong>\u3002<\/p>\n<h2>\u521d\u671f\u8a2d\u5b9a\u3092\u884c\u3046<\/h2>\n<p>AWS CLI \u306e\u5229\u7528\u306b\u306f\u3001API\u5229\u7528\u6642\u306b\u5fc5\u8981\u306b\u306a\u308bAccessKey\u3068SecretKey\u3092\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u8a18\u8f09\u3059\u308b\u304b\u3001<\/p>\n<p>\u9069\u5207\u306a\u6a29\u9650\u3092\u8a2d\u5b9a\u3057\u305fIAM ROLE\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u4ed8\u4e0e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u8a18\u8f09\u3059\u308b\u5834\u5408\u3001\u4e0b\u8a18\u306e\u3088\u3046\u306b\u5bfe\u8a71\u5f0f\u3067\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002<br \/>\n\u4f5c\u6210\u5148\u306f\u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u914d\u4e0b\u306e ~\/.aws\/config \u30d5\u30a1\u30a4\u30eb\u306b\u306a\u308a\u307e\u3059<\/p>\n<pre>[root@ip-172-31-18-21 ~]# aws configure\nAWS Access Key ID [None]: xxxxxx\nAWS Secret Access Key [None]: xxxxxxxxxxx\nDefault region name [None]: ap-northeast-1\nDefault output format [None]:\n<\/pre>\n<h2>\u5b9f\u969b\u306b\u5229\u7528\u3059\u308b<\/h2>\n<p>\u4e0a\u8a18\u306e\u8a2d\u5b9a\u3092\u7d42\u3048\u308b\u3060\u3051\u3067\u3001\u3059\u3050\u306b\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u51fa\u6765\u307e\u3059\u3002\u66f8\u5f0f\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n<p>aws [options] &lt;command&gt; &lt;subcommand&gt; [parameters]\n<p>command \u306e \u90e8\u5206\u306b\u306f\u30b5\u30fc\u30d3\u30b9\u540d\u3001subcommand \u306b\u306f\u5229\u7528\u3059\u308bAPI\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002\u30bf\u30d6\u88dc\u5b8c\u304c\u52b9\u304d\u3001\u307e\u305f\u6700\u5f8c\u306b help \u3092\u3064\u3051\u308b\u3053\u3068\u3067\u5229\u7528\u65b9\u6cd5\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B;root@ip-172-31-18-21 ~]# aws ec2 describe-instance-attribute --instance-id i-e11c54ec --attribute instanceType\r\n{\r\n    &quot;UserData&quot;: {},\r\n    &quot;ProductCodes&quot;: &#x5B;],\r\n    &quot;InstanceId&quot;: &quot;i-e11c54ec&quot;,\r\n    &quot;InstanceInitiatedShutdownBehavior&quot;: {},\r\n    &quot;SriovNetSupport&quot;: {},\r\n    &quot;RootDeviceName&quot;: {},\r\n    &quot;EbsOptimized&quot;: {},\r\n    &quot;BlockDeviceMappings&quot;: &#x5B;],\r\n    &quot;KernelId&quot;: {},\r\n    &quot;RamdiskId&quot;: {},\r\n    &quot;DisableApiTermination&quot;: {},\r\n    &quot;InstanceType&quot;: {\r\n        &quot;Value&quot;: &quot;t2.small&quot;\r\n    }\r\n}\r\n<\/pre>\n<p>\u5f8c\u306f\u3001CloudWatch\u306a\u3069\u304b\u3089\u5024\u3092\u53d6\u5f97\u3057\u30c1\u30a7\u30c3\u30af\u3059\u308b\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3059\u308c\u3070\u3001<\/p>\n<p>\u7c21\u5358\u306b\u76e3\u8996\u306a\u3069\u3092\u884c\u3046\u3053\u3068\u304c\u51fa\u6765\u307e\u3059\u3002<\/p>\n<h2>\u76e3\u8996\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u308b<\/h2>\n<p>\u4e0b\u8a18\u306f\u3001RDS\u306e\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u3092\u76e3\u8996\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u306f\u30a4\u30d9\u30f3\u30c8\u30ed\u30b0\u306b\u51fa\u529b\u3055\u308c\u308b\u305f\u3081\u901a\u5e38\u76e3\u8996\u306f\u96e3\u3057\u3044\u3067\u3059\u304c\u3001<\/p>\n<p>AWC CLI \u3092\u5229\u7528\u3057\u904e\u53bb60\u5206\u9593\u306e\u30ed\u30b0\u3092 aws rds describe-events \u3067\u53d6\u5f97\u3001<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u30aa\u30fc\u30d0\u306b\u95a2\u9023\u3059\u308b\u30ed\u30b0\u304c\u51fa\u529b\u3055\u308c\u3066\u3044\u308b\u304b\u3092\u78ba\u8a8d\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n#!\/bin\/bash\r\n\r\nexport AWS_CONFIG_FILE=\/root\/.aws\/config\r\n\r\noutput=$(aws rds describe-events  --duration 60 --event-categories failover )\r\nnum=($(echo &quot;$output&quot; | \/root\/JSON.sh | egrep '&quot;Events&quot;,&#x5B;0-9]+,' | cut -d ',' -f2|sort -u))\r\n\r\n&#x5B; &quot;${#num&#x5B;@]}&quot; -eq 0 ] &amp;amp;&amp;amp; exit 0\r\n\r\nmsg=&quot;\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u3092\u691c\u77e5\u3057\u307e\u3057\u305f\\n\\n&quot;\r\n\r\nfor i in &quot;${num&#x5B;@]}&quot;; do\r\n  datetime=$(date -d $(echo &quot;$output&quot; | \/root\/JSON.sh | egrep &quot;\\&quot;Events\\&quot;,${i},\\&quot;Date\\&quot;&quot; | awk '{print $2}' | sed 's\/^&quot;\\(.*\\)&quot;$\/\\1\/g') +'%Y\/%m\/%d %H:%M:%S')\r\n  instance=$(echo &quot;$output&quot; | \/root\/JSON.sh | egrep &quot;\\&quot;Events\\&quot;,${i},\\&quot;SourceIdentifier\\&quot;&quot; | awk '{print $2}' | sed 's\/^&quot;\\(.*\\)&quot;$\/\\1\/g')\r\n  message=$(echo &quot;$output&quot; | \/root\/JSON.sh | egrep &quot;\\&quot;Events\\&quot;,${i},\\&quot;Message\\&quot;&quot; | awk -F&quot;\\t&quot; '{print $2}' | sed 's\/^&quot;\\(.*\\)&quot;$\/\\1\/g')\r\n\r\n  msg=&quot;${msg}Date     : ${datetime}\\n&quot;\r\n  msg=&quot;${msg}Instance : ${instance}\\n&quot;\r\n  msg=&quot;${msg}Message  : ${message}\\n\\n&quot;\r\ndone\r\n\r\necho -e &quot;${msg}&quot;\r\n<\/pre>\n<p>AWC CLI \u306e\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u3092\/root\/JSON.sh \u3068\u3044\u3046\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u6e21\u3057\u3066\u3044\u307e\u3059\u304c\u3001<a href=\"https:\/\/github.com\/dominictarr\/JSON.sh\">\u3053\u3061\u3089<\/a>\u3067\u516c\u958b\u3055\u308c\u3066\u3044\u308bJSON\u3092\u30d1\u30fc\u30b9\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>AWC CLI \u306e\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fJSON\u5f62\u5f0f\u306a\u306e\u3067\u3001\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u6271\u3046\u5834\u5408\u306f\u4e0a\u8a18\u306e\u3088\u3046\u306a\u3082\u306e\u3092\u5229\u7528\u3059\u308b\u304b Perl \u3084 Ruby \u306a\u3069\u306e\u30ef\u30f3\u30e9\u30a4\u30ca\u30fc\u3067\u30d1\u30fc\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u307e\u305f\u3001--output (json\/text\/table) \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u4e0e\u3059\u308b\u3053\u3068\u3067\u3001\u51fa\u529b\u5f62\u5f0f\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3082\u51fa\u6765\u307e\u3059\u3002<\/p>\n<p>\u5b9f\u884c\u3059\u308b\u3068\u3001\u4e0b\u8a18\u306e\u3088\u3046\u306a\u5f62\u3067\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u3092\u691c\u77e5\u3057\u3066\u304f\u308c\u307e\u3057\u305f\u3002<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B;root@ip-172-31-18-21 ~]# .\/check_rds_failover.sh\r\n\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u3092\u691c\u77e5\u3057\u307e\u3057\u305f\r\n\r\nDate     : 2014\/08\/22 13:46:20\r\nInstance : test\r\nMessage  : Multi-AZ instance failover started\r\n\r\nDate     : 2014\/08\/22 13:47:20\r\nInstance : test\r\nMessage  : Multi-AZ instance failover completed\r\n<\/pre>\n<h2>\u5099\u8003<\/h2>\n<p>AWS CLI\u3092\u5229\u7528\u3057\u3066\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u306f\u3001\u6ce8\u610f\u3059\u308b\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u5b9f\u884c\u6642\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u3092\u884c\u3044\u307e\u3059\u304c\u3001\u74b0\u5883\u5909\u6570 AWS_CONFIG_FILE \u3092\u53c2\u7167\u3057\u307e\u3059\u3002<br \/>\n\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u306f~\/.aws\/config\uff09<\/p>\n<p>\u305d\u306e\u305f\u3081\u3001\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u4e2d\u3067AWS_CONFIG_FILE\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>AWS CLI \u306b\u306f\u69d8\u3005\u306a\u8a2d\u5b9a\u30fb\u5229\u7528\u65b9\u6cd5\u304c\u3042\u308b\u306e\u3067\u3001\u4e0b\u8a18\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u8003\u306b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<ul>\n<li><a href=\"http:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/cli-chap-welcome.html\">\u516c\u5f0f\u30e6\u30fc\u30b6\u30ac\u30a4\u30c9<\/a><\/li>\n<li><a href=\"http:\/\/docs.aws.amazon.com\/cli\/latest\/reference\/\">\u516c\u5f0f\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>AWS\u74b0\u5883\u306e\u69d8\u3005\u306a\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u76e3\u8996\u3059\u308b\u4e0a\u3067\u3001API\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u8a73\u7d30\u306b\u76e3\u8996\u3067\u304d\u308b\u9805\u76ee\u3001 \u307e\u305f\u306fAPI\u3092\u5229\u7528\u3057\u306a\u3044\u3068\u76e3\u8996\u304c\u96e3\u3057\u3044\u3082\u306e\u304c\u591a\u3005\u3042\u308a\u307e\u3059\u3002 \u5f53\u8a18\u4e8b\u3067\u306f\u3001API\u3067\u76e3\u8996\u3092\u884c\u3046\u5e7e\u3064\u304b\u306e\u57fa\u790e\u7684\u306a\u65b9\u6cd5\u306e\u3046\u3061\u3001 Amaz&#8230;<\/p>\n","protected":false},"author":1,"featured_media":243,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"","_original_post":"","footnotes":""},"categories":[20,83,6],"tags":[39,102],"class_list":{"0":"post-1021","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-aws","8":"category-devops","9":"category-monit","10":"tag-api","11":"tag-aws","12":"ja"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/1021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/comments?post=1021"}],"version-history":[{"count":27,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/1021\/revisions"}],"predecessor-version":[{"id":1067,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/1021\/revisions\/1067"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/media\/243"}],"wp:attachment":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/media?parent=1021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/categories?post=1021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/tags?post=1021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}