{"id":2390,"date":"2025-03-24T08:47:31","date_gmt":"2025-03-23T23:47:31","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=2390"},"modified":"2025-03-24T08:47:54","modified_gmt":"2025-03-23T23:47:54","slug":"aws-cli-query%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e5%ae%9f%e8%b7%b5%e3%81%a7%e4%bd%bf%e3%81%88%e3%82%8b15%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%83%86","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=2390","title":{"rendered":"AWS CLI Query\u30b3\u30de\u30f3\u30c9\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a\u5b9f\u8df5\u3067\u4f7f\u3048\u308b15\u306e\u57fa\u672c\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">AWS CLI Query\u30b3\u30de\u30f3\u30c9\u3068\u306f<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">AWS CLI\u306e\u30af\u30a8\u30ea\u6a5f\u80fd\u306e\u57fa\u672c\u6982\u5ff5\u3068\u91cd\u8981\u6027<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-4\">\u2013query\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u89e3\u6c7a\u3059\u308b3\u3064\u306e\u8ab2\u984c<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-8\">AWS CLI Query\u306e\u57fa\u672c\u6587\u6cd5\u30de\u30b9\u30bf\u30fc<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-9\">JMESPath\u306e\u57fa\u672c\u69cb\u6587\u3068\u4f7f\u3044\u65b9<\/a>      <\/li>      <li>        <a href=\"#i-13\">\u3088\u304f\u4f7f\u3046\u6f14\u7b97\u5b50\u3068\u30d5\u30a3\u30eb\u30bf\u30fc\u8868\u73fe<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-16\">\u5b9f\u8df5\u7684\u306a\u30af\u30a8\u30ea\u4f8b\u3068\u89e3\u8aac<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-20\">15\u306e\u5b9f\u8df5\u7684\u306aAWS CLI\u30af\u30a8\u30ea\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-21\">EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u60c5\u5831\u306e\u52b9\u7387\u7684\u306a\u62bd\u51fa\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-25\">S3\u30d0\u30b1\u30c3\u30c8\u7ba1\u7406\u306b\u5f79\u7acb\u3064\u30af\u30a8\u30ea\u6280<\/a>      <\/li>      <li>        <a href=\"#i-29\">IAM\u30e6\u30fc\u30b6\u30fc\u7ba1\u7406\u306e\u305f\u3081\u306e\u5fc5\u9808\u30af\u30a8\u30ea<\/a>      <\/li>      <li>        <a href=\"#i-33\">CloudWatch\u30ed\u30b0\u306e\u9ad8\u5ea6\u306a\u691c\u7d22\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-37\">\u8907\u6570\u30ea\u30fc\u30b8\u30e7\u30f3\u3092\u6a2a\u65ad\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u691c\u7d22<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-41\">AWS CLI\u30af\u30a8\u30ea\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-42\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-45\">\u30af\u30a8\u30ea\u7d50\u679c\u304c\u671f\u5f85\u901a\u308a\u3067\u306a\u3044\u5834\u5408\u306e\u5bfe\u51e6\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-49\">AWS CLI\u30af\u30a8\u30ea\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-50\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8003\u616e\u3057\u305f\u30af\u30a8\u30ea\u8a2d\u8a08<\/a>      <\/li>      <li>        <a href=\"#i-53\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u30af\u30a8\u30ea\u5b9f\u884c\u306e\u30dd\u30a4\u30f3\u30c8<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-56\">\u81ea\u52d5\u5316\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u306e\u6d3b\u7528\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-60\">\u767a\u5c55\u7684\u306aAWS CLI\u30af\u30a8\u30ea\u6d3b\u7528\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-61\">\u8907\u96d1\u306aJSON\u30c7\u30fc\u30bf\u306e\u64cd\u4f5c\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li>        <a href=\"#i-64\">\u30ab\u30b9\u30bf\u30e0\u30b9\u30af\u30ea\u30d7\u30c8\u3068\u306e\u9023\u643a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-67\">CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u6d3b\u7528\u4f8b<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">AWS CLI Query\u30b3\u30de\u30f3\u30c9\u3068\u306f<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">AWS CLI\u306e\u30af\u30a8\u30ea\u6a5f\u80fd\u306e\u57fa\u672c\u6982\u5ff5\u3068\u91cd\u8981\u6027<\/h3>\n\n\n\n<p>AWS Command Line Interface (AWS CLI) \u306f\u3001AWS\u30ea\u30bd\u30fc\u30b9\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3067\u3059\u3002\u305d\u306e\u4e2d\u3067\u3082<code>--query<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u30b3\u30de\u30f3\u30c9\u5b9f\u884c\u7d50\u679c\u304b\u3089\u5fc5\u8981\u306a\u60c5\u5831\u3060\u3051\u3092\u62bd\u51fa\u3067\u304d\u308b\u975e\u5e38\u306b\u91cd\u8981\u306a\u6a5f\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-2\">\u30af\u30a8\u30ea\u6a5f\u80fd\u306e\u57fa\u672c\u6982\u5ff5<\/h4>\n\n\n\n<p>AWS CLI\u306e\u30af\u30a8\u30ea\u6a5f\u80fd\u306f\u3001JMESPath\uff08JavaScript Message Path\uff09\u3068\u3044\u3046JSON\u691c\u7d22\u8a00\u8a9e\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u64cd\u4f5c\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JSON\u5f62\u5f0f\u306e\u51fa\u529b\u304b\u3089\u7279\u5b9a\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u62bd\u51fa<\/li>\n\n\n\n<li>\u6761\u4ef6\u306b\u57fa\u3065\u3044\u305f\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0<\/li>\n\n\n\n<li>\u51fa\u529b\u7d50\u679c\u306e\u6574\u5f62\u3084\u4e26\u3073\u66ff\u3048<\/li>\n\n\n\n<li>\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u64cd\u4f5c<\/li>\n<\/ul>\n\n\n\n<p>\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306aEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4e00\u89a7\u3092\u53d6\u5f97\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30af\u30a8\u30ea\u306a\u3057\u306e\u5834\u5408\uff08\u3059\u3079\u3066\u306e\u60c5\u5831\u304c\u51fa\u529b\u3055\u308c\u308b\uff09\naws ec2 describe-instances\n\n# \u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u305f\u5834\u5408\uff08\u5fc5\u8981\u306a\u60c5\u5831\u306e\u307f\u3092\u62bd\u51fa\uff09\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].[InstanceId,State.Name,Tags[?Key==`Name`].Value|[0]]' \\\n  --output table<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-3\">\u30af\u30a8\u30ea\u6a5f\u80fd\u306e\u91cd\u8981\u6027<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u306e\u53ef\u8996\u6027\u5411\u4e0a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5fc5\u8981\u306a\u60c5\u5831\u306e\u307f\u3092\u62bd\u51fa\u3059\u308b\u3053\u3068\u3067\u3001\u91cd\u8981\u306a\u30c7\u30fc\u30bf\u304c\u4e00\u76ee\u3067\u628a\u63e1\u53ef\u80fd<\/li>\n\n\n\n<li>\u5927\u91cf\u306eJSON\u51fa\u529b\u304b\u3089\u5fc5\u8981\u306a\u60c5\u5831\u3092\u30d4\u30f3\u30dd\u30a4\u30f3\u30c8\u3067\u53d6\u5f97<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u81ea\u52d5\u5316\u30fb\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0\u306e\u52b9\u7387\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b9\u30af\u30ea\u30d7\u30c8\u5185\u3067AWS CLI\u3092\u4f7f\u7528\u3059\u308b\u969b\u3001\u7d50\u679c\u306e\u89e3\u6790\u304c\u5bb9\u6613\u306b<\/li>\n\n\n\n<li>\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u51e6\u7406\u304c\u7c21\u7d20\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u904b\u7528\u52b9\u7387\u306e\u5411\u4e0a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8907\u96d1\u306aAWS\u74b0\u5883\u3067\u306e\u60c5\u5831\u53ce\u96c6\u304c\u52b9\u7387\u5316<\/li>\n\n\n\n<li>\u5b9a\u671f\u7684\u306a\u30ea\u30bd\u30fc\u30b9\u76e3\u8996\u3084\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u4f5c\u696d\u306e\u52b9\u7387\u5316<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">\u2013query\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u89e3\u6c7a\u3059\u308b3\u3064\u306e\u8ab2\u984c<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-5\">1. \u60c5\u5831\u904e\u591a\u306e\u89e3\u6d88<\/h4>\n\n\n\n<p><strong>\u8ab2\u984c<\/strong>\uff1aAWS CLI\u306e\u51fa\u529b\u306f\u60c5\u5831\u91cf\u304c\u591a\u304f\u3001\u5fc5\u8981\u306a\u60c5\u5831\u3092\u898b\u3064\u3051\u308b\u306e\u304c\u56f0\u96e3<\/p>\n\n\n\n<p><strong>\u89e3\u6c7a\u65b9\u6cd5<\/strong>\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9ID\u3068\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u307f\u3092\u62bd\u51fa\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].[InstanceId,State.Name]' \\\n  --output table<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">2. \u30c7\u30fc\u30bf\u5f62\u5f0f\u306e\u7d71\u4e00\u5316<\/h4>\n\n\n\n<p><strong>\u8ab2\u984c<\/strong>\uff1a\u7570\u306a\u308b\u30b3\u30de\u30f3\u30c9\u304b\u3089\u306e\u51fa\u529b\u5f62\u5f0f\u304c\u7d71\u4e00\u3055\u308c\u3066\u3044\u306a\u3044<\/p>\n\n\n\n<p><strong>\u89e3\u6c7a\u65b9\u6cd5<\/strong>\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># S3\u30d0\u30b1\u30c3\u30c8\u306e\u540d\u524d\u3068\u4f5c\u6210\u65e5\u6642\u3092\u4e00\u8cab\u3057\u305f\u5f62\u5f0f\u3067\u51fa\u529b\naws s3api list-buckets \\\n  --query 'Buckets[*].[Name,CreationDate]' \\\n  --output table<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-7\">3. \u6761\u4ef6\u4ed8\u304d\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u306e\u5b9f\u73fe<\/h4>\n\n\n\n<p><strong>\u8ab2\u984c<\/strong>\uff1a\u7279\u5b9a\u306e\u6761\u4ef6\u306b\u5408\u81f4\u3059\u308b\u30ea\u30bd\u30fc\u30b9\u306e\u307f\u3092\u62bd\u51fa\u3057\u305f\u3044<\/p>\n\n\n\n<p><strong>\u89e3\u6c7a\u65b9\u6cd5<\/strong>\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u7279\u5b9a\u306e\u30bf\u30b0\u304c\u4ed8\u3044\u3066\u3044\u308bEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u307f\u3092\u62bd\u51fa\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?Tags[?Key==`Environment` &amp;&amp; Value==`Production`]].[InstanceId,State.Name]' \\\n  --output table<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001<code>--query<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001AWS CLI\u306e\u51fa\u529b\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3057\u3001\u5fc5\u8981\u306a\u60c5\u5831\u306e\u307f\u3092\u7c21\u5358\u306b\u62bd\u51fa\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u8a73\u7d30\u306a\u30af\u30a8\u30ea\u306e\u6587\u6cd5\u3068\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-8\">AWS CLI Query\u306e\u57fa\u672c\u6587\u6cd5\u30de\u30b9\u30bf\u30fc<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">JMESPath\u306e\u57fa\u672c\u69cb\u6587\u3068\u4f7f\u3044\u65b9<\/h3>\n\n\n\n<p>AWS CLI\u306e\u30af\u30a8\u30ea\u6a5f\u80fd\u3067\u4f7f\u7528\u3055\u308c\u308bJMESPath\u306f\u3001JSON\u30c7\u30fc\u30bf\u304b\u3089\u5fc5\u8981\u306a\u60c5\u5831\u3092\u62bd\u51fa\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u691c\u7d22\u8a00\u8a9e\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u4e3b\u8981\u306a\u69cb\u6587\u8981\u7d20\u3068\u5177\u4f53\u7684\u306a\u4f7f\u7528\u4f8b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-10\">1. \u57fa\u672c\u7684\u306a\u30d5\u30a3\u30fc\u30eb\u30c9\u53c2\u7167<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5358\u4e00\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u53c2\u7167\naws s3api list-buckets --query 'Buckets[*].Name'\n\n# \u30cd\u30b9\u30c8\u3055\u308c\u305f\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u53c2\u7167\naws ec2 describe-instances --query 'Reservations[*].Instances[*].InstanceId'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-11\">2. \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u914d\u5217\u64cd\u4f5c<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u7279\u5b9a\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u8981\u7d20\u3092\u53d6\u5f97\naws ec2 describe-instances --query 'Reservations[0].Instances[0].InstanceId'\n\n# \u30b9\u30e9\u30a4\u30b9\u69cb\u6587\u306e\u4f7f\u7528\naws ec2 describe-instances --query 'Reservations[0:2].Instances[*].InstanceId'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-12\">3. \u8907\u6570\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u540c\u6642\u53d6\u5f97<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8907\u6570\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u914d\u5217\u3068\u3057\u3066\u53d6\u5f97\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,State.Name]'\n\n# \u8907\u6570\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u53d6\u5f97\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].{ID:InstanceId,Type:InstanceType,State:State.Name}'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u3088\u304f\u4f7f\u3046\u6f14\u7b97\u5b50\u3068\u30d5\u30a3\u30eb\u30bf\u30fc\u8868\u73fe<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-14\">1. \u30d5\u30a3\u30eb\u30bf\u30fc\u6f14\u7b97\u5b50<\/h4>\n\n\n\n<p><strong>\u6bd4\u8f03\u6f14\u7b97\u5b50\u306e\u4f7f\u7528<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u7b49\u4fa1\u6bd4\u8f03\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?State.Name==`running`].InstanceId'\n\n# \u6570\u5024\u6bd4\u8f03\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?BlockDeviceMappings[0].Ebs.Size&gt;`100`].InstanceId'<\/pre>\n\n\n\n<p><strong>\u8ad6\u7406\u6f14\u7b97\u5b50\u306e\u4f7f\u7528<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># AND\u6761\u4ef6\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?State.Name==`running` &amp;&amp; InstanceType==`t2.micro`].InstanceId'\n\n# OR\u6761\u4ef6\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?State.Name==`running` || State.Name==`stopped`].InstanceId'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-15\">2. \u95a2\u6570\u3068\u30d1\u30a4\u30d7\u6f14\u7b97\u5b50<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># length()\u95a2\u6570\u306e\u4f7f\u7528\naws ec2 describe-security-groups \\\n  --query 'SecurityGroups[?length(IpPermissions)&gt;`5`].GroupName'\n\n# sort_by()\u95a2\u6570\u306e\u4f7f\u7528\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*] | sort_by(@, &amp;LaunchTime)'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u5b9f\u8df5\u7684\u306a\u30af\u30a8\u30ea\u4f8b\u3068\u89e3\u8aac<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">1. \u30bf\u30b0\u30d9\u30fc\u30b9\u306e\u691c\u7d22\u3068\u60c5\u5831\u62bd\u51fa<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u7279\u5b9a\u306e\u30bf\u30b0\u3092\u6301\u3064\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u8a73\u7d30\u60c5\u5831\u3092\u53d6\u5f97\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?Tags[?Key==`Environment` &amp;&amp; Value==`Production`]].\\\n  {\n    InstanceId: InstanceId,\n    Type: InstanceType,\n    State: State.Name,\n    Name: Tags[?Key==`Name`].Value | [0]\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-18\">2. \u8907\u6570\u6761\u4ef6\u3067\u306e\u7d5e\u308a\u8fbc\u307f\u3068\u6574\u5f62<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8907\u6570\u306e\u6761\u4ef6\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u9ad8\u5ea6\u306a\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?State.Name==`running` &amp;&amp; contains(InstanceType, `t2`)].\\\n  {\n    ID: InstanceId,\n    Type: InstanceType,\n    AZ: Placement.AvailabilityZone,\n    PrivateIP: PrivateIpAddress,\n    PublicIP: PublicIpAddress || `N\/A`\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-19\">3. \u30c7\u30fc\u30bf\u306e\u96c6\u8a08\u3068\u5909\u63db<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306e\u30eb\u30fc\u30eb\u6570\u3092\u96c6\u8a08\naws ec2 describe-security-groups \\\n  --query 'SecurityGroups[].\\\n  {\n    GroupName: GroupName,\n    InboundRules: length(IpPermissions),\n    OutboundRules: length(IpPermissionsEgress)\n  }'<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30af\u30a8\u30ea\u30d1\u30bf\u30fc\u30f3\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u62bd\u51fa\u3084\u5909\u63db\u3082\u5b9f\u73fe\u53ef\u80fd\u3067\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u57fa\u672c\u6587\u6cd5\u3092\u6d3b\u7528\u3057\u305f\u5177\u4f53\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-20\">15\u306e\u5b9f\u8df5\u7684\u306aAWS CLI\u30af\u30a8\u30ea\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u60c5\u5831\u306e\u52b9\u7387\u7684\u306a\u62bd\u51fa\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-22\">1. \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u8a73\u7d30\u60c5\u5831\u4e00\u89a7\u4f5c\u6210<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u91cd\u8981\u60c5\u5831\u3092\u30c6\u30fc\u30d6\u30eb\u5f62\u5f0f\u3067\u51fa\u529b\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].{\n    ID: InstanceId,\n    Name: Tags[?Key==`Name`].Value | [0],\n    Type: InstanceType,\n    State: State.Name,\n    PrivateIP: PrivateIpAddress,\n    PublicIP: PublicIpAddress || `N\/A`,\n    AZ: Placement.AvailabilityZone\n  }' \\\n  --output table<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-23\">2. \u7279\u5b9a\u6761\u4ef6\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u691c\u7d22<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u505c\u6b62\u4e2d\u306et2\/t3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u691c\u7d22\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?State.Name==`stopped` &amp;&amp; \n    contains(InstanceType, `t2`) || contains(InstanceType, `t3`)].{\n    ID: InstanceId,\n    Type: InstanceType,\n    StopTime: StateTransitionReason\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-24\">3. \u30ea\u30bd\u30fc\u30b9\u30bf\u30b0\u30d9\u30fc\u30b9\u306e\u5206\u6790<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u74b0\u5883\u5225\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u6570\u96c6\u8a08\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].Tags[?Key==`Environment`].Value' \\\n  | sort | uniq -c<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-25\">S3\u30d0\u30b1\u30c3\u30c8\u7ba1\u7406\u306b\u5f79\u7acb\u3064\u30af\u30a8\u30ea\u6280<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-26\">4. \u30d0\u30b1\u30c3\u30c8\u306e\u30b5\u30a4\u30ba\u3068\u6700\u7d42\u66f4\u65b0\u65e5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5404\u30d0\u30b1\u30c3\u30c8\u306e\u8a73\u7d30\u60c5\u5831\u3092\u53d6\u5f97\naws s3api list-buckets \\\n  --query 'Buckets[*].{\n    Name: Name,\n    Created: CreationDate,\n    Region: join(``, [`aws s3api get-bucket-location --bucket `, Name, \n      ` --query Location --output text`]) | @sh\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-27\">5. \u7279\u5b9a\u30d1\u30bf\u30fc\u30f3\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u691c\u7d22<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u30b5\u30a4\u30ba\u306b\u3088\u308b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\naws s3api list-objects-v2 \\\n  --bucket my-bucket \\\n  --prefix \"logs\/\" \\\n  --query 'Contents[?Size&gt;`1048576`].{\n    Key: Key,\n    Size: Size,\n    LastModified: LastModified\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-28\">6. \u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u72b6\u614b\u306e\u78ba\u8a8d<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5168\u30d0\u30b1\u30c3\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u72b6\u614b\u3092\u78ba\u8a8d\naws s3api list-buckets \\\n  --query 'Buckets[*].Name' \\\n  --output text | xargs -I {} aws s3api get-bucket-versioning \\\n  --bucket {} --query '{Bucket: `{}`, Status: Status}'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-29\">IAM\u30e6\u30fc\u30b6\u30fc\u7ba1\u7406\u306e\u305f\u3081\u306e\u5fc5\u9808\u30af\u30a8\u30ea<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-30\">7. \u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u6709\u52b9\u671f\u9650\u7ba1\u7406<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># 90\u65e5\u4ee5\u4e0a\u7d4c\u904e\u3057\u305f\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u3092\u691c\u51fa\naws iam list-users \\\n  --query 'Users[*].{\n    UserName: UserName,\n    AccessKeys: UserName | [join(``, [`aws iam list-access-keys --user-name `, @])] | @sh\n  }' \\\n  --output text | while read user keys; do\n    eval \"aws iam $keys \\\n      --query 'AccessKeyMetadata[?DateCreated&lt;=\\`$(date -d '90 days ago' -u +%Y-%m-%dT%H:%M:%SZ)\\`].{\n        User: UserName,\n        KeyID: AccessKeyId,\n        Created: DateCreated\n      }'\"\ndone<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-31\">8. \u672a\u4f7f\u7528\u306e\u8a8d\u8a3c\u60c5\u5831\u306e\u7279\u5b9a<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># 90\u65e5\u4ee5\u4e0a\u4f7f\u7528\u3055\u308c\u3066\u3044\u306a\u3044IAM\u30e6\u30fc\u30b6\u30fc\u3092\u691c\u51fa\naws iam list-users \\\n  --query 'Users[?PasswordLastUsed&lt;=`'$(date -d '90 days ago' -Iseconds)'`].{\n    UserName: UserName,\n    Created: CreateDate,\n    LastUsed: PasswordLastUsed\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-32\">9. \u30dd\u30ea\u30b7\u30fc\u306e\u6a29\u9650\u5206\u6790<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u7279\u5b9a\u306e\u6a29\u9650\u3092\u6301\u3064\u30dd\u30ea\u30b7\u30fc\u3092\u691c\u7d22\naws iam list-policies \\\n  --query 'Policies[*].{\n    Name: PolicyName,\n    Arn: Arn,\n    Details: Arn | [join(``, [`aws iam get-policy-version --policy-arn `, @, \n      ` --version-id v1`])] | @sh\n  }' \\\n  --output text | while read name arn details; do\n    eval \"$details\" | jq -r 'select(.Document.Statement[].Action | \n      contains(\"s3:*\"))'\ndone<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-33\">CloudWatch\u30ed\u30b0\u306e\u9ad8\u5ea6\u306a\u691c\u7d22\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-34\">10. \u30ed\u30b0\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u7279\u5b9a\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u542b\u3080\u30ed\u30b0\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u691c\u7d22\naws logs describe-log-streams \\\n  --log-group-name \/aws\/lambda\/my-function \\\n  --query 'logStreams[?contains(logStreamName, `ERROR`)].{\n    Stream: logStreamName,\n    FirstEvent: firstEventTimestamp,\n    LastEvent: lastEventTimestamp\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-35\">11. \u30a8\u30e9\u30fc\u30ed\u30b0\u306e\u62bd\u51fa<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u76f4\u8fd1\u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u53d6\u5f97\naws logs filter-log-events \\\n  --log-group-name \/aws\/lambda\/my-function \\\n  --filter-pattern \"ERROR\" \\\n  --query 'events[*].{\n    Timestamp: timestamp,\n    Message: message\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-36\">12. \u30e1\u30c8\u30ea\u30af\u30b9\u7d71\u8a08\u306e\u53d6\u5f97<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u7279\u5b9a\u671f\u9593\u306e\u30e1\u30c8\u30ea\u30af\u30b9\u7d71\u8a08\u3092\u53d6\u5f97\naws cloudwatch get-metric-statistics \\\n  --namespace AWS\/EC2 \\\n  --metric-name CPUUtilization \\\n  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \\\n  --start-time $(date -d '24 hours ago' -u +%Y-%m-%dT%H:%M:%SZ) \\\n  --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \\\n  --period 3600 \\\n  --statistics Average Maximum \\\n  --query 'Datapoints[*].{\n    Time: Timestamp,\n    Avg: Average,\n    Max: Maximum\n  }'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-37\">\u8907\u6570\u30ea\u30fc\u30b8\u30e7\u30f3\u3092\u6a2a\u65ad\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u691c\u7d22<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-38\">13. \u30ea\u30fc\u30b8\u30e7\u30f3\u6a2a\u65ad\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u691c\u7d22<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5168\u30ea\u30fc\u30b8\u30e7\u30f3\u306e\u7279\u5b9a\u30bf\u30b0\u3092\u6301\u3064\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u691c\u7d22\naws ec2 describe-regions \\\n  --query 'Regions[*].RegionName' \\\n  --output text | xargs -I {} aws ec2 describe-instances \\\n  --region {} \\\n  --query 'Reservations[*].Instances[?Tags[?Key==`Environment` &amp;&amp; \n    Value==`Production`]].{\n    Region: `{}`,\n    ID: InstanceId,\n    Type: InstanceType,\n    State: State.Name\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-39\">14. \u30b0\u30ed\u30fc\u30d0\u30eb\u30ea\u30bd\u30fc\u30b9\u306e\u76e3\u67fb<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># IAM\u30e6\u30fc\u30b6\u30fc\u306e\u8a8d\u8a3c\u60c5\u5831\u3092\u5168\u30ea\u30fc\u30b8\u30e7\u30f3\u3067\u78ba\u8a8d\naws iam list-users \\\n  --query 'Users[*].{\n    UserName: UserName,\n    AccessKeys: UserName | [join(``, [`aws iam list-access-keys --user-name `, @])] | @sh,\n    MFADevices: UserName | [join(``, [`aws iam list-mfa-devices --user-name `, @])] | @sh\n  }' \\\n  --output text | while read user keys devices; do\n    echo \"User: $user\"\n    eval \"$keys\"\n    eval \"$devices\"\ndone<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-40\">15. \u30af\u30ed\u30b9\u30ea\u30fc\u30b8\u30e7\u30f3\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u78ba\u8a8d<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5168\u30ea\u30fc\u30b8\u30e7\u30f3\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u4e00\u89a7\u3092\u53d6\u5f97\naws ec2 describe-regions \\\n  --query 'Regions[*].RegionName' \\\n  --output text | xargs -I {} aws ec2 describe-snapshots \\\n  --region {} \\\n  --owner-ids self \\\n  --query 'Snapshots[*].{\n    Region: `{}`,\n    ID: SnapshotId,\n    Volume: VolumeId,\n    Size: VolumeSize,\n    State: State,\n    Progress: Progress\n  }'<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30af\u30a8\u30ea\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u7387\u7684\u306aAWS\u74b0\u5883\u306e\u7ba1\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-41\">AWS CLI\u30af\u30a8\u30ea\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-42\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-43\">1. \u69cb\u6587\u30a8\u30e9\u30fc<\/h4>\n\n\n\n<p><strong>\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u4f8b<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Invalid jmespath expression: Incomplete expression<\/pre>\n\n\n\n<p><strong>\u4e3b\u306a\u539f\u56e0\u3068\u89e3\u6c7a\u65b9\u6cd5<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u62ec\u5f27\u306e\u4e0d\u4e00\u81f4<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8aa4\u3063\u305f\u4f8b\uff08\u62ec\u5f27\u304c\u9589\u3058\u3066\u3044\u306a\u3044\uff09\naws ec2 describe-instances --query 'Reservations[*].Instances[*].{ID:InstanceId'\n\n# \u6b63\u3057\u3044\u4f8b\naws ec2 describe-instances --query 'Reservations[*].Instances[*].{ID:InstanceId}'<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30af\u30a9\u30fc\u30c8\u306e\u4f7f\u3044\u65b9<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8aa4\u3063\u305f\u4f8b\uff08\u30af\u30a9\u30fc\u30c8\u306e\u4f7f\u3044\u65b9\u304c\u4e0d\u9069\u5207\uff09\naws ec2 describe-instances --query \"Reservations[*].Instances[?State.Name=='running']\"\n\n# \u6b63\u3057\u3044\u4f8b\uff08\u6587\u5b57\u5217\u6bd4\u8f03\u306b\u306f`\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8`\u3092\u4f7f\u7528\uff09\naws ec2 describe-instances --query 'Reservations[*].Instances[?State.Name==`running`]'<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d1\u30a4\u30d7\u6f14\u7b97\u5b50\u306e\u8aa4\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8aa4\u3063\u305f\u4f8b\uff08\u30d1\u30a4\u30d7\u306e\u5f8c\u306e\u30b9\u30da\u30fc\u30b9\u304c\u4e0d\u8db3\uff09\naws ec2 describe-instances --query 'Reservations[*]|[0]'\n\n# \u6b63\u3057\u3044\u4f8b\naws ec2 describe-instances --query 'Reservations[*] | [0]'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-44\">2. \u53c2\u7167\u30a8\u30e9\u30fc<\/h4>\n\n\n\n<p><strong>\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u4f8b<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Invalid jmespath expression: Unknown function: contains()<\/pre>\n\n\n\n<p><strong>\u4e3b\u306a\u539f\u56e0\u3068\u89e3\u6c7a\u65b9\u6cd5<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5b58\u5728\u3057\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u53c2\u7167<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc\u3068\u306a\u308b\u4f8b\uff08\u5b58\u5728\u3057\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\uff09\naws ec2 describe-instances --query 'Reservations[*].Instances[*].nonexistentField'\n\n# \u89e3\u6c7a\u65b9\u6cd5\uff08\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\u30c1\u30a7\u30fc\u30f3\u3092\u4f7f\u7528\uff09\naws ec2 describe-instances --query 'Reservations[*].Instances[*].{\n  ID: InstanceId,\n  Tag: Tags[?Key==`Name`].Value | [0] || `NoTag`\n}'<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u914d\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u7bc4\u56f2\u5916<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc\u3068\u306a\u308b\u4f8b\naws ec2 describe-instances --query 'Reservations[5].Instances[*]'\n\n# \u89e3\u6c7a\u65b9\u6cd5\uff08\u5b58\u5728\u30c1\u30a7\u30c3\u30af\u3092\u8ffd\u52a0\uff09\naws ec2 describe-instances --query 'Reservations[*].Instances[*] | [0:5]'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-45\">\u30af\u30a8\u30ea\u7d50\u679c\u304c\u671f\u5f85\u901a\u308a\u3067\u306a\u3044\u5834\u5408\u306e\u5bfe\u51e6\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-46\">1. \u30c7\u30d0\u30c3\u30b0\u624b\u6cd5<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6bb5\u968e\u7684\u306a\u30af\u30a8\u30ea\u306e\u5206\u89e3<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8907\u96d1\u306a\u30af\u30a8\u30ea\u3092\u6bb5\u968e\u7684\u306b\u5b9f\u884c\n# \u30b9\u30c6\u30c3\u30d71: \u57fa\u672c\u69cb\u9020\u306e\u78ba\u8a8d\naws ec2 describe-instances --query 'Reservations'\n\n# \u30b9\u30c6\u30c3\u30d72: \u4e2d\u9593\u5c64\u306e\u78ba\u8a8d\naws ec2 describe-instances --query 'Reservations[*].Instances'\n\n# \u30b9\u30c6\u30c3\u30d73: \u6700\u7d42\u7684\u306a\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\naws ec2 describe-instances --query 'Reservations[*].Instances[*].{\n  ID: InstanceId,\n  State: State.Name\n}'<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u51fa\u529b\u5f62\u5f0f\u306e\u5909\u66f4\u306b\u3088\u308b\u30c7\u30d0\u30c3\u30b0<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u3067\u306e\u78ba\u8a8d\naws ec2 describe-instances --query 'Reservations[*].Instances[*]' --output text\n\n# \u30c6\u30fc\u30d6\u30eb\u5f62\u5f0f\u3067\u306e\u78ba\u8a8d\naws ec2 describe-instances --query 'Reservations[*].Instances[*]' --output table\n\n# JSON\u5f62\u5f0f\u3067\u306e\u78ba\u8a8d\naws ec2 describe-instances --query 'Reservations[*].Instances[*]' --output json<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-47\">2. \u4e00\u822c\u7684\u306a\u554f\u984c\u3068\u89e3\u6c7a\u7b56<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u304c\u6a5f\u80fd\u3057\u306a\u3044<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u554f\u984c\u306e\u3042\u308b\u4f8b\uff08\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u306e\u533a\u5225\uff09\naws ec2 describe-instances --query 'Reservations[*].Instances[?State.Name==`Running`]'\n\n# \u6b63\u3057\u3044\u4f8b\uff08\u6b63\u78ba\u306a\u5024\u3092\u4f7f\u7528\uff09\naws ec2 describe-instances --query 'Reservations[*].Instances[?State.Name==`running`]'<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>NULL\u5024\u306e\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># NULL\u3092\u8003\u616e\u3057\u305f\u30af\u30a8\u30ea\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].{\n    ID: InstanceId,\n    PublicIP: PublicIpAddress || `N\/A`,\n    Tags: Tags || `[]`\n  }'<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u914d\u5217\u64cd\u4f5c\u306e\u6539\u5584<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u914d\u5217\u306e\u6700\u521d\u306e\u8981\u7d20\u3092\u5b89\u5168\u306b\u53d6\u5f97\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].{\n    ID: InstanceId,\n    Name: Tags[?Key==`Name`].Value | [0] || `Unnamed`,\n    Type: InstanceType\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-48\">3. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6539\u5584\u306e\u30d2\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5fc5\u8981\u6700\u5c0f\u9650\u306e\u30c7\u30fc\u30bf\u53d6\u5f97<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u826f\u3044\u4f8b\uff08\u5fc5\u8981\u306a\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u307f\u3092\u6307\u5b9a\uff09\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].[InstanceId,State.Name]'<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u52b9\u7387\u7684\u306a\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d5\u30a3\u30eb\u30bf\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u30af\u30a8\u30ea\u306e\u7d44\u307f\u5408\u308f\u305b\naws ec2 describe-instances \\\n  --filters \"Name=instance-state-name,Values=running\" \\\n  --query 'Reservations[*].Instances[*].{\n    ID: InstanceId,\n    Type: InstanceType\n  }'<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u624b\u6cd5\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001AWS CLI\u30af\u30a8\u30ea\u306e\u554f\u984c\u3092\u52b9\u7387\u7684\u306b\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u52b9\u679c\u7684\u306a\u30af\u30a8\u30ea\u8a2d\u8a08\u306e\u305f\u3081\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-49\">AWS CLI\u30af\u30a8\u30ea\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-50\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8003\u616e\u3057\u305f\u30af\u30a8\u30ea\u8a2d\u8a08<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-51\">1. \u30c7\u30fc\u30bf\u53d6\u5f97\u306e\u6700\u9069\u5316<\/h4>\n\n\n\n<p><strong>\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u306e\u52b9\u7387\u5316<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u975e\u52b9\u7387\u306a\u4f8b\uff08\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b5\u30a4\u30c9\u3067\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\uff09\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[?State.Name==`running`]'\n\n# \u52b9\u7387\u7684\u306a\u4f8b\uff08\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\uff09\naws ec2 describe-instances \\\n  --filters \"Name=instance-state-name,Values=running\" \\\n  --query 'Reservations[*].Instances[*]'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-52\">2. \u30af\u30a8\u30ea\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5fc5\u8981\u306a\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u307f\u3092\u53d6\u5f97<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6700\u9069\u5316\u3055\u308c\u305f\u30af\u30a8\u30ea\u4f8b\naws ec2 describe-instances \\\n  --filters \"Name=tag:Environment,Values=production\" \\\n  --query 'Reservations[*].Instances[*].{\n    ID: InstanceId,\n    Type: InstanceType,\n    State: State.Name\n  }'<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u306e\u6d3b\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\naws s3api list-objects-v2 \\\n  --bucket my-bucket \\\n  --max-items 100 \\\n  --query 'Contents[*].{\n    Key: Key,\n    Size: Size\n  }' \\\n  --starting-token $NEXT_TOKEN<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6d3b\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30b7\u30a7\u30eb\u5909\u6570\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u5b9f\u88c5\ncache_file=\"\/tmp\/aws-cli-cache\"\nif [ ! -f \"$cache_file\" ] || [ $(( $(date +%s) - $(stat -f %m \"$cache_file\") )) -gt 300 ]; then\n  aws ec2 describe-instances \\\n    --query 'Reservations[*].Instances[*].{\n      ID: InstanceId,\n      Type: InstanceType\n    }' &gt; \"$cache_file\"\nfi\ncat \"$cache_file\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-53\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u30af\u30a8\u30ea\u5b9f\u884c\u306e\u30dd\u30a4\u30f3\u30c8<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-54\">1. \u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u306e\u6700\u9069\u5316<\/h4>\n\n\n\n<p><strong>\u6700\u5c0f\u6a29\u9650\u306e\u539f\u5247\u306e\u9069\u7528<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># IAM\u30dd\u30ea\u30b7\u30fc\u306e\u4f8b\n{\n  \"Version\": \"2012-10-01\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"ec2:DescribeInstances\",\n        \"ec2:DescribeTags\"\n      ],\n      \"Resource\": \"*\",\n      \"Condition\": {\n        \"StringEquals\": {\n          \"aws:RequestedRegion\": \"ap-northeast-1\"\n        }\n      }\n    }\n  ]\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-55\">2. \u30bb\u30ad\u30e5\u30a2\u306a\u30af\u30a8\u30ea\u5b9f\u884c<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6a5f\u5bc6\u60c5\u5831\u306e\u53d6\u308a\u6271\u3044<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6a5f\u5bc6\u60c5\u5831\u3092\u542b\u3080\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30de\u30b9\u30ad\u30f3\u30b0\naws iam list-access-keys \\\n  --query 'AccessKeyMetadata[*].{\n    UserName: UserName,\n    KeyID: AccessKeyId,\n    Created: CreateDate,\n    Status: Status\n  }'<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u51fa\u529b\u306e\u30b5\u30cb\u30bf\u30a4\u30ba<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5b89\u5168\u306a\u51fa\u529b\u51e6\u7406\naws ec2 describe-instances \\\n  --query 'Reservations[*].Instances[*].{\n    ID: InstanceId,\n    Tags: Tags[*].{\n      Key: Key,\n      Value: Value || `[MASKED]`\n    }\n  }' \\\n  --output json | jq 'del(.[][] | select(.Tags[].Key == \"Password\"))'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-56\">\u81ea\u52d5\u5316\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u306e\u6d3b\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-57\">1. \u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u306e\u6d3b\u7528<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# \u95a2\u6570\u5b9a\u7fa9\nget_instance_info() {\n  local environment=$1\n  aws ec2 describe-instances \\\n    --filters \"Name=tag:Environment,Values=$environment\" \\\n    --query 'Reservations[*].Instances[*].{\n      ID: InstanceId,\n      Name: Tags[?Key==`Name`].Value | [0],\n      Type: InstanceType,\n      State: State.Name\n    }'\n}\n\n# \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\nhandle_error() {\n  local exit_code=$?\n  echo \"Error: Command failed with exit code $exit_code\" &gt;&amp;2\n  exit $exit_code\n}\n\n# \u30e1\u30a4\u30f3\u51e6\u7406\nmain() {\n  trap handle_error ERR\n\n  # \u74b0\u5883\u3054\u3068\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u60c5\u5831\u3092\u53d6\u5f97\n  for env in \"production\" \"staging\" \"development\"; do\n    echo \"Checking $env environment...\"\n    get_instance_info \"$env\" --output table\n  done\n}\n\nmain \"$@\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-58\">2. \u5b9a\u671f\u5b9f\u884c\u30bf\u30b9\u30af\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# \u76e3\u8996\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4f8b\nALERT_THRESHOLD=80  # CPU\u4f7f\u7528\u7387\u306e\u3057\u304d\u3044\u5024\uff08%\uff09\n\n# CloudWatch\u30e1\u30c8\u30ea\u30af\u30b9\u306e\u53d6\u5f97\u3068\u5206\u6790\ncheck_instance_metrics() {\n  aws cloudwatch get-metric-statistics \\\n    --namespace AWS\/EC2 \\\n    --metric-name CPUUtilization \\\n    --dimensions Name=InstanceId,Value=$1 \\\n    --start-time $(date -d '1 hour ago' -u +%Y-%m-%dT%H:%M:%SZ) \\\n    --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \\\n    --period 300 \\\n    --statistics Average \\\n    --query 'Datapoints[*].{\n      Time: Timestamp,\n      CPU: Average\n    }' \\\n    --output json | jq -r '.[] | select(.CPU &gt;= '$ALERT_THRESHOLD')'\n}\n\n# \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u4e00\u89a7\u306e\u53d6\u5f97\ninstances=$(aws ec2 describe-instances \\\n  --filters \"Name=instance-state-name,Values=running\" \\\n  --query 'Reservations[*].Instances[*].{\n    ID: InstanceId,\n    Name: Tags[?Key==`Name`].Value | [0]\n  }' \\\n  --output json)\n\n# \u5404\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30e1\u30c8\u30ea\u30af\u30b9\u3092\u30c1\u30a7\u30c3\u30af\necho \"$instances\" | jq -r '.[][] | .ID' | while read -r instance_id; do\n  result=$(check_instance_metrics \"$instance_id\")\n  if [ ! -z \"$result\" ]; then\n    echo \"Alert: High CPU usage detected for instance $instance_id\"\n    echo \"$result\"\n  fi\ndone<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-59\">3. CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u6d3b\u7528<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# \u30c7\u30d7\u30ed\u30a4\u524d\u306e\u30ea\u30bd\u30fc\u30b9\u30c1\u30a7\u30c3\u30af\ncheck_resources() {\n  # ECS\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u30ad\u30e3\u30d1\u30b7\u30c6\u30a3\u30c1\u30a7\u30c3\u30af\n  cluster_capacity=$(aws ecs describe-clusters \\\n    --clusters production-cluster \\\n    --query 'clusters[*].{\n      Name: clusterName,\n      RegisteredInstances: registeredContainerInstancesCount,\n      PendingTasks: pendingTasksCount,\n      RunningTasks: runningTasksCount\n    }')\n\n  # ALB\u306e\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\n  target_health=$(aws elbv2 describe-target-health \\\n    --target-group-arn $TARGET_GROUP_ARN \\\n    --query 'TargetHealthDescriptions[*].{\n      Target: Target.Id,\n      Health: TargetHealth.State\n    }')\n\n  # \u7d50\u679c\u306e\u8a55\u4fa1\n  if echo \"$cluster_capacity\" | jq -e '.[][] | select(.RegisteredInstances &lt; 2)' &gt; \/dev\/null; then\n    echo \"Error: Insufficient cluster capacity\"\n    return 1\n  fi\n\n  if echo \"$target_health\" | jq -e '.[] | select(.Health != \"healthy\")' &gt; \/dev\/null; then\n    echo \"Error: Unhealthy targets detected\"\n    return 1\n  fi\n}\n\n# \u30e1\u30a4\u30f3\u51e6\u7406\nif ! check_resources; then\n  echo \"Pre-deployment checks failed\"\n  exit 1\nfi\n\necho \"All checks passed, proceeding with deployment\"<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u5b89\u5168\u306aAWS CLI\u64cd\u4f5c\u304c\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3055\u3089\u306b\u767a\u5c55\u7684\u306a\u30af\u30a8\u30ea\u306e\u6d3b\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-60\">\u767a\u5c55\u7684\u306aAWS CLI\u30af\u30a8\u30ea\u6d3b\u7528\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-61\">\u8907\u96d1\u306aJSON\u30c7\u30fc\u30bf\u306e\u64cd\u4f5c\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-62\">1. \u30cd\u30b9\u30c8\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u9ad8\u5ea6\u306a\u64cd\u4f5c<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># ECS\u30bf\u30b9\u30af\u5b9a\u7fa9\u306e\u8a73\u7d30\u306a\u5206\u6790\naws ecs describe-task-definition \\\n  --task-definition my-task:1 \\\n  --query '{\n    Family: taskDefinition.family,\n    Containers: taskDefinition.containerDefinitions[*].{\n      Name: name,\n      Image: image,\n      Memory: memory,\n      CPU: cpu,\n      Environment: environment[*].{\n        Key: name,\n        Value: value\n      },\n      Ports: portMappings[*].{\n        Container: containerPort,\n        Host: hostPort,\n        Protocol: protocol\n      }\n    }\n  }'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-63\">2. \u8907\u6570\u30b5\u30fc\u30d3\u30b9\u306e\u30c7\u30fc\u30bf\u7d50\u5408<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3068EBS\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u60c5\u5831\u3092\u7d50\u5408\nget_instance_storage_info() {\n  # \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u60c5\u5831\u306e\u53d6\u5f97\n  instances=$(aws ec2 describe-instances \\\n    --query 'Reservations[*].Instances[*].{\n      InstanceId: InstanceId,\n      Name: Tags[?Key==`Name`].Value | [0],\n      Type: InstanceType,\n      Volumes: BlockDeviceMappings[*].Ebs.VolumeId\n    }')\n\n  # \u30dc\u30ea\u30e5\u30fc\u30e0\u60c5\u5831\u306e\u53d6\u5f97\u3068\u7d50\u5408\n  echo \"$instances\" | jq -r '.[][] | .Volumes[]' | while read -r volume_id; do\n    volume_info=$(aws ec2 describe-volumes \\\n      --volume-ids \"$volume_id\" \\\n      --query 'Volumes[0].{\n        VolumeId: VolumeId,\n        Size: Size,\n        Type: VolumeType,\n        IOPS: Iops,\n        State: State\n      }')\n\n    # \u7d50\u679c\u306e\u7d50\u5408\n    jq -n \\\n      --arg vid \"$volume_id\" \\\n      --argjson inst \"$instances\" \\\n      --argjson vol \"$volume_info\" \\\n      '$inst[][] | select(.Volumes[] == $vid) * $vol'\n  done\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-64\">\u30ab\u30b9\u30bf\u30e0\u30b9\u30af\u30ea\u30d7\u30c8\u3068\u306e\u9023\u643a\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-65\">1. \u30c7\u30fc\u30bf\u51e6\u7406\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# AWS CLI\u30af\u30a8\u30ea\u7d50\u679c\u306e\u9ad8\u5ea6\u306a\u51e6\u7406\u3092\u884c\u3046\u95a2\u6570\u7fa4\nprocess_instance_metrics() {\n  local instance_id=$1\n  local start_time=$(date -d '7 days ago' -u +%Y-%m-%dT%H:%M:%SZ)\n  local end_time=$(date -u +%Y-%m-%dT%H:%M:%SZ)\n\n  # CPU\u4f7f\u7528\u7387\u306e\u53d6\u5f97\n  local cpu_metrics=$(aws cloudwatch get-metric-statistics \\\n    --namespace AWS\/EC2 \\\n    --metric-name CPUUtilization \\\n    --dimensions Name=InstanceId,Value=$instance_id \\\n    --start-time $start_time \\\n    --end-time $end_time \\\n    --period 3600 \\\n    --statistics Average Maximum \\\n    --query 'Datapoints[*].{\n      Timestamp: Timestamp,\n      Average: Average,\n      Maximum: Maximum\n    }')\n\n  # \u30e1\u30e2\u30ea\u4f7f\u7528\u7387\u306e\u53d6\u5f97\n  local memory_metrics=$(aws cloudwatch get-metric-statistics \\\n    --namespace System\/Linux \\\n    --metric-name MemoryUtilization \\\n    --dimensions Name=InstanceId,Value=$instance_id \\\n    --start-time $start_time \\\n    --end-time $end_time \\\n    --period 3600 \\\n    --statistics Average Maximum \\\n    --query 'Datapoints[*].{\n      Timestamp: Timestamp,\n      Average: Average,\n      Maximum: Maximum\n    }')\n\n  # \u30c7\u30fc\u30bf\u306e\u7d50\u5408\u3068\u5206\u6790\n  jq -n \\\n    --argjson cpu \"$cpu_metrics\" \\\n    --argjson mem \"$memory_metrics\" \\\n    '{\n      InstanceId: $ARGS.named.instance_id,\n      Metrics: {\n        CPU: $cpu,\n        Memory: $mem\n      },\n      Analysis: {\n        CPUAverage: ($cpu | map(.Average) | add \/ length),\n        MemoryAverage: ($mem | map(.Average) | add \/ length),\n        CPUPeaks: ($cpu | map(select(.Maximum &gt; 80)) | length),\n        MemoryPeaks: ($mem | map(select(.Maximum &gt; 80)) | length)\n      }\n    }' --arg instance_id \"$instance_id\"\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-66\">2. \u30ab\u30b9\u30bf\u30e0\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u30b7\u30b9\u30c6\u30e0<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# AWS\u30ea\u30bd\u30fc\u30b9\u306e\u5305\u62ec\u7684\u306a\u5206\u6790\u30ec\u30dd\u30fc\u30c8\u3092\u751f\u6210\ngenerate_resource_report() {\n  local report_date=$(date +%Y-%m-%d)\n  local report_file=\"aws_resource_report_${report_date}.json\"\n\n  # EC2\u30ea\u30bd\u30fc\u30b9\u60c5\u5831\u306e\u53d6\u5f97\n  local ec2_info=$(aws ec2 describe-instances \\\n    --query 'Reservations[*].Instances[*].{\n      InstanceId: InstanceId,\n      Type: InstanceType,\n      State: State.Name,\n      Platform: Platform || `Linux`,\n      Tags: Tags[?Key==`Name`].Value | [0]\n    }')\n\n  # RDS\u30ea\u30bd\u30fc\u30b9\u60c5\u5831\u306e\u53d6\u5f97\n  local rds_info=$(aws rds describe-db-instances \\\n    --query 'DBInstances[*].{\n      DBIdentifier: DBInstanceIdentifier,\n      Engine: Engine,\n      Class: DBInstanceClass,\n      Status: DBInstanceStatus\n    }')\n\n  # ELB\u30ea\u30bd\u30fc\u30b9\u60c5\u5831\u306e\u53d6\u5f97\n  local elb_info=$(aws elbv2 describe-load-balancers \\\n    --query 'LoadBalancers[*].{\n      Name: LoadBalancerName,\n      Type: Type,\n      Scheme: Scheme,\n      State: State.Code\n    }')\n\n  # \u30ec\u30dd\u30fc\u30c8\u306e\u751f\u6210\n  jq -n \\\n    --argjson ec2 \"$ec2_info\" \\\n    --argjson rds \"$rds_info\" \\\n    --argjson elb \"$elb_info\" \\\n    '{\n      ReportDate: $ARGS.named.report_date,\n      ResourceSummary: {\n        EC2: {\n          TotalInstances: ($ec2 | length),\n          RunningInstances: ($ec2 | map(select(.State == \"running\")) | length),\n          InstanceTypes: ($ec2 | group_by(.Type) | map({key: .[0].Type, count: length}))\n        },\n        RDS: {\n          TotalInstances: ($rds | length),\n          EngineTypes: ($rds | group_by(.Engine) | map({key: .[0].Engine, count: length}))\n        },\n        ELB: {\n          TotalLoadBalancers: ($elb | length),\n          Types: ($elb | group_by(.Type) | map({key: .[0].Type, count: length}))\n        }\n      },\n      Details: {\n        EC2: $ec2,\n        RDS: $rds,\n        ELB: $elb\n      }\n    }' --arg report_date \"$report_date\" &gt; \"$report_file\"\n\n  echo \"\u30ec\u30dd\u30fc\u30c8\u304c\u751f\u6210\u3055\u308c\u307e\u3057\u305f: $report_file\"\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-67\">CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u6d3b\u7528\u4f8b<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-68\">1. \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u524d\u306e\u74b0\u5883\u30c1\u30a7\u30c3\u30af<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u524d\u306e\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u30c1\u30a7\u30c3\u30af\ncheck_infrastructure() {\n  local environment=$1\n  local errors=0\n\n  # ECS\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u72b6\u614b\u30c1\u30a7\u30c3\u30af\n  local cluster_status=$(aws ecs describe-clusters \\\n    --clusters \"${environment}-cluster\" \\\n    --query 'clusters[0].{\n      Status: status,\n      Instances: registeredContainerInstancesCount,\n      Tasks: runningTasksCount\n    }')\n\n  # ALB\u30bf\u30fc\u30b2\u30c3\u30c8\u30b0\u30eb\u30fc\u30d7\u306e\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\n  local target_health=$(aws elbv2 describe-target-health \\\n    --target-group-arn \"${environment}-tg-arn\" \\\n    --query 'TargetHealthDescriptions[*].{\n      Target: Target.Id,\n      Health: TargetHealth.State\n    }')\n\n  # Auto Scaling\u30b0\u30eb\u30fc\u30d7\u306e\u72b6\u614b\u30c1\u30a7\u30c3\u30af\n  local asg_status=$(aws autoscaling describe-auto-scaling-groups \\\n    --auto-scaling-group-names \"${environment}-asg\" \\\n    --query '{\n      DesiredCapacity: AutoScalingGroups[0].DesiredCapacity,\n      CurrentInstances: AutoScalingGroups[0].Instances[*].LifecycleState\n    }')\n\n  # \u7d50\u679c\u306e\u8a55\u4fa1\n  if [ \"$(echo \"$cluster_status\" | jq -r '.Status')\" != \"ACTIVE\" ]; then\n    echo \"Error: ECS\u30af\u30e9\u30b9\u30bf\u30fc\u304c\u975e\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u3059\"\n    ((errors++))\n  fi\n\n  if [ \"$(echo \"$target_health\" | jq '[.[] | select(.Health != \"healthy\")] | length')\" -gt 0 ]; then\n    echo \"Error: \u4e0d\u5065\u5168\u306a\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u5b58\u5728\u3057\u307e\u3059\"\n    ((errors++))\n  fi\n\n  local desired_capacity=$(echo \"$asg_status\" | jq -r '.DesiredCapacity')\n  local current_instances=$(echo \"$asg_status\" | jq -r '.CurrentInstances | length')\n  if [ \"$current_instances\" -lt \"$desired_capacity\" ]; then\n    echo \"Error: Auto Scaling\u30b0\u30eb\u30fc\u30d7\u304c\u671f\u5f85\u3055\u308c\u308b\u5bb9\u91cf\u306b\u9054\u3057\u3066\u3044\u307e\u305b\u3093\"\n    ((errors++))\n  fi\n\n  return $errors\n}\n\n# \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\ndeploy_application() {\n  local environment=$1\n\n  echo \"\u74b0\u5883\u30c1\u30a7\u30c3\u30af\u3092\u958b\u59cb: $environment\"\n  if ! check_infrastructure \"$environment\"; then\n    echo \"Error: \u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u30c1\u30a7\u30c3\u30af\u306b\u5931\u6557\u3057\u307e\u3057\u305f\"\n    exit 1\n  fi\n\n  echo \"\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u958b\u59cb\u3057\u307e\u3059...\"\n  # \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30ed\u30b8\u30c3\u30af\u3092\u3053\u3053\u306b\u5b9f\u88c5\n}\n\n# \u30e1\u30a4\u30f3\u51e6\u7406\nmain() {\n  local environment=${1:-\"production\"}\n  deploy_application \"$environment\"\n}\n\nmain \"$@\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-69\">2. \u7d99\u7d9a\u7684\u306a\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u76e3\u8996<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# \u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u7d99\u7d9a\u7684\u306a\u76e3\u8996\u3068\u5206\u6790\nmonitor_infrastructure() {\n  # \u30e1\u30c8\u30ea\u30af\u30b9\u306e\u53ce\u96c6\u671f\u9593\u8a2d\u5b9a\n  local start_time=$(date -d '1 hour ago' -u +%Y-%m-%dT%H:%M:%SZ)\n  local end_time=$(date -u +%Y-%m-%dT%H:%M:%SZ)\n\n  # ECS\u30b5\u30fc\u30d3\u30b9\u306e\u30e1\u30c8\u30ea\u30af\u30b9\u53ce\u96c6\n  local ecs_metrics=$(aws cloudwatch get-metric-statistics \\\n    --namespace AWS\/ECS \\\n    --metric-name CPUUtilization \\\n    --dimensions Name=ClusterName,Value=production-cluster \\\n    --start-time \"$start_time\" \\\n    --end-time \"$end_time\" \\\n    --period 300 \\\n    --statistics Average Maximum \\\n    --query 'Datapoints[*].{\n      Time: Timestamp,\n      Average: Average,\n      Maximum: Maximum\n    }')\n\n  # RDS\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30e1\u30c8\u30ea\u30af\u30b9\u53ce\u96c6\n  local rds_metrics=$(aws cloudwatch get-metric-statistics \\\n    --namespace AWS\/RDS \\\n    --metric-name DatabaseConnections \\\n    --dimensions Name=DBInstanceIdentifier,Value=production-db \\\n    --start-time \"$start_time\" \\\n    --end-time \"$end_time\" \\\n    --period 300 \\\n    --statistics Average Maximum \\\n    --query 'Datapoints[*].{\n      Time: Timestamp,\n      Average: Average,\n      Maximum: Maximum\n    }')\n\n  # \u30e1\u30c8\u30ea\u30af\u30b9\u306e\u5206\u6790\u3068\u8b66\u544a\u751f\u6210\n  jq -n \\\n    --argjson ecs \"$ecs_metrics\" \\\n    --argjson rds \"$rds_metrics\" \\\n    '{\n      Timestamp: now,\n      ECSAnalysis: {\n        AverageCPU: ($ecs | map(.Average) | add \/ length),\n        MaxCPU: ($ecs | map(.Maximum) | max),\n        Warnings: ($ecs | map(select(.Maximum &gt; 80)) | length)\n      },\n      RDSAnalysis: {\n        AverageConnections: ($rds | map(.Average) | add \/ length),\n        MaxConnections: ($rds | map(.Maximum) | max),\n        Warnings: ($rds | map(select(.Maximum &gt; 100)) | length)\n      }\n    }'\n}\n\n# \u76e3\u8996\u7d50\u679c\u306b\u57fa\u3065\u304f\u30a2\u30af\u30b7\u30e7\u30f3\u5b9f\u884c\nprocess_monitoring_results() {\n  local results=$1\n\n  # \u8b66\u544a\u6761\u4ef6\u306e\u8a55\u4fa1\n  local ecs_warnings=$(echo \"$results\" | jq -r '.ECSAnalysis.Warnings')\n  local rds_warnings=$(echo \"$results\" | jq -r '.RDSAnalysis.Warnings')\n\n  if [ \"$ecs_warnings\" -gt 0 ] || [ \"$rds_warnings\" -gt 0 ]; then\n    # \u30a2\u30e9\u30fc\u30c8\u901a\u77e5\u306e\u9001\u4fe1\n    aws sns publish \\\n      --topic-arn \"arn:aws:sns:region:account:alerts\" \\\n      --message \"$(echo \"$results\" | jq -r tostring)\" \\\n      --subject \"\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u8b66\u544a\"\n  fi\n}\n\n# \u30e1\u30a4\u30f3\u76e3\u8996\u30eb\u30fc\u30d7\nmain() {\n  while true; do\n    echo \"\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u76e3\u8996\u3092\u5b9f\u884c\u4e2d...\"\n    results=$(monitor_infrastructure)\n    process_monitoring_results \"$results\"\n    sleep 300  # 5\u5206\u9593\u9694\u3067\u76e3\u8996\n  done\n}\n\nmain \"$@\"<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u767a\u5c55\u7684\u306a\u6d3b\u7528\u4f8b\u3092\u53c2\u8003\u306b\u3001AWS CLI\u30af\u30a8\u30ea\u3092\u6d3b\u7528\u3057\u305f\u52b9\u7387\u7684\u306a\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u7ba1\u7406\u3068\u81ea\u52d5\u5316\u3092\u5b9f\u73fe\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5404\u4f8b\u306f\u5b9f\u969b\u306e\u8981\u4ef6\u306b\u5fdc\u3058\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":{"0":"post-2390","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2390"}],"version-history":[{"count":2,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2390\/revisions"}],"predecessor-version":[{"id":2392,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2390\/revisions\/2392"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}