{"id":2395,"date":"2025-03-24T08:47:31","date_gmt":"2025-03-23T23:47:31","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=2395"},"modified":"2025-03-24T08:47:54","modified_gmt":"2025-03-23T23:47:54","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91aws-cli-s3%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a13%e3%81%ae%e5%9f%ba%e6%9c%ac%e6%93%8d%e4%bd%9c%e3%81%8b%e3%82%89%e8%87%aa%e5%8b%95","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=2395","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011AWS CLI S3\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a13\u306e\u57fa\u672c\u64cd\u4f5c\u304b\u3089\u81ea\u52d5\u5316\u307e\u3067\u8a73\u3057\u304f\u89e3\u8aac"},"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 S3 \u3068\u306f\uff1a\u57fa\u790e\u77e5\u8b58\u3068\u5c0e\u5165\u65b9\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">AWS CLI S3 \u306e\u7279\u5fb4\u3068\u6ce8\u76ee\u70b9<\/a>      <\/li>      <li>        <a href=\"#i-2\">AWS CLI \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u521d\u671f\u8a2d\u5b9a\u624b\u9806<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">\u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a\u3068\u78ba\u8a8d\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">AWS CLI S3\u306e\u57fa\u672c\u64cd\u4f5c\uff1a13\u306e\u3088\u304f\u4f7f\u3046\u30b3\u30de\u30f3\u30c9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-5\">\u30d0\u30b1\u30c3\u30c8\u306e\u4f5c\u6210\u30fb\u4e00\u89a7\u8868\u793a\u30fb\u524a\u9664<\/a>      <\/li>      <li>        <a href=\"#i-6\">\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u30fb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30fb\u524a\u9664<\/a>      <\/li>      <li>        <a href=\"#i-7\">\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u540c\u671f\uff08sync\uff09\u30b3\u30de\u30f3\u30c9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-8\">\u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\u8a2d\u5b9a\u3068\u78ba\u8a8d<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-9\">AWS CLI S3\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-10\">\u5927\u5bb9\u91cf\u30d5\u30a1\u30a4\u30eb\u306e\u52b9\u7387\u7684\u306a\u8ee2\u9001\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-11\">\u8907\u6570\u30d5\u30a1\u30a4\u30eb\u306e\u4e00\u62ec\u51e6\u7406\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-12\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-13\">AWS CLI S3 \u306e\u81ea\u52d5\u5316\u3068\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-14\">\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u306e\u6d3b\u7528\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-15\">\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u51e6\u7406\u306e\u81ea\u52d5\u5316<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-16\">CI\/CD \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u5229\u7528\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-17\">AWS CLI S3 \u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-18\">\u9069\u5207\u306a IAM \u30dd\u30ea\u30b7\u30fc\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-19\">\u6697\u53f7\u5316\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u4f7f\u3044\u65b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-20\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3068\u5bfe\u7b56<\/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 S3 \u3068\u306f\uff1a\u57fa\u790e\u77e5\u8b58\u3068\u5c0e\u5165\u65b9\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">AWS CLI S3 \u306e\u7279\u5fb4\u3068\u6ce8\u76ee\u70b9<\/h3>\n\n\n\n<p>AWS CLI S3\u306f\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089Amazon S3\u30d0\u30b1\u30c3\u30c8\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u7279\u5fb4\u306b\u3088\u308a\u3001\u591a\u304f\u306e\u958b\u767a\u8005\u304b\u3089\u652f\u6301\u3055\u308c\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u52b9\u7387\u7684\u306a\u64cd\u4f5c<\/strong>: GUI\u3088\u308a\u3082\u7d20\u65e9\u304f\u64cd\u4f5c\u304c\u53ef\u80fd<\/li>\n\n\n\n<li><strong>\u81ea\u52d5\u5316\u306e\u5bb9\u6613\u3055<\/strong>: \u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3084CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306b\u7d44\u307f\u8fbc\u307f\u53ef\u80fd<\/li>\n\n\n\n<li><strong>\u30d0\u30c3\u30c1\u51e6\u7406<\/strong>: \u8907\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u3084\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4e00\u62ec\u3067\u51e6\u7406\u53ef\u80fd<\/li>\n\n\n\n<li><strong>\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0<\/strong>: Windows\u3001macOS\u3001Linux\u3067\u5229\u7528\u53ef\u80fd<\/li>\n\n\n\n<li><strong>\u9ad8\u5ea6\u306a\u5236\u5fa1<\/strong>: \u8a73\u7d30\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3088\u308b\u67d4\u8edf\u306a\u64cd\u4f5c<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">AWS CLI \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u521d\u671f\u8a2d\u5b9a\u624b\u9806<\/h3>\n\n\n\n<p>AWS CLI\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3001\u4f7f\u7528\u3059\u308bOS\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u4e3b\u8981\u306aOS\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<p><strong>Windows \u306e\u5834\u5408\uff1a<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>AWS CLI\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\uff0864\u30d3\u30c3\u30c8\uff09\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/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=\"\">   https:\/\/awscli.amazonaws.com\/AWSCLIV2.msi<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u5b9f\u884c<\/li>\n\n\n\n<li>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30a6\u30a3\u30b6\u30fc\u30c9\u306e\u6307\u793a\u306b\u5f93\u3046<\/li>\n<\/ol>\n\n\n\n<p><strong>macOS \u306e\u5834\u5408\uff1a<\/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=\"\"># Homebrew\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\nbrew install awscli\n\n# \u516c\u5f0f\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\ncurl \"https:\/\/awscli.amazonaws.com\/AWSCLIV2.pkg\" -o \"AWSCLIV2.pkg\"\nsudo installer -pkg AWSCLIV2.pkg -target \/<\/pre>\n\n\n\n<p><strong>Linux \u306e\u5834\u5408\uff1a<\/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=\"\"># Amazon Linux 2 &amp; RHEL\nsudo yum install -y aws-cli\n\n# Ubuntu &amp; Debian\nsudo apt-get update\nsudo apt-get install -y awscli<\/pre>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u78ba\u8a8d\u3057\u3066\u6b63\u3057\u304f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\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=\"\">aws --version<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a\u3068\u78ba\u8a8d\u65b9\u6cd5<\/h3>\n\n\n\n<p>AWS CLI\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u9069\u5207\u306a\u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u6e96\u5099<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS Management Console\u306b\u30ed\u30b0\u30a4\u30f3<\/li>\n\n\n\n<li>IAM\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u304b\u3089\u5bfe\u8c61\u30e6\u30fc\u30b6\u30fc\u3092\u9078\u629e<\/li>\n\n\n\n<li>\u300c\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a8d\u8a3c\u60c5\u5831\u300d\u30bf\u30d6\u3067\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u3092\u4f5c\u6210<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a<\/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=\"\">   aws configure<\/pre>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u9806\u306b\u5165\u529b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS Access Key ID<\/li>\n\n\n\n<li>AWS Secret Access Key<\/li>\n\n\n\n<li>Default region name (\u4f8b: ap-northeast-1)<\/li>\n\n\n\n<li>Default output format (json\/yaml\/text)<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8a2d\u5b9a\u306e\u78ba\u8a8d<\/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=\"\">   # \u8a2d\u5b9a\u3057\u305f\u8a8d\u8a3c\u60c5\u5831\u306e\u78ba\u8a8d\n   aws configure list\n\n   # \u3088\u308a\u8a73\u7d30\u306a\u8a2d\u5b9a\u306e\u78ba\u8a8d\n   aws configure get aws_access_key_id\n   aws configure get region<\/pre>\n\n\n\n<p>\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u672c\u756a\u74b0\u5883\u7528\u3068\u30c6\u30b9\u30c8\u74b0\u5883\u7528\u3067\u7570\u306a\u308b\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b<\/li>\n\n\n\n<li>\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306f\u5b9a\u671f\u7684\u306b\u30ed\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\uff0890\u65e5\u63a8\u5968\uff09<\/li>\n\n\n\n<li>\u5fc5\u8981\u6700\u5c0f\u9650\u306e\u6a29\u9650\u3092\u6301\u3064IAM\u30e6\u30fc\u30b6\u30fc\u3092\u4f7f\u7528<\/li>\n<\/ul>\n\n\n\n<p>\u6ce8\u610f\u70b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306f\u53b3\u91cd\u306b\u7ba1\u7406\u3057\u3001\u516c\u958b\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30df\u30c3\u30c8\u3057\u306a\u3044<\/li>\n\n\n\n<li>\u5171\u6709\u7aef\u672b\u3067\u306e\u8a8d\u8a3c\u60c5\u5831\u306e\u53d6\u308a\u6271\u3044\u306b\u306f\u5341\u5206\u6ce8\u610f<\/li>\n\n\n\n<li>\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u3067\u306fIAM\u30ed\u30fc\u30eb\u306e\u4f7f\u7528\u3092\u691c\u8a0e<\/li>\n<\/ul>\n\n\n\n<p>\u4ee5\u4e0a\u306e\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3059\u308c\u3070\u3001AWS CLI S3\u3092\u4f7f\u7528\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5177\u4f53\u7684\u306aS3\u306e\u64cd\u4f5c\u30b3\u30de\u30f3\u30c9\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">AWS CLI S3\u306e\u57fa\u672c\u64cd\u4f5c\uff1a13\u306e\u3088\u304f\u4f7f\u3046\u30b3\u30de\u30f3\u30c9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u30d0\u30b1\u30c3\u30c8\u306e\u4f5c\u6210\u30fb\u4e00\u89a7\u8868\u793a\u30fb\u524a\u9664<\/h3>\n\n\n\n<p>S3\u30d0\u30b1\u30c3\u30c8\u306e\u57fa\u672c\u64cd\u4f5c\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d0\u30b1\u30c3\u30c8\u306e\u4f5c\u6210<\/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=\"\"># \u30d0\u30b1\u30c3\u30c8\u306e\u4f5c\u6210\uff08\u57fa\u672c\uff09\naws s3 mb s3:\/\/my-bucket-name\n\n# \u30ea\u30fc\u30b8\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u30d0\u30b1\u30c3\u30c8\u3092\u4f5c\u6210\naws s3 mb s3:\/\/my-bucket-name --region ap-northeast-1\n\n# \u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u3092\u6709\u52b9\u5316\u3057\u3066\u30d0\u30b1\u30c3\u30c8\u3092\u4f5c\u6210\naws s3api create-bucket \\\n    --bucket my-bucket-name \\\n    --region ap-northeast-1 \\\n    --create-bucket-configuration LocationConstraint=ap-northeast-1\naws s3api put-bucket-versioning \\\n    --bucket my-bucket-name \\\n    --versioning-configuration Status=Enabled<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d0\u30b1\u30c3\u30c8\u306e\u4e00\u89a7\u8868\u793a<\/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=\"\"># \u3059\u3079\u3066\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u8868\u793a\naws s3 ls\n\n# \u7279\u5b9a\u306e\u30d0\u30b1\u30c3\u30c8\u5185\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8868\u793a\naws s3 ls s3:\/\/my-bucket-name\/\n\n# \u518d\u5e30\u7684\u306b\u3059\u3079\u3066\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8868\u793a\naws s3 ls s3:\/\/my-bucket-name\/ --recursive\n\n# \u8a73\u7d30\u60c5\u5831\uff08\u30b5\u30a4\u30ba\u3001\u66f4\u65b0\u65e5\u6642\u306a\u3069\uff09\u3092\u8868\u793a\naws s3 ls s3:\/\/my-bucket-name\/ --human-readable --summarize<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d0\u30b1\u30c3\u30c8\u306e\u524a\u9664<\/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=\"\"># \u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u3092\u524a\u9664\naws s3 rb s3:\/\/my-bucket-name\n\n# \u30d0\u30b1\u30c3\u30c8\u5185\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3082\u542b\u3081\u3066\u5f37\u5236\u524a\u9664\naws s3 rb s3:\/\/my-bucket-name --force<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u30fb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30fb\u524a\u9664<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/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=\"\"># \u5358\u4e00\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\naws s3 cp file.txt s3:\/\/my-bucket-name\/\n\n# \u516c\u958b\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u3092\u4ed8\u4e0e\u3057\u3066\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\naws s3 cp file.txt s3:\/\/my-bucket-name\/ --acl public-read\n\n# \u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u4ed8\u4e0e\u3057\u3066\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\naws s3 cp file.txt s3:\/\/my-bucket-name\/ \\\n    --metadata '{\"key1\":\"value1\",\"key2\":\"value2\"}'\n\n# \u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u6697\u53f7\u5316\u3092\u6307\u5b9a\u3057\u3066\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\naws s3 cp file.txt s3:\/\/my-bucket-name\/ \\\n    --sse AES256<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/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=\"\"># \u5358\u4e00\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\naws s3 cp s3:\/\/my-bucket-name\/file.txt .\/\n\n# \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5168\u4f53\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\naws s3 cp s3:\/\/my-bucket-name\/directory\/ .\/ --recursive\n\n# \u7279\u5b9a\u306e\u62e1\u5f35\u5b50\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u307f\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\naws s3 cp s3:\/\/my-bucket-name\/ .\/ \\\n    --recursive \\\n    --exclude \"*\" \\\n    --include \"*.jpg\"<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d5\u30a1\u30a4\u30eb\u306e\u524a\u9664<\/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=\"\"># \u5358\u4e00\u30d5\u30a1\u30a4\u30eb\u306e\u524a\u9664\naws s3 rm s3:\/\/my-bucket-name\/file.txt\n\n# \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\naws s3 rm s3:\/\/my-bucket-name\/directory\/ --recursive\n\n# \u7279\u5b9a\u306e\u30d1\u30bf\u30fc\u30f3\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u307f\u524a\u9664\naws s3 rm s3:\/\/my-bucket-name\/ \\\n    --recursive \\\n    --exclude \"*\" \\\n    --include \"*.tmp\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u540c\u671f\uff08sync\uff09\u30b3\u30de\u30f3\u30c9<\/h3>\n\n\n\n<p>sync\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068S3\u30d0\u30b1\u30c3\u30c8\u9593\u306e\u5dee\u5206\u3092\u540c\u671f\u3059\u308b\u5f37\u529b\u306a\u6a5f\u80fd\u3067\u3059\u3002<\/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=\"\"># \u30ed\u30fc\u30ab\u30eb\u304b\u3089S3\u3078\u306e\u540c\u671f\naws s3 sync .\/local-dir s3:\/\/my-bucket-name\/remote-dir\n\n# S3\u304b\u3089\u30ed\u30fc\u30ab\u30eb\u3078\u306e\u540c\u671f\naws s3 sync s3:\/\/my-bucket-name\/remote-dir .\/local-dir\n\n# \u524a\u9664\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3082\u540c\u671f\uff08\u5b8c\u5168\u30df\u30e9\u30fc\u30ea\u30f3\u30b0\uff09\naws s3 sync .\/local-dir s3:\/\/my-bucket-name\/remote-dir --delete\n\n# \u7279\u5b9a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u9664\u5916\u3057\u3066\u540c\u671f\naws s3 sync .\/local-dir s3:\/\/my-bucket-name\/remote-dir \\\n    --exclude \"*.tmp\" \\\n    --exclude \"*.log\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\u8a2d\u5b9a\u3068\u78ba\u8a8d<\/h3>\n\n\n\n<p>\u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306fJSON\u5f62\u5f0f\u3067\u5b9a\u7fa9\u3057\u3001\u30d0\u30b1\u30c3\u30c8\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\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=\"\">aws s3api get-bucket-policy --bucket my-bucket-name<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\u8a2d\u5b9a<\/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=\"\"># \u30dd\u30ea\u30b7\u30fc\u3092\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8a2d\u5b9a\naws s3api put-bucket-policy \\\n    --bucket my-bucket-name \\\n    --policy file:\/\/policy.json\n\n# \u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30a2\u30af\u30bb\u30b9\u306e\u307f\u3092\u8a31\u53ef\u3059\u308b\u30dd\u30ea\u30b7\u30fc\u4f8b\ncat &gt; policy.json &lt;&lt; 'EOF'\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"IPAllow\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": \"s3:*\",\n            \"Resource\": [\n                \"arn:aws:s3:::my-bucket-name\",\n                \"arn:aws:s3:::my-bucket-name\/*\"\n            ],\n            \"Condition\": {\n                \"IpAddress\": {\n                    \"aws:SourceIp\": \"203.0.113.0\/24\"\n                }\n            }\n        }\n    ]\n}\nEOF<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\u524a\u9664<\/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=\"\">aws s3api delete-bucket-policy --bucket my-bucket-name<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30b3\u30de\u30f3\u30c9\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001S3\u30d0\u30b1\u30c3\u30c8\u306e\u52b9\u7387\u7684\u306a\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\u30b3\u30de\u30f3\u30c9\u3092\u6d3b\u7528\u3057\u305f\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-9\">AWS CLI S3\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u5927\u5bb9\u91cf\u30d5\u30a1\u30a4\u30eb\u306e\u52b9\u7387\u7684\u306a\u8ee2\u9001\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u5927\u5bb9\u91cf\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u969b\u306f\u3001\u8ee2\u9001\u306e\u52b9\u7387\u5316\u3068\u4fe1\u983c\u6027\u306e\u78ba\u4fdd\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\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=\"\"># \u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u8a2d\u5b9a\naws configure set default.s3.multipart_threshold 64MB\naws configure set default.s3.multipart_chunksize 16MB\naws configure set default.s3.max_concurrent_requests 10\n\n# \u5927\u5bb9\u91cf\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\uff08\u81ea\u52d5\u7684\u306b\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u8ee2\u9001\u304c\u9069\u7528\uff09\naws s3 cp large_file.zip s3:\/\/my-bucket-name\/<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u8ee2\u9001\u9ad8\u901f\u5316\u306e\u8a2d\u5b9a<\/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=\"\"># \u8ee2\u9001\u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u6709\u52b9\u5316\naws s3api put-bucket-accelerate-configuration \\\n    --bucket my-bucket-name \\\n    --accelerate-configuration Status=Enabled\n\n# \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u305f\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\naws s3 cp large_file.zip s3:\/\/my-bucket-name\/ \\\n    --endpoint-url http:\/\/s3-accelerate.amazonaws.com<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u306b\u3088\u308b\u6574\u5408\u6027\u78ba\u8a8d<\/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=\"\"># \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u6642\u306b\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u3092\u8a08\u7b97\naws s3 cp large_file.zip s3:\/\/my-bucket-name\/ \\\n    --checksum SHA256\n\n# \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u5f8c\u306e\u6574\u5408\u6027\u78ba\u8a8d\naws s3api head-object \\\n    --bucket my-bucket-name \\\n    --key large_file.zip \\\n    --query ChecksumSHA256<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u8907\u6570\u30d5\u30a1\u30a4\u30eb\u306e\u4e00\u62ec\u51e6\u7406\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>\u5927\u91cf\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u305f\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=\"\"># \u8907\u6570\u306e\u6761\u4ef6\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\naws s3 cp s3:\/\/my-bucket-name\/ .\/download\/ \\\n    --recursive \\\n    --exclude \"*\" \\\n    --include \"*.jpg\" \\\n    --include \"*.png\" \\\n    --exclude \"thumb\/*\"\n\n# \u66f4\u65b0\u65e5\u6642\u306b\u3088\u308b\u9078\u629e\naws s3 sync s3:\/\/my-bucket-name\/logs\/ .\/logs\/ \\\n    --recursive \\\n    --exclude \"*\" \\\n    --include \"*.log\" \\\n    --newer-than 2024-01-01<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d0\u30c3\u30c1\u51e6\u7406\u306e\u52b9\u7387\u5316<\/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=\"\"># \u4e26\u5217\u51e6\u7406\u306e\u8a2d\u5b9a\naws configure set default.s3.max_concurrent_requests 20\naws configure set default.s3.max_queue_size 10000\n\n# \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u3092\u4fdd\u6301\u3057\u305f\u30b3\u30d4\u30fc\naws s3 cp .\/local_dir\/ s3:\/\/my-bucket-name\/remote_dir\/ \\\n    --recursive \\\n    --preserve<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3068\u30bd\u30fc\u30c8<\/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=\"\"># \u30b5\u30a4\u30ba\u3067\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\naws s3api list-objects-v2 \\\n    --bucket my-bucket-name \\\n    --query 'Contents[?Size &gt; `10485760`]' \\\n    --output json\n\n# \u66f4\u65b0\u65e5\u6642\u3067\u30bd\u30fc\u30c8\naws s3api list-objects-v2 \\\n    --bucket my-bucket-name \\\n    --query 'sort_by(Contents, &amp;LastModified)[]'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h3>\n\n\n\n<p>\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u5bfe\u51e6\u6cd5<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-9177f172-8c7d-467d-8165-01f2897dfe9a\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30a8\u30e9\u30fc<\/th><th>\u539f\u56e0<\/th><th>\u5bfe\u51e6\u6cd5<\/th><\/tr><\/thead><tbody><tr><td>AccessDenied<\/td><td>\u6a29\u9650\u4e0d\u8db3<\/td><td>IAM\u30dd\u30ea\u30b7\u30fc\u306e\u898b\u76f4\u3057<\/td><\/tr><tr><td>NoSuchBucket<\/td><td>\u30d0\u30b1\u30c3\u30c8\u4e0d\u5728<\/td><td>\u30d0\u30b1\u30c3\u30c8\u540d\u306e\u78ba\u8a8d<\/td><\/tr><tr><td>InvalidRequest<\/td><td>\u30ea\u30af\u30a8\u30b9\u30c8\u4e0d\u6b63<\/td><td>\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u78ba\u8a8d<\/td><\/tr><tr><td>SlowDown<\/td><td>\u30ea\u30af\u30a8\u30b9\u30c8\u904e\u591a<\/td><td>\u30ea\u30c8\u30e9\u30a4\u9593\u9694\u306e\u8abf\u6574<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5<\/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\u6642\u306e\u30ea\u30c8\u30e9\u30a4\u8a2d\u5b9a\naws configure set default.retry_mode adaptive\naws configure set default.max_attempts 5\n\n# \u30a8\u30e9\u30fc\u30ed\u30b0\u306e\u8a73\u7d30\u5316\naws s3 cp large_file.zip s3:\/\/my-bucket-name\/ \\\n    --debug 2&gt; error.log\n\n# \u7d42\u4e86\u30b3\u30fc\u30c9\u306e\u30c1\u30a7\u30c3\u30af\nif [ $? -eq 0 ]; then\n    echo \"\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u6210\u529f\"\nelse\n    echo \"\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\"\nfi<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u554f\u984c\u306e\u5207\u308a\u5206\u3051<\/strong><\/li>\n<\/ul>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a\u306e\u78ba\u8a8d<\/li>\n\n\n\n<li>\u8a8d\u8a3c\u60c5\u5831\u306e\u6709\u52b9\u6027\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30d0\u30b1\u30c3\u30c8\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5185\u5bb9\u78ba\u8a8d<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u306e\u6d3b\u7528<\/strong><\/li>\n<\/ul>\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=\"\"># \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306e\u51fa\u529b\nexport AWS_DEBUG=true\naws s3 ls --debug\n\n# HTTP\u901a\u4fe1\u306e\u8a73\u7d30\u78ba\u8a8d\naws s3 cp file.txt s3:\/\/my-bucket-name\/ \\\n    --debug \\\n    --endpoint-url http:\/\/s3.amazonaws.com<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u4e00\u822c\u7684\u306a\u89e3\u6c7a\u624b\u9806<\/strong><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>AWS CLI\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3078\u306e\u66f4\u65b0<\/li>\n\n\n\n<li>\u8a8d\u8a3c\u60c5\u5831\u306e\u518d\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\u78ba\u8a8d<\/li>\n\n\n\n<li>VPC\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u78ba\u8a8d\uff08VPC\u5185\u304b\u3089\u5b9f\u884c\u6642\uff09<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u8df5\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001AWS CLI S3\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u64cd\u4f5c\u3092\u81ea\u52d5\u5316\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-13\">AWS CLI S3 \u306e\u81ea\u52d5\u5316\u3068\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u306e\u6d3b\u7528\u4f8b<\/h3>\n\n\n\n<p>AWS CLI S3\u306e\u64cd\u4f5c\u3092\u81ea\u52d5\u5316\u3059\u308b\u305f\u3081\u306e\u5b9f\u8df5\u7684\u306a\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u4f8b\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u65e5\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b9\u30af\u30ea\u30d7\u30c8<\/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=\"\">#!\/bin\/bash\n\n# \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a\nSOURCE_DIR=\"\/var\/www\/html\"\nBUCKET_NAME=\"my-backup-bucket\"\nBACKUP_DIR=\"daily-backup\"\nDATE=$(date +%Y-%m-%d)\n\n# \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u5b9f\u884c\nbackup_daily() {\n    # \u5727\u7e2e\n    tar -czf \"\/tmp\/backup-${DATE}.tar.gz\" \"${SOURCE_DIR}\"\n\n    # S3\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n    aws s3 cp \"\/tmp\/backup-${DATE}.tar.gz\" \\\n        \"s3:\/\/${BUCKET_NAME}\/${BACKUP_DIR}\/${DATE}\/\"\n\n    # \u53e4\u3044\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u524a\u9664\uff0830\u65e5\u4ee5\u4e0a\u524d\uff09\n    aws s3 ls \"s3:\/\/${BUCKET_NAME}\/${BACKUP_DIR}\/\" | \\\n        awk '{print $2}' | \\\n        grep -E '^[0-9]{4}-[0-9]{2}-[0-9]{2}\/$' | \\\n        while read -r dir; do\n            dir_date=$(echo \"$dir\" | cut -d'\/' -f1)\n            days_old=$(( ( $(date +%s) - $(date -d \"$dir_date\" +%s) ) \/ 86400 ))\n            if [ \"$days_old\" -gt 30 ]; then\n                aws s3 rm \"s3:\/\/${BUCKET_NAME}\/${BACKUP_DIR}\/${dir}\" --recursive\n            fi\n        done\n\n    # \u4e00\u6642\u30d5\u30a1\u30a4\u30eb\u306e\u524a\u9664\n    rm \"\/tmp\/backup-${DATE}.tar.gz\"\n}\n\n# \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\nbackup_daily || {\n    echo \"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u5931\u6557: $(date)\" &gt;&gt; \/var\/log\/backup-error.log\n    exit 1\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30ed\u30b0\u30ed\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u30b9\u30af\u30ea\u30d7\u30c8<\/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=\"\">#!\/bin\/bash\n\n# \u30ed\u30b0\u30ed\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u8a2d\u5b9a\nLOG_DIR=\"\/var\/log\"\nBUCKET_NAME=\"my-logs-bucket\"\nRETENTION_DAYS=90\n\n# \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u5727\u7e2e\u3068\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\nrotate_logs() {\n    find \"${LOG_DIR}\" -name \"*.log\" -type f -mtime +7 | while read -r log_file; do\n        filename=$(basename \"$log_file\")\n        date_suffix=$(date +%Y%m%d)\n\n        # \u5727\u7e2e\n        gzip -c \"$log_file\" &gt; \"\/tmp\/${filename}-${date_suffix}.gz\"\n\n        # S3\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n        aws s3 cp \"\/tmp\/${filename}-${date_suffix}.gz\" \\\n            \"s3:\/\/${BUCKET_NAME}\/logs\/${filename}\/${date_suffix}\/\"\n\n        # \u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u306e\u524a\u9664\n        rm \"\/tmp\/${filename}-${date_suffix}.gz\"\n        cat \/dev\/null &gt; \"$log_file\"\n    done\n\n    # \u53e4\u3044\u30ed\u30b0\u306e\u524a\u9664\n    aws s3 ls \"s3:\/\/${BUCKET_NAME}\/logs\/\" --recursive | \\\n        awk '{print $4}' | \\\n        while read -r key; do\n            file_date=$(echo \"$key\" | grep -oE '[0-9]{8}')\n            if [ -n \"$file_date\" ]; then\n                days_old=$(( ( $(date +%s) - $(date -d \"${file_date}\" +%s) ) \/ 86400 ))\n                if [ \"$days_old\" -gt \"$RETENTION_DAYS\" ]; then\n                    aws s3 rm \"s3:\/\/${BUCKET_NAME}\/${key}\"\n                fi\n            fi\n        done\n}\n\n# \u30af\u30fc\u30ed\u30f3\u30b8\u30e7\u30d6\u3068\u3057\u3066\u8a2d\u5b9a\n# 0 0 * * * \/path\/to\/rotate_logs.sh<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u51e6\u7406\u306e\u81ea\u52d5\u5316<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5dee\u5206\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u5b9f\u88c5<\/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=\"\">#!\/bin\/bash\n\n# \u5dee\u5206\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a\nSOURCE_DIR=\"\/data\"\nBUCKET_NAME=\"my-backup-bucket\"\nMANIFEST_FILE=\"\/tmp\/backup-manifest.txt\"\n\n# \u5dee\u5206\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u5b9f\u884c\ndifferential_backup() {\n    # \u73fe\u5728\u306e\u30d5\u30a1\u30a4\u30eb\u30ea\u30b9\u30c8\u306e\u4f5c\u6210\n    find \"${SOURCE_DIR}\" -type f -exec sha256sum {} \\; &gt; \"${MANIFEST_FILE}.new\"\n\n    # \u524d\u56de\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u53d6\u5f97\n    aws s3 cp \"s3:\/\/${BUCKET_NAME}\/manifest\/backup-manifest.txt\" \"${MANIFEST_FILE}.old\" || touch \"${MANIFEST_FILE}.old\"\n\n    # \u5dee\u5206\u30d5\u30a1\u30a4\u30eb\u306e\u7279\u5b9a\u3068\u8ee2\u9001\n    diff \"${MANIFEST_FILE}.old\" \"${MANIFEST_FILE}.new\" | grep \"^&gt;\" | cut -c 3- | while read -r line; do\n        file_hash=$(echo \"$line\" | cut -d' ' -f1)\n        file_path=$(echo \"$line\" | cut -d' ' -f2-)\n\n        # \u5909\u66f4\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n        aws s3 cp \"${file_path}\" \\\n            \"s3:\/\/${BUCKET_NAME}\/data\/${file_hash}\/\" \\\n            --metadata \"path=${file_path}\"\n    done\n\n    # \u65b0\u3057\u3044\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n    aws s3 cp \"${MANIFEST_FILE}.new\" \"s3:\/\/${BUCKET_NAME}\/manifest\/backup-manifest.txt\"\n\n    # \u4e00\u6642\u30d5\u30a1\u30a4\u30eb\u306e\u524a\u9664\n    rm \"${MANIFEST_FILE}.new\" \"${MANIFEST_FILE}.old\"\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">CI\/CD \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u5229\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>GitHub Actions\u3067\u306e\u5229\u7528\u4f8b<\/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=\"\">name: Deploy to S3\n\non:\n  push:\n    branches: [ main ]\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions\/checkout@v2\n\n    - name: Configure AWS credentials\n      uses: aws-actions\/configure-aws-credentials@v1\n      with:\n        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n        aws-region: ap-northeast-1\n\n    - name: Build application\n      run: |\n        npm install\n        npm run build\n\n    - name: Deploy to S3\n      run: |\n        aws s3 sync build\/ s3:\/\/my-website-bucket\/ \\\n            --delete \\\n            --cache-control \"max-age=3600\" \\\n            --exclude \"*.html\" \\\n            --include \"*.js\" \\\n            --include \"*.css\" \\\n            --include \"*.png\" \\\n            --include \"*.jpg\"\n\n        # HTML\u30d5\u30a1\u30a4\u30eb\u306f\u5225\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u8a2d\u5b9a\u3067\u914d\u4fe1\n        aws s3 sync build\/ s3:\/\/my-website-bucket\/ \\\n            --delete \\\n            --cache-control \"no-cache\" \\\n            --include \"*.html\" \\\n            --exclude \"*\"<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Jenkins \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u5229\u7528\u4f8b<\/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=\"\">pipeline {\n    agent any\n\n    environment {\n        AWS_DEFAULT_REGION = 'ap-northeast-1'\n        S3_BUCKET = 'my-artifact-bucket'\n    }\n\n    stages {\n        stage('Build') {\n            steps {\n                sh 'mvn package'\n            }\n        }\n\n        stage('Upload to S3') {\n            steps {\n                script {\n                    def artifactPath = \"artifacts\/${env.BUILD_NUMBER}\"\n\n                    \/\/ \u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n                    sh \"\"\"\n                        aws s3 cp target\/*.jar \\\n                            s3:\/\/${S3_BUCKET}\/${artifactPath}\/ \\\n                            --metadata \"build=${env.BUILD_NUMBER},commit=${env.GIT_COMMIT}\"\n                    \"\"\"\n\n                    \/\/ \u30c7\u30d7\u30ed\u30a4\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306e\u66f4\u65b0\n                    sh \"\"\"\n                        echo \"latest=${env.BUILD_NUMBER}\" | \\\n                        aws s3 cp - s3:\/\/${S3_BUCKET}\/manifest.txt\n                    \"\"\"\n                }\n            }\n        }\n\n        stage('Cleanup') {\n            steps {\n                script {\n                    \/\/ \u53e4\u3044\u30d3\u30eb\u30c9\u306e\u524a\u9664\n                    sh \"\"\"\n                        aws s3 ls s3:\/\/${S3_BUCKET}\/artifacts\/ | \\\n                        sort -r | \\\n                        tail -n +6 | \\\n                        awk '{print \\$2}' | \\\n                        xargs -I {} aws s3 rm s3:\/\/${S3_BUCKET}\/artifacts\/{} --recursive\n                    \"\"\"\n                }\n            }\n        }\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u81ea\u52d5\u5316\u30b9\u30af\u30ea\u30d7\u30c8\u3068CI\/CD\u8a2d\u5b9a\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001S3\u306e\u64cd\u4f5c\u3092\u52b9\u7387\u7684\u306b\u81ea\u52d5\u5316\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u81ea\u52d5\u5316\u3092\u5b89\u5168\u306b\u5b9f\u65bd\u3059\u308b\u305f\u3081\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-17\">AWS CLI S3 \u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u9069\u5207\u306a IAM \u30dd\u30ea\u30b7\u30fc\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/h3>\n\n\n\n<p>S3\u30d0\u30b1\u30c3\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u9069\u5207\u306b\u5236\u5fa1\u3059\u308b\u305f\u3081\u306eIAM\u30dd\u30ea\u30b7\u30fc\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6700\u5c0f\u6a29\u9650\u306e\u539f\u5247\u306b\u57fa\u3065\u304f\u30dd\u30ea\u30b7\u30fc\u8a2d\u5b9a<\/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=\"\">{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"AllowSpecificBucketAccess\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"s3:ListBucket\",\n                \"s3:GetObject\",\n                \"s3:PutObject\",\n                \"s3:DeleteObject\"\n            ],\n            \"Resource\": [\n                \"arn:aws:s3:::my-specific-bucket\",\n                \"arn:aws:s3:::my-specific-bucket\/*\"\n            ]\n        },\n        {\n            \"Sid\": \"DenyOtherBuckets\",\n            \"Effect\": \"Deny\",\n            \"Action\": \"s3:*\",\n            \"Resource\": [\n                \"arn:aws:s3:::*\"\n            ],\n            \"Condition\": {\n                \"StringNotEquals\": {\n                    \"s3:ResourceAccount\": [\"123456789012\"]\n                }\n            }\n        }\n    ]\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30bf\u30b0\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1<\/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=\"\">{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"s3:GetObject\",\n                \"s3:PutObject\"\n            ],\n            \"Resource\": \"arn:aws:s3:::my-bucket\/*\",\n            \"Condition\": {\n                \"StringEquals\": {\n                    \"s3:ResourceTag\/Environment\": \"Production\"\n                }\n            }\n        }\n    ]\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>IP\u5236\u9650\u306e\u5b9f\u88c5<\/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=\"\">{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"IPAllow\",\n            \"Effect\": \"Allow\",\n            \"Action\": \"s3:*\",\n            \"Resource\": [\n                \"arn:aws:s3:::my-bucket\",\n                \"arn:aws:s3:::my-bucket\/*\"\n            ],\n            \"Condition\": {\n                \"IpAddress\": {\n                    \"aws:SourceIp\": [\n                        \"203.0.113.0\/24\",\n                        \"2001:DB8::\/32\"\n                    ]\n                }\n            }\n        }\n    ]\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u6697\u53f7\u5316\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u4f7f\u3044\u65b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u6697\u53f7\u5316\u306e\u8a2d\u5b9a<\/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=\"\"># AES256\u306b\u3088\u308b\u6697\u53f7\u5316\naws s3 cp file.txt s3:\/\/my-bucket\/ --sse AES256\n\n# AWS KMS\u306b\u3088\u308b\u6697\u53f7\u5316\naws s3 cp file.txt s3:\/\/my-bucket\/ \\\n    --sse aws:kms \\\n    --sse-kms-key-id arn:aws:kms:region:account:key\/key-id\n\n# \u30d0\u30b1\u30c3\u30c8\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u6697\u53f7\u5316\u8a2d\u5b9a\naws s3api put-bucket-encryption \\\n    --bucket my-bucket \\\n    --server-side-encryption-configuration '{\n        \"Rules\": [\n            {\n                \"ApplyServerSideEncryptionByDefault\": {\n                    \"SSEAlgorithm\": \"AES256\"\n                }\n            }\n        ]\n    }'<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b5\u30a4\u30c9\u6697\u53f7\u5316\u306e\u5b9f\u88c5<\/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=\"\"># Python\u4f8b: \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b5\u30a4\u30c9\u6697\u53f7\u5316\u306e\u5b9f\u88c5\nimport boto3\nfrom boto3.s3.transfer import TransferConfig\nfrom cryptography.fernet import Fernet\n\ndef encrypt_and_upload(file_path, bucket, key):\n    # \u6697\u53f7\u5316\u30ad\u30fc\u306e\u751f\u6210\n    encryption_key = Fernet.generate_key()\n    fernet = Fernet(encryption_key)\n\n    # \u30d5\u30a1\u30a4\u30eb\u306e\u6697\u53f7\u5316\n    with open(file_path, 'rb') as file:\n        encrypted_data = fernet.encrypt(file.read())\n\n    # S3\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n    s3 = boto3.client('s3')\n    config = TransferConfig(multipart_threshold=1024*25)\n    s3.put_object(\n        Bucket=bucket,\n        Key=key,\n        Body=encrypted_data,\n        Metadata={'encryption_key': encryption_key.decode()}\n    )<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3068\u5bfe\u7b56<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4e00\u822c\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3068\u5bfe\u7b56<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-81d5d9a5-4682-4af6-a48f-4052f9ff2585\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30ea\u30b9\u30af<\/th><th>\u5bfe\u7b56<\/th><th>\u5b9f\u88c5\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>\u8a8d\u8a3c\u60c5\u5831\u306e\u6f0f\u6d29<\/td><td>\u8a8d\u8a3c\u60c5\u5831\u306e\u6697\u53f7\u5316\u3068\u5b9a\u671f\u7684\u306a\u30ed\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3<\/td><td><code>aws configure set default.credential_process \/path\/to\/credential-process<\/code><\/td><\/tr><tr><td>\u30d0\u30b1\u30c3\u30c8\u306e\u8aa4\u516c\u958b<\/td><td>\u30d1\u30d6\u30ea\u30c3\u30af\u30a2\u30af\u30bb\u30b9\u30d6\u30ed\u30c3\u30af\u8a2d\u5b9a<\/td><td><code>aws s3api put-public-access-block<\/code><\/td><\/tr><tr><td>\u30c7\u30fc\u30bf\u306e\u6539\u3056\u3093<\/td><td>\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u3068\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u306e\u6d3b\u7528<\/td><td><code>aws s3api put-bucket-versioning<\/code><\/td><\/tr><tr><td>\u6a29\u9650\u306e\u904e\u5270\u4ed8\u4e0e<\/td><td>IAM\u30dd\u30ea\u30b7\u30fc\u306e\u5b9a\u671f\u7684\u306a\u76e3\u67fb<\/td><td>AWS IAM Access Analyzer \u306e\u5229\u7528<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u76e3\u67fb\u306e\u5b9f\u88c5<\/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=\"\">#!\/bin\/bash\n\n# \u30d0\u30b1\u30c3\u30c8\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u76e3\u67fb\u30b9\u30af\u30ea\u30d7\u30c8\naudit_bucket_security() {\n    BUCKET_NAME=$1\n\n    echo \"=== \u30d0\u30b1\u30c3\u30c8\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u76e3\u67fb: ${BUCKET_NAME} ===\"\n\n    # \u30d1\u30d6\u30ea\u30c3\u30af\u30a2\u30af\u30bb\u30b9\u8a2d\u5b9a\u306e\u78ba\u8a8d\n    aws s3api get-public-access-block \\\n        --bucket \"${BUCKET_NAME}\"\n\n    # \u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\u78ba\u8a8d\n    aws s3api get-bucket-policy \\\n        --bucket \"${BUCKET_NAME}\" 2&gt;\/dev\/null || \\\n        echo \"\u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\"\n\n    # \u6697\u53f7\u5316\u8a2d\u5b9a\u306e\u78ba\u8a8d\n    aws s3api get-bucket-encryption \\\n        --bucket \"${BUCKET_NAME}\" 2&gt;\/dev\/null || \\\n        echo \"\u30c7\u30d5\u30a9\u30eb\u30c8\u6697\u53f7\u5316\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\"\n\n    # \u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u72b6\u614b\u306e\u78ba\u8a8d\n    aws s3api get-bucket-versioning \\\n        --bucket \"${BUCKET_NAME}\"\n\n    # \u30ed\u30b0\u8a2d\u5b9a\u306e\u78ba\u8a8d\n    aws s3api get-bucket-logging \\\n        --bucket \"${BUCKET_NAME}\"\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8a8d\u8a3c\u3068\u30a2\u30af\u30bb\u30b9\u5236\u5fa1<\/li>\n\n\n\n<li>[ ] IAM\u30e6\u30fc\u30b6\u30fc\/\u30ed\u30fc\u30eb\u306e\u6700\u5c0f\u6a29\u9650\u8a2d\u5b9a<\/li>\n\n\n\n<li>[ ] MFA\u306e\u6709\u52b9\u5316<\/li>\n\n\n\n<li>[ ] \u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u5b9a\u671f\u7684\u306a\u30ed\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3<\/li>\n\n\n\n<li>[ ] IP\u5236\u9650\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u4fdd\u8b77<\/li>\n\n\n\n<li>[ ] \u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u6697\u53f7\u5316\u306e\u6709\u52b9\u5316<\/li>\n\n\n\n<li>[ ] \u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u306e\u6709\u52b9\u5316<\/li>\n\n\n\n<li>[ ] \u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u30dd\u30ea\u30b7\u30fc\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>[ ] \u30af\u30ed\u30b9\u30ea\u30fc\u30b8\u30e7\u30f3\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u691c\u8a0e<\/li>\n\n\n\n<li>\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3068\u76e3\u67fb<\/li>\n\n\n\n<li>[ ] CloudTrail\u30ed\u30b0\u306e\u6709\u52b9\u5316<\/li>\n\n\n\n<li>[ ] S3\u30a2\u30af\u30bb\u30b9\u30ed\u30b0\u306e\u6709\u52b9\u5316<\/li>\n\n\n\n<li>[ ] CloudWatch\u30a2\u30e9\u30fc\u30e0\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>[ ] \u5b9a\u671f\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u76e3\u67fb\u306e\u5b9f\u65bd<\/li>\n<\/ul>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30a4\u30f3\u30b7\u30c7\u30f3\u30c8\u5bfe\u5fdc\u624b\u9806<\/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=\"\">#!\/bin\/bash\n\n# \u30a4\u30f3\u30b7\u30c7\u30f3\u30c8\u5bfe\u5fdc\u30b9\u30af\u30ea\u30d7\u30c8\nincident_response() {\n    BUCKET_NAME=$1\n    INCIDENT_TYPE=$2\n\n    case \"${INCIDENT_TYPE}\" in\n        \"unauthorized_access\")\n            # \u30d0\u30b1\u30c3\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u4e00\u6642\u7684\u306b\u30d6\u30ed\u30c3\u30af\n            aws s3api put-bucket-policy \\\n                --bucket \"${BUCKET_NAME}\" \\\n                --policy '{\n                    \"Version\": \"2012-10-17\",\n                    \"Statement\": [{\n                        \"Sid\": \"DenyAllAccess\",\n                        \"Effect\": \"Deny\",\n                        \"Principal\": \"*\",\n                        \"Action\": \"s3:*\",\n                        \"Resource\": [\n                            \"arn:aws:s3:::'\"${BUCKET_NAME}\"'\",\n                            \"arn:aws:s3:::'\"${BUCKET_NAME}\"'\/*\"\n                        ]\n                    }]\n                }'\n\n            # \u30a2\u30af\u30bb\u30b9\u30ed\u30b0\u306e\u4fdd\u5b58\n            aws s3api get-bucket-logging \\\n                --bucket \"${BUCKET_NAME}\" &gt; \"incident_${BUCKET_NAME}_$(date +%Y%m%d_%H%M%S).log\"\n            ;;\n\n        \"data_leak\")\n            # \u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u5c65\u6b74\u306e\u78ba\u8a8d\n            aws s3api list-object-versions \\\n                --bucket \"${BUCKET_NAME}\" &gt; \"versions_${BUCKET_NAME}_$(date +%Y%m%d_%H%M%S).log\"\n\n            # \u30a2\u30af\u30bb\u30b9\u30ed\u30b0\u306e\u5206\u6790\n            aws s3api get-bucket-logging \\\n                --bucket \"${BUCKET_NAME}\" &gt; \"access_${BUCKET_NAME}_$(date +%Y%m%d_%H%M%S).log\"\n            ;;\n    esac\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001AWS CLI S3\u306e\u5b89\u5168\u306a\u5229\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u5b9a\u671f\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u76e3\u67fb\u3068\u66f4\u65b0\u3092\u884c\u3044\u3001\u5e38\u306b\u6700\u65b0\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3092\u7dad\u6301\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\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-2395","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\/2395","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=2395"}],"version-history":[{"count":2,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2395\/revisions"}],"predecessor-version":[{"id":2397,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2395\/revisions\/2397"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}