<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://blog.shinyakato.dev/blog</id>
    <title>DayoneLabs</title>
    <updated>2026-03-19T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://blog.shinyakato.dev/blog"/>
    <subtitle>DayoneLabsは、ソフトウェア開発の学びと試行錯誤を記録する技術ブログです。</subtitle>
    <icon>https://blog.shinyakato.dev/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[カナリアデプロイとリニアデプロイ - 現代的なデプロイ戦略の比較]]></title>
        <id>https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a</id>
        <link href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a"/>
        <updated>2026-03-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、現代的なデプロイ戦略であるカナリアデプロイとリニアデプロイについて、それぞれの特徴と使い分けを解説します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、現代的なデプロイ戦略であるカナリアデプロイとリニアデプロイについて、それぞれの特徴と使い分けを解説します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">デプロイ戦略の選択肢を知りたい人</li>
<li class="">カナリアデプロイとリニアデプロイの違いを理解したい人</li>
<li class="">リスクを抑えたデプロイ方法を検討している人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="デプロイ戦略の重要性">デプロイ戦略の重要性<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E6%88%A6%E7%95%A5%E3%81%AE%E9%87%8D%E8%A6%81%E6%80%A7" class="hash-link" aria-label="デプロイ戦略の重要性 への直接リンク" title="デプロイ戦略の重要性 への直接リンク" translate="no">​</a></h2>
<p>現代のソフトウェア開発において、デプロイの方法は様々です。開発しているソフトウェアの特性や業界によっても、最適なデプロイ戦略は異なります。</p>
<p>最も原始的な方法は、開発した機能を特に深く考えずにステージング環境や本番環境に直接反映することです。この方式でも追加機能や修正機能はユーザーが利用可能になりますが、もし修正に致命的な不具合がある場合、ユーザー全体に影響が及ぶことになります。ロールバックには人間の手が必要になり、迅速に作業を行える保証はどこにもありません。</p>
<p>ただし、修正を直接反映しなければいけないような業界のシステムでは、直接反映が有効な戦略となる場合もあります。</p>
<p>より現代的なデプロイ戦略としては、カナリアデプロイとリニアデプロイがあります。これらのデプロイ戦略は、デプロイ時の不具合などによるデータ汚染のリスクを減らすために用いられます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="カナリアデプロイとは">カナリアデプロイとは<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%82%AB%E3%83%8A%E3%83%AA%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%A8%E3%81%AF" class="hash-link" aria-label="カナリアデプロイとは への直接リンク" title="カナリアデプロイとは への直接リンク" translate="no">​</a></h2>
<p>カナリアデプロイは、デプロイ後にアプリケーションに対する全てのトラフィックを最新バージョンに流すのではなく、開発者が指定した少数の割合（例: 10%）のトラフィックのみを最新バージョンに流し、最新バージョンで発生したメトリクスを分析しながら段階的に展開する方式です。</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>カナリアデプロイとカナリアリリースの違い</div><div class="admonitionContent_BuS1"><p>「カナリアデプロイ」と「カナリアリリース」は異なる概念です。</p><ul>
<li class=""><strong>カナリアデプロイ</strong>: 段階的なリリースを行うソフトウェア開発手法。限られたユーザーにまずアップデートを提供し、テストとフィードバックを得てから残りのユーザーへ展開する</li>
<li class=""><strong>カナリアリリース</strong>: 全ユーザーへ配布されているものの、安定性に欠けるか新機能が未検証のアプリケーション。アルファ版、ベータ版、アーリーアクセス版などが該当する</li>
</ul><p>例えば、Google Chromeのカナリアチャネルは「カナリアリリース」であり、新バージョンへの早期アクセスを可能にします。一方、本番環境で段階的にトラフィックを切り替える手法が「カナリアデプロイ」です。</p></div></div>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>カナリアの由来</div><div class="admonitionContent_BuS1"><p>「カナリア」という名称は、英国の炭鉱で一酸化炭素などの有害物質を検知するために使われていたカナリアに由来します。カナリアは人間よりも有害物質に敏感で、危険を早期に察知できることから、ソフトウェアデプロイにおいても「少数のユーザーで問題を早期発見する」という意味で使われています。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="カナリアデプロイの仕組み">カナリアデプロイの仕組み<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%82%AB%E3%83%8A%E3%83%AA%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF" class="hash-link" aria-label="カナリアデプロイの仕組み への直接リンク" title="カナリアデプロイの仕組み への直接リンク" translate="no">​</a></h3>
<p>カナリアデプロイでは、2つのバージョンのアプリケーションが同時に稼働します。旧バージョンを「安定版」、新バージョンを「カナリア」と呼びます。</p>
<!-- -->
<p>カナリアデプロイにおける最新バージョンへのトラフィック分散には、開発者が指定する重み（トラフィックの割合）が重要になります。この重みに応じて時間経過でトラフィックを分散しながらユーザーに展開されていきます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="カナリアデプロイの展開フロー">カナリアデプロイの展開フロー<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%82%AB%E3%83%8A%E3%83%AA%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AE%E5%B1%95%E9%96%8B%E3%83%95%E3%83%AD%E3%83%BC" class="hash-link" aria-label="カナリアデプロイの展開フロー への直接リンク" title="カナリアデプロイの展開フロー への直接リンク" translate="no">​</a></h3>
<p>典型的なカナリアデプロイの展開フローは以下の通りです:</p>
<ol>
<li class="">初めは、全てのトラフィックが現行バージョンへ送られる</li>
<li class="">新バージョンを少数のユーザー（例: 5%）に公開</li>
<li class="">新バージョンに対してスモークテストなどを実施</li>
<li class="">問題がなければ、段階的にトラフィックを増加（5% → 25% → 50% → 75% → 100%）</li>
<li class="">問題が発生した場合は、直ちに旧バージョンへロールバック</li>
<li class="">新バージョンが全トラフィックを受けた時点で、旧バージョンを削除</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="カナリアデプロイの実装方法">カナリアデプロイの実装方法<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%82%AB%E3%83%8A%E3%83%AA%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AE%E5%AE%9F%E8%A3%85%E6%96%B9%E6%B3%95" class="hash-link" aria-label="カナリアデプロイの実装方法 への直接リンク" title="カナリアデプロイの実装方法 への直接リンク" translate="no">​</a></h3>
<p>カナリアデプロイには、主に2つの実装方法があります。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="サイドバイサイドデプロイ">サイドバイサイドデプロイ<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%82%B5%E3%82%A4%E3%83%89%E3%83%90%E3%82%A4%E3%82%B5%E3%82%A4%E3%83%89%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4" class="hash-link" aria-label="サイドバイサイドデプロイ への直接リンク" title="サイドバイサイドデプロイ への直接リンク" translate="no">​</a></h4>
<p>新バージョンを既存環境とは別の新しい環境に展開する方法です。</p>
<ol>
<li class="">既存環境（安定版）とは別に、新しい環境（カナリア版）を構築</li>
<li class="">ロードバランサやリバースプロキシを使用して、一部のトラフィックをカナリア版に振り分け</li>
<li class="">段階的にトラフィックを増やし、問題がなければ最終的に全トラフィックを新環境へ移行</li>
<li class="">旧環境を廃止</li>
</ol>
<p>この方法は、データベースや複数のサービスを含む複雑なアプリケーションに適していますが、追加のインフラリソースが必要になります。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="ローリングデプロイ">ローリングデプロイ<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%83%AD%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4" class="hash-link" aria-label="ローリングデプロイ への直接リンク" title="ローリングデプロイ への直接リンク" translate="no">​</a></h4>
<p>既存のサーバーやコンテナを段階的に更新する方法です。</p>
<ol>
<li class="">複数のサーバーのうち、1台または少数のサーバーを新バージョンに更新</li>
<li class="">更新したサーバーの動作を監視し、エラーや性能問題がないか確認</li>
<li class="">問題がなければ、他のサーバーも順次更新</li>
<li class="">問題が発生した場合は、更新したサーバーを旧バージョンに戻す</li>
</ol>
<p>この方法は、追加のインフラが不要で、比較的シンプルに実装できます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="カナリアデプロイの特徴">カナリアデプロイの特徴<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%82%AB%E3%83%8A%E3%83%AA%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AE%E7%89%B9%E5%BE%B4" class="hash-link" aria-label="カナリアデプロイの特徴 への直接リンク" title="カナリアデプロイの特徴 への直接リンク" translate="no">​</a></h3>
<p>重みによってはリリースが完全にユーザーに展開されるまで時間がかかる場合がありますが、より重要な機能をリリースする際にリスクを減らしたい場合には有効です。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>カナリアデプロイの良い点</div><div class="admonitionContent_BuS1"><ul>
<li class="">シンプルなロールバック: 重大な問題が発生した場合、すぐにデプロイを元に戻すことができる</li>
<li class="">キャパシティテスト: 本番環境で必要な容量をテストできる</li>
<li class="">低リスク: 少数のユーザーで新機能を検証してから全体に展開できる</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>カナリアデプロイの注意点</div><div class="admonitionContent_BuS1"><ul>
<li class="">コスト: サイドバイサイドデプロイで必要な追加インフラのため、コストが高くなる</li>
<li class="">複雑さ: 多数のマシンの管理、ユーザーの移行、新システムの保守など、負担が大きくなる場合がある</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="リニアデプロイとは">リニアデプロイとは<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%83%AA%E3%83%8B%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%A8%E3%81%AF" class="hash-link" aria-label="リニアデプロイとは への直接リンク" title="リニアデプロイとは への直接リンク" translate="no">​</a></h2>
<p>リニアデプロイはカナリアデプロイとは異なり、一定のインターバルでトラフィックを段階的に切り替えるデプロイ戦略です。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="リニアデプロイの仕組み">リニアデプロイの仕組み<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%83%AA%E3%83%8B%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF" class="hash-link" aria-label="リニアデプロイの仕組み への直接リンク" title="リニアデプロイの仕組み への直接リンク" translate="no">​</a></h3>
<p>例えば、開発者がデプロイ時に「2分ごとに10%」という定義でリニアデプロイを実行すると、2分毎に10%のユーザーが最新バージョンに流れるようになります。これは100%になるまで段階的に行われます。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="リニアデプロイの設定パラメータ">リニアデプロイの設定パラメータ<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%83%AA%E3%83%8B%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF" class="hash-link" aria-label="リニアデプロイの設定パラメータ への直接リンク" title="リニアデプロイの設定パラメータ への直接リンク" translate="no">​</a></h3>
<p>リニアデプロイでは、以下のパラメータを設定します:</p>
<ul>
<li class="">ステップの割合: 各ステップでどの程度トラフィックを切り替えるか（例: 10%）</li>
<li class="">ステップベイク時間: 切り替えの間にモニタリングや検証を行うための待機時間</li>
<li class="">デプロイベイク時間: すべてのトラフィックを新しいリビジョンに切り替えた後、旧リビジョンを終了するまでの待機時間</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="リニアデプロイの特徴">リニアデプロイの特徴<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%83%AA%E3%83%8B%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AE%E7%89%B9%E5%BE%B4" class="hash-link" aria-label="リニアデプロイの特徴 への直接リンク" title="リニアデプロイの特徴 への直接リンク" translate="no">​</a></h3>
<p>カナリアデプロイとは違い、リニアデプロイは線形であり、重みがないため、定義によってはカナリアデプロイより早い時間で全ユーザーに新機能が展開されやすい特徴があります。そのため、リニアデプロイを使用する場合は、リスクを抑えながらもより安定した機能のリリースに使用するといいでしょう。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>リニアデプロイの良い点</div><div class="admonitionContent_BuS1"><ul>
<li class="">予測可能な展開: 時間ベースで一定間隔のため、展開完了時刻を事前に把握できる</li>
<li class="">シンプルな設定: ステップの割合と時間間隔を指定するだけで実装できる</li>
<li class="">バランスの取れたリスク管理: カナリアデプロイより速く、直接デプロイよりも安全</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>リニアデプロイの注意点</div><div class="admonitionContent_BuS1"><ul>
<li class="">柔軟性の欠如: メトリクスに関係なく時間で自動的に進行するため、問題の早期発見が難しい場合がある</li>
<li class="">監視の重要性: 自動的に進行するため、各ステップでの監視とアラート設定が重要</li>
<li class="">適用範囲: 十分にテストされた安定した機能のリリースに適しており、大規模な変更には不向き</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="カナリアデプロイとリニアデプロイの比較">カナリアデプロイとリニアデプロイの比較<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%82%AB%E3%83%8A%E3%83%AA%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%A8%E3%83%AA%E3%83%8B%E3%82%A2%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AE%E6%AF%94%E8%BC%83" class="hash-link" aria-label="カナリアデプロイとリニアデプロイの比較 への直接リンク" title="カナリアデプロイとリニアデプロイの比較 への直接リンク" translate="no">​</a></h2>
<p>両者の違いを視覚的に比較すると、以下のようになります:</p>
<!-- -->
<!-- -->
<table><thead><tr><th>項目</th><th>カナリアデプロイ</th><th>リニアデプロイ</th></tr></thead><tbody><tr><td>トラフィック切り替え</td><td>重みベース（段階的に増加）</td><td>時間ベース（一定間隔で増加）</td></tr><tr><td>展開速度</td><td>比較的遅い</td><td>比較的速い</td></tr><tr><td>適用シーン</td><td>重要な機能、大規模な変更</td><td>安定した機能、小規模な変更</td></tr><tr><td>リスク管理</td><td>より慎重</td><td>バランス型</td></tr><tr><td>複雑さ</td><td>高い</td><td>中程度</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ブルーグリーンデプロイとの違い">ブルーグリーンデプロイとの違い<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%83%96%E3%83%AB%E3%83%BC%E3%82%B0%E3%83%AA%E3%83%BC%E3%83%B3%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%A8%E3%81%AE%E9%81%95%E3%81%84" class="hash-link" aria-label="ブルーグリーンデプロイとの違い への直接リンク" title="ブルーグリーンデプロイとの違い への直接リンク" translate="no">​</a></h2>
<p>カナリアデプロイやリニアデプロイと似た戦略として、ブルーグリーンデプロイがあります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ブルーグリーンデプロイとは">ブルーグリーンデプロイとは<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%83%96%E3%83%AB%E3%83%BC%E3%82%B0%E3%83%AA%E3%83%BC%E3%83%B3%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%A8%E3%81%AF" class="hash-link" aria-label="ブルーグリーンデプロイとは への直接リンク" title="ブルーグリーンデプロイとは への直接リンク" translate="no">​</a></h3>
<p>ブルーグリーンデプロイは、均等なリソースを持つ2つの環境（ブルーとグリーン）を用意し、全ユーザーを一度に切り替えるデプロイ戦略です。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3つのデプロイ戦略の比較">3つのデプロイ戦略の比較<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#3%E3%81%A4%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E6%88%A6%E7%95%A5%E3%81%AE%E6%AF%94%E8%BC%83" class="hash-link" aria-label="3つのデプロイ戦略の比較 への直接リンク" title="3つのデプロイ戦略の比較 への直接リンク" translate="no">​</a></h3>
<table><thead><tr><th>項目</th><th>カナリアデプロイ</th><th>リニアデプロイ</th><th>ブルーグリーンデプロイ</th></tr></thead><tbody><tr><td>トラフィック切り替え</td><td>重みベース（段階的）</td><td>時間ベース（一定間隔）</td><td>一括切り替え</td></tr><tr><td>展開速度</td><td>遅い</td><td>中程度</td><td>速い</td></tr><tr><td>リスク</td><td>最小</td><td>低い</td><td>中程度</td></tr><tr><td>ロールバック</td><td>一部のみ影響</td><td>一部のみ影響</td><td>全体に影響</td></tr><tr><td>インフラコスト</td><td>高い（サイドバイサイド）</td><td>中程度</td><td>高い（2倍の環境）</td></tr><tr><td>適用シーン</td><td>重要な機能、大規模変更</td><td>安定した機能</td><td>ダウンタイム回避</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="使い分けの指針">使い分けの指針<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%81%AE%E6%8C%87%E9%87%9D" class="hash-link" aria-label="使い分けの指針 への直接リンク" title="使い分けの指針 への直接リンク" translate="no">​</a></h3>
<p><strong>カナリアデプロイを選ぶべき場合</strong>:</p>
<ul>
<li class="">新バージョンに対する信頼度が不明確</li>
<li class="">性能やスケールに関する懸念が大きい</li>
<li class="">大幅なアップデートや全く新しい機能の追加</li>
<li class="">本番環境で新機能を低リスクでテストしたい</li>
</ul>
<p><strong>リニアデプロイを選ぶべき場合</strong>:</p>
<ul>
<li class="">更新版に対する信頼が高く、十分なテストが完了</li>
<li class="">短時間で安全にイテレーションを重ねたい</li>
<li class="">リスクを抑えながらも、比較的速く展開したい</li>
</ul>
<p><strong>ブルーグリーンデプロイを選ぶべき場合</strong>:</p>
<ul>
<li class="">更新版に対する信頼が非常に高い</li>
<li class="">ダウンタイムを完全になくしたい</li>
<li class="">全ユーザーを一度に切り替える必要がある</li>
<li class="">問題発生時に即座に旧バージョンへ戻せる環境が必要</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="段階的デプロイ戦略が適切ではないケース">段階的デプロイ戦略が適切ではないケース<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E6%AE%B5%E9%9A%8E%E7%9A%84%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E6%88%A6%E7%95%A5%E3%81%8C%E9%81%A9%E5%88%87%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%82%B1%E3%83%BC%E3%82%B9" class="hash-link" aria-label="段階的デプロイ戦略が適切ではないケース への直接リンク" title="段階的デプロイ戦略が適切ではないケース への直接リンク" translate="no">​</a></h2>
<p>カナリアデプロイ、リニアデプロイ、ブルーグリーンデプロイなどの段階的デプロイ戦略は、以下の場合には利用を避けるべきです:</p>
<ul>
<li class=""><strong>障害が大きな経済的影響を及ぼす場合</strong>: 銀行システムや金融取引システムなど、一部のユーザーでも障害が発生すると重大な損失につながる</li>
<li class=""><strong>遠隔更新ができない場合</strong>: ユーザーのPC上のソフトウェアやスタンドアロンアプリケーションなど、サーバー側で制御できない環境</li>
<li class=""><strong>継続的デプロイが禁止されている分野</strong>: 航空宇宙や医療機器など、厳格な認証プロセスが必要で段階的リリースが許可されていない</li>
<li class=""><strong>データベースの大幅な変更</strong>: スキーマ変更やデータ移行を伴う場合、新旧バージョンの同時稼働が困難</li>
<li class=""><strong>生命維持や重要ミッションのシステム</strong>: 電力網、原子炉制御システム、医療機器など、部分的な障害も許容できない</li>
</ul>
<p>これらの場合は、より慎重なデプロイ戦略や、厳格なテストプロセス、メンテナンスウィンドウを設けた一括デプロイが必要になります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/canary-linear-deployment-5499b07a#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、カナリアデプロイとリニアデプロイという2つの現代的なデプロイ戦略について解説しました。</p>
<p>カナリアデプロイは重みベースで段階的にトラフィックを増加させる方式で、メトリクス分析を行いながら慎重に展開します。サイドバイサイドデプロイとローリングデプロイの2つの実装方法があり、重要な機能や大規模な変更に適しています。</p>
<p>リニアデプロイは時間ベースで一定間隔でトラフィックを切り替える方式で、予測可能な展開スケジュールが特徴です。十分にテストされた安定した機能のリリースに適しており、カナリアデプロイよりも速く展開できます。</p>
<p>また、ブルーグリーンデプロイとの違いについても説明しました。ブルーグリーンデプロイは全ユーザーを一度に切り替える方式で、ダウンタイムをなくすことが主な目的です。一方、カナリアデプロイとリニアデプロイは、本番環境で新機能を低リスクでテストすることが目的です。</p>
<p>段階的デプロイ戦略は、デプロイ時のリスクを大幅に軽減できる強力な手法ですが、金融システムや医療機器など、部分的な障害も許容できない分野では利用できません。アプリケーションのリスク許容度、検証要件、業界の規制に応じて、最適なデプロイ戦略を選択してください。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://aws.amazon.com/jp/about-aws/whats-new/2025/10/amazon-ecs-built-in-linear-canary-deployments/" target="_blank" rel="noopener noreferrer" class="">Amazon ECS でリニアデプロイとカナリアデプロイが標準機能としてサポート開始</a></li>
<li class=""><a href="https://www.wallarm.com/jp/what/what-is-canary-deployment-meaning-strategy" target="_blank" rel="noopener noreferrer" class="">カナリアデプロイとは ― 意味と戦略 | Wallarm</a></li>
<li class=""><a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html" target="_blank" rel="noopener noreferrer" class="">Amazon ECS のリニアデプロイおよびカナリアデプロイに関するドキュメント</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="DevOps" term="DevOps"/>
        <category label="AWS" term="AWS"/>
        <category label="deployment" term="deployment"/>
        <category label="cloud" term="cloud"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AWSにおけるIAMと最小権限の原則 - ユーザー・グループ・ロールによるアクセス管理]]></title>
        <id>https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e</id>
        <link href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e"/>
        <updated>2026-03-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWSにおけるアクセス管理の基盤であるIAM（Identity and Access Management）について解説します。ルートユーザーのセキュリティ対策、IAMの4つの構成要素（ポリシー、ユーザー、ユーザーグループ、ロール）、そして最小権限の原則に基づいた運用方法を整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWSにおけるアクセス管理の基盤であるIAM（Identity and Access Management）について解説します。ルートユーザーのセキュリティ対策、IAMの4つの構成要素（ポリシー、ユーザー、ユーザーグループ、ロール）、そして最小権限の原則に基づいた運用方法を整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">AWSのアクセス管理の基礎を学びたい人</li>
<li class="">IAMのポリシー・ユーザー・グループ・ロールの違いを理解したい人</li>
<li class="">ルートユーザーのセキュリティ対策を知りたい人</li>
<li class="">最小権限の原則に基づいたAWS運用を実践したい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ルートユーザーのセキュリティ対策">ルートユーザーのセキュリティ対策<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#%E3%83%AB%E3%83%BC%E3%83%88%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E5%AF%BE%E7%AD%96" class="hash-link" aria-label="ルートユーザーのセキュリティ対策 への直接リンク" title="ルートユーザーのセキュリティ対策 への直接リンク" translate="no">​</a></h2>
<p>AWSアカウントを作成すると、登録メールアドレスとパスワードの組み合わせで認証する<strong>ルートユーザー</strong>が作成されます。ルートユーザーはAWSの全リソースに対するフルアクセス権限を持ち、請求情報や個人情報といった機微な情報にもアクセスできます。</p>
<p>この強力な権限を持つルートユーザーは、作成後は極力使用せず、以下の手順でロックダウンすることが<a href="https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html" target="_blank" rel="noopener noreferrer" class="">AWSのベストプラクティス</a>として推奨されています。</p>
<ol>
<li class="">予測が困難な強力なパスワードを設定する</li>
<li class="">ルートユーザーの認証情報はパスワードマネージャーに保存し共有しない</li>
<li class="">MFA（多要素認証）を有効化する</li>
<li class="">CLI等で使用するために発行したアクセスキーがある場合は削除する</li>
<li class="">管理者権限をアタッチしたIAMユーザーを作成し、以降はそのIAMユーザーで作業を行う</li>
</ol>
<div class="theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>ルートユーザーの取り扱い</div><div class="admonitionContent_BuS1"><p>ルートユーザーは強力すぎる権限を持つアカウントです。上記のロックダウンを行うことで、悪意のある第三者にルートユーザーの操作権限を奪われるリスクを最小限に抑えることができます。管理者権限を持つIAMユーザーにも、ルートユーザーと同様にMFAの設定と強力なパスワードの保管が必須です。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="iamとは">IAMとは<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#iam%E3%81%A8%E3%81%AF" class="hash-link" aria-label="IAMとは への直接リンク" title="IAMとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://aws.amazon.com/jp/iam/" target="_blank" rel="noopener noreferrer" class="">IAM（Identity and Access Management）</a>は、AWSリソースへのアクセスをポリシーベースで管理するサービスです。「誰が」「どのリソースに対して」「どのアクションを」実行できるかを細かく制御できます。</p>
<p>AWSにおいては<a href="https://aws.amazon.com/jp/blogs/news/systematic-approach-for-least-privileges-jp/" target="_blank" rel="noopener noreferrer" class="">最小権限の原則</a>での運用がベストプラクティスとして推奨されています。必要最小限の権限のみを付与することで、ヒューマンエラーやセキュリティインシデントのリスクを低減できます。</p>
<p>IAMは以下の4つの構成要素で成り立っています。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ポリシー">ポリシー<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC" class="hash-link" aria-label="ポリシー への直接リンク" title="ポリシー への直接リンク" translate="no">​</a></h3>
<p>ポリシーは、特定のAWSリソースに対するアクセス権限を定義するJSONドキュメントです。個々のAWSサービスの個々のアクションに対して、許可（Allow）または拒否（Deny）を指定します。</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">S3読み取り専用ポリシーの例</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"Version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2012-10-17"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"Statement"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Effect"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Allow"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Action"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"s3:GetObject"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"s3:ListBucket"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Resource"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"arn:aws:s3:::my-bucket"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"arn:aws:s3:::my-bucket/*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre></div></div>
<p>ポリシーにはAWSが事前に作成した<strong>AWS管理ポリシー</strong>が多く用意されていますが、ユースケースによってはAWS管理ポリシーが必要以上に広い権限を持つ場合があります。そのような場合は、より制限の厳しい<strong>カスタム管理ポリシー</strong>を作成することが推奨されます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="iamユーザー">IAMユーザー<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#iam%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC" class="hash-link" aria-label="IAMユーザー への直接リンク" title="IAMユーザー への直接リンク" translate="no">​</a></h3>
<p>IAMユーザーは、ルートユーザーのアカウント内に作成する仮想ユーザーです。個々の作業者や用途ごとに作成します。</p>
<p>IAMユーザーの特徴は以下の通りです。</p>
<ul>
<li class="">作成時点では<strong>一切のアクセス権限がない</strong>（明示的にポリシーをアタッチする必要がある）</li>
<li class="">デフォルトではマネジメントコンソールへのアクセスが許可されていない（必要に応じて有効化する）</li>
<li class="">IAMユーザーへの直接的なポリシーのアタッチは<strong>非推奨</strong>（後述するユーザーグループ経由が推奨）</li>
</ul>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>ルートユーザー作成後の管理者IAMユーザーについて</div><div class="admonitionContent_BuS1"><p>ルートユーザーのロックダウン後に作成する管理者権限付きIAMユーザーは、直接ポリシーをアタッチする例外的なケースです。直接アタッチを避けたい場合は、管理者権限を持つユーザーグループを作成し、そこにIAMユーザーを追加する方法も有効です。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ユーザーグループ">ユーザーグループ<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97" class="hash-link" aria-label="ユーザーグループ への直接リンク" title="ユーザーグループ への直接リンク" translate="no">​</a></h3>
<p>ユーザーグループは、単数または複数のIAMユーザーの集合です。ユーザーグループにポリシーをアタッチすると、そのグループに所属するすべてのIAMユーザーにポリシーが伝播します。</p>
<!-- -->
<p>ユーザーグループ経由の権限管理が推奨される理由は以下の通りです。</p>
<ul>
<li class="">担当や部門ごとにグループを作成し、必要最小限のポリシーをアタッチできる</li>
<li class="">担当変更時はIAMユーザーのグループ所属を変更するだけで権限が切り替わる</li>
<li class="">個々のIAMユーザーに直接ポリシーを管理する必要がなくなる</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ロール">ロール<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#%E3%83%AD%E3%83%BC%E3%83%AB" class="hash-link" aria-label="ロール への直接リンク" title="ロール への直接リンク" translate="no">​</a></h3>
<p>ロールは、<strong>AWSリソース同士のアクション許可</strong>や、IAMユーザーへの<strong>一時的な権限付与</strong>に使用します。</p>
<p>AWSリソースは、そのリソースを作成したIAMユーザーの権限に関係なく、デフォルトでは他のAWSリソースへのアクセス権を<strong>一切持ちません</strong>。例えば、Lambda関数からS3バケットにアクセスする場合、Lambda関数に対してS3へのアクセスを許可するロールを明示的にアタッチする必要があります。</p>
<!-- -->
<p>このように、AWSでは最小権限の原則を徹底するために、AWSリソースはデフォルトで他のリソースへのアクセス権を持たない設計になっています。</p>
<p>また、IAMユーザーに本来のポリシーとは異なる一時的な作業が必要になった場合に、ロールを使って一時的に権限を付与することも可能です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="awsの全操作はapiコール">AWSの全操作はAPIコール<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#aws%E3%81%AE%E5%85%A8%E6%93%8D%E4%BD%9C%E3%81%AFapi%E3%82%B3%E3%83%BC%E3%83%AB" class="hash-link" aria-label="AWSの全操作はAPIコール への直接リンク" title="AWSの全操作はAPIコール への直接リンク" translate="no">​</a></h2>
<p>AWSの全サービスがポリシーベースのアクセス許可を前提としている背景には、AWSにおけるすべての操作がAPIコールで行われているという仕組みがあります。IAMユーザーがマネジメントコンソールで操作を行った場合も、バックグラウンドではCLIと同様のAPIコールが実行され、ポリシーに基づいた認可処理が行われています。AWSリソース同士のアクションにおいても同様です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="使用されていないiamユーザーの管理">使用されていないIAMユーザーの管理<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84iam%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E7%AE%A1%E7%90%86" class="hash-link" aria-label="使用されていないIAMユーザーの管理 への直接リンク" title="使用されていないIAMユーザーの管理 への直接リンク" translate="no">​</a></h2>
<p>不要になったIAMユーザーに対しては、以下の措置を講じてセキュリティリスクを低減します。</p>
<ul>
<li class="">権限の剥奪（ポリシーのデタッチ、ユーザーグループからの削除）</li>
<li class="">アクセスキーの削除</li>
<li class="">マネジメントコンソールへのアクセス無効化</li>
<li class="">不要であればIAMユーザーの削除</li>
</ul>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>組織の保存ポリシーへの対応</div><div class="admonitionContent_BuS1"><p>組織によっては保存ポリシーにより単純にIAMユーザーを削除できない場合があります。その場合は、権限を剥奪し、アクセスキーを削除して外部からアクセスできない状態にします。個々のユーザーのアクティビティを追跡するには<a href="https://aws.amazon.com/jp/cloudtrail/" target="_blank" rel="noopener noreferrer" class="">AWS CloudTrail</a>との組み合わせが有効です。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/iam-least-privilege-guide-f855861e#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、AWSにおけるIAMと最小権限の原則について解説しました。ルートユーザーのロックダウンを行った上で、IAMの4つの構成要素（ポリシー、IAMユーザー、ユーザーグループ、ロール）を組み合わせて、必要最小限の権限のみを付与する運用がAWSのベストプラクティスです。ポリシーはユーザーグループ経由でIAMユーザーに適用し、AWSリソース同士のアクセスにはロールを使用することで、セキュアで管理しやすいアクセス制御を実現できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://aws.amazon.com/jp/iam/" target="_blank" rel="noopener noreferrer" class="">AWS IAM公式ページ</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html" target="_blank" rel="noopener noreferrer" class="">IAMベストプラクティス</a></li>
<li class=""><a href="https://aws.amazon.com/jp/blogs/news/systematic-approach-for-least-privileges-jp/" target="_blank" rel="noopener noreferrer" class="">最小権限の原則への体系的アプローチ</a></li>
<li class=""><a href="https://aws.amazon.com/jp/cloudtrail/" target="_blank" rel="noopener noreferrer" class="">AWS CloudTrail</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="IAM" term="IAM"/>
        <category label="security" term="security"/>
        <category label="cloud" term="cloud"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AWS Control Towerでマルチアカウントのガバナンスを実現する - ランディングゾーンとコントロール]]></title>
        <id>https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f</id>
        <link href="https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f"/>
        <updated>2026-03-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWSのマルチアカウント環境におけるガバナンスを実現するAWS Control Towerについて解説します。ランディングゾーンの概念、コントロール（ガードレール）によるポリシー適用、ダッシュボードによるコンプライアンスの監視について整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWSのマルチアカウント環境におけるガバナンスを実現するAWS Control Towerについて解説します。ランディングゾーンの概念、コントロール（ガードレール）によるポリシー適用、ダッシュボードによるコンプライアンスの監視について整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">マルチアカウント環境のガバナンスを強化したい人</li>
<li class="">AWS Control Towerの基本的な仕組みを理解したい人</li>
<li class="">ランディングゾーンとコントロールの概念を学びたい人</li>
<li class="">AWSアカウントのコンプライアンス管理に関心がある人</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>前提となる記事</div><div class="admonitionContent_BuS1"><p>この記事では、AWS Organizationsの基本概念（OU、SCP、メンバーアカウント）を理解していることを前提としています。</p><ul>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae">AWS Organizationsで複数アカウントを一元管理する - OUとSCPによるアクセス制御</a></li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="aws-control-towerとは">AWS Control Towerとは<a href="https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f#aws-control-tower%E3%81%A8%E3%81%AF" class="hash-link" aria-label="AWS Control Towerとは への直接リンク" title="AWS Control Towerとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/what-is-control-tower.html" target="_blank" rel="noopener noreferrer" class="">AWS Control Tower</a>は、AWS Organizationsと連携してマルチアカウント環境のガバナンスを自動化・標準化するサービスです。組織の規模が拡大しAWSアカウントが増えてくると、個々のアカウントがセキュリティやコンプライアンスなどのガバナンスルールに準拠しているかを一元的に統制する必要があります。</p>
<p>AWS Control Towerは、この課題に対して以下の機能を提供します。</p>
<ul>
<li class="">事前設定したアカウントテンプレートによる一貫性のあるAWSアカウント作成の自動化</li>
<li class="">コントロール（ガードレール）によるポリシーの適用</li>
<li class="">ダッシュボードによるコンプライアンスの継続的なモニタリング</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ランディングゾーン">ランディングゾーン<a href="https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f#%E3%83%A9%E3%83%B3%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%BE%E3%83%BC%E3%83%B3" class="hash-link" aria-label="ランディングゾーン への直接リンク" title="ランディングゾーン への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/planning-your-deployment.html" target="_blank" rel="noopener noreferrer" class="">ランディングゾーン</a>は、AWS Control Towerによって自動構成されるマルチアカウント環境の基盤です。ランディングゾーンには、セキュリティやログ管理のためのアカウント、OU構成、基本的なコントロールが含まれており、ベストプラクティスに基づいたマルチアカウント環境が自動的にセットアップされます。</p>
<p>ランディングゾーンの主な構成要素は以下の通りです。</p>
<table><thead><tr><th>構成要素</th><th>説明</th></tr></thead><tbody><tr><td><strong>管理アカウント</strong></td><td>Control Towerの管理とOrganizationsのルートアカウント</td></tr><tr><td><strong>ログアーカイブアカウント</strong></td><td>すべてのアカウントのAPIログ（CloudTrail）を集約</td></tr><tr><td><strong>監査アカウント</strong></td><td>セキュリティ監査とコンプライアンス確認用</td></tr><tr><td><strong>基本OU</strong></td><td>Security OU（ログ・監査用）やSandbox OU（検証用）が自動作成</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="コントロールガードレール">コントロール（ガードレール）<a href="https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f#%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%AC%E3%83%BC%E3%83%89%E3%83%AC%E3%83%BC%E3%83%AB" class="hash-link" aria-label="コントロール（ガードレール） への直接リンク" title="コントロール（ガードレール） への直接リンク" translate="no">​</a></h2>
<p>コントロールは、ランディングゾーン内のAWSアカウントに対してガバナンスルールを適用する機能です。コントロールには<strong>予防コントロール</strong>と<strong>検出コントロール</strong>の2種類があります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="予防コントロール">予防コントロール<a href="https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f#%E4%BA%88%E9%98%B2%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB" class="hash-link" aria-label="予防コントロール への直接リンク" title="予防コントロール への直接リンク" translate="no">​</a></h3>
<p>予防コントロールは、ガバナンスルールに違反する操作を事前に<strong>防止</strong>するコントロールです。SCPを使用して実装されており、非準拠の操作が実行される前にブロックします。</p>
<p><strong>例</strong>: S3バケットのパブリックアクセスを禁止、特定リージョン以外でのリソース作成を禁止</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="検出コントロール">検出コントロール<a href="https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f#%E6%A4%9C%E5%87%BA%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB" class="hash-link" aria-label="検出コントロール への直接リンク" title="検出コントロール への直接リンク" translate="no">​</a></h3>
<p>検出コントロールは、ガバナンスルールに違反する状態を<strong>検出</strong>するコントロールです。AWS Configルールを使用して実装されており、非準拠のリソースが存在する場合にアラートを発生させます。</p>
<p><strong>例</strong>: MFAが有効になっていないIAMユーザーの検出、暗号化されていないEBSボリュームの検出</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ダッシュボード">ダッシュボード<a href="https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f#%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9C%E3%83%BC%E3%83%89" class="hash-link" aria-label="ダッシュボード への直接リンク" title="ダッシュボード への直接リンク" translate="no">​</a></h2>
<p>AWS Control Towerのダッシュボードでは、ランディングゾーン内のすべてのAWSアカウントのコンプライアンス状態を一元的に確認できます。ポリシー違反のアカウントが存在する場合はフィルタリングによる検知が可能で、非準拠の項目に対して必要なコントロールを追加適用することもできます。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>ガバナンスの重要性</div><div class="admonitionContent_BuS1"><p>規制対象のコンテンツを扱う部門や、金融・医療などコンプライアンス要件が厳しい業界では、アカウント作成時点からガバナンスルールが適用された標準化は特に重要です。AWS Control Towerにより、想定外のアカウント作成や非準拠の運用を未然に防ぐことが可能になります。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/aws-control-tower-guide-04a0876f#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、AWS Control Towerの基本的な仕組みについて解説しました。AWS Control Towerは、ランディングゾーンによる標準化されたマルチアカウント環境の構築、予防・検出コントロールによるガバナンスルールの適用、ダッシュボードによるコンプライアンスの継続的な監視を提供するサービスです。AWS Organizationsと組み合わせることで、組織のガバナンスルールに準拠したアカウント管理を自動化できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/what-is-control-tower.html" target="_blank" rel="noopener noreferrer" class="">AWS Control Tower公式ドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/planning-your-deployment.html" target="_blank" rel="noopener noreferrer" class="">ランディングゾーンの計画</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="AWS Control Tower" term="AWS Control Tower"/>
        <category label="AWS Organizations" term="AWS Organizations"/>
        <category label="cloud" term="cloud"/>
        <category label="security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AWS License Managerでソフトウェアライセンスを管理する - ライセンスルールの設定と追跡]]></title>
        <id>https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac</id>
        <link href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac"/>
        <updated>2026-03-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWSリソースで使用するソフトウェアライセンスを一元管理するためのサービスであるAWS License Managerについて解説します。ライセンスルールの設定、使用状況の追跡、コンプライアンスの確保について整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWSリソースで使用するソフトウェアライセンスを一元管理するためのサービスであるAWS License Managerについて解説します。ライセンスルールの設定、使用状況の追跡、コンプライアンスの確保について整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">AWSリソースのソフトウェアライセンスを効率的に管理したい人</li>
<li class="">ライセンス違反のリスクを低減したい人</li>
<li class="">AWS License Managerの基本的な仕組みを理解したい人</li>
<li class="">組織のライセンスコンプライアンスを強化したい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ソフトウェアライセンス管理の課題">ソフトウェアライセンス管理の課題<a href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac#%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E7%AE%A1%E7%90%86%E3%81%AE%E8%AA%B2%E9%A1%8C" class="hash-link" aria-label="ソフトウェアライセンス管理の課題 への直接リンク" title="ソフトウェアライセンス管理の課題 への直接リンク" translate="no">​</a></h2>
<p>個人の開発環境ではあまり意識されることが少ないソフトウェアライセンスですが、商用利用や企業でのAWS利用においてはライセンス管理は不可欠な項目です。</p>
<p>従来のライセンス管理には以下のような課題があります。</p>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>従来のライセンス管理の課題</div><div class="admonitionContent_BuS1"><ul>
<li class="">Excelや自前のデータベースでの管理は労力が大きい</li>
<li class="">ライセンスの使用状況をリアルタイムに把握することが困難</li>
<li class="">人間が管理するとヒューマンエラーが起きやすい</li>
<li class="">ライセンス管理を正確に行える人材の確保が難しい</li>
<li class="">ライセンス違反が発覚した場合、多額のペナルティが発生する可能性がある</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="aws-license-managerとは">AWS License Managerとは<a href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac#aws-license-manager%E3%81%A8%E3%81%AF" class="hash-link" aria-label="AWS License Managerとは への直接リンク" title="AWS License Managerとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://aws.amazon.com/jp/license-manager/" target="_blank" rel="noopener noreferrer" class="">AWS License Manager</a>は、AWSリソースで使用するソフトウェアライセンスの管理を自動化するサービスです。ライセンスルールの定義、使用状況の追跡、制限の適用を一元的に行えます。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="license-managerの主な機能">License Managerの主な機能<a href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac#license-manager%E3%81%AE%E4%B8%BB%E3%81%AA%E6%A9%9F%E8%83%BD" class="hash-link" aria-label="License Managerの主な機能 への直接リンク" title="License Managerの主な機能 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ライセンス設定の作成">ライセンス設定の作成<a href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac#%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E8%A8%AD%E5%AE%9A%E3%81%AE%E4%BD%9C%E6%88%90" class="hash-link" aria-label="ライセンス設定の作成 への直接リンク" title="ライセンス設定の作成 への直接リンク" translate="no">​</a></h3>
<p>License Managerでは、ソフトウェアのライセンス条件に基づいたライセンス設定（License Configuration）を作成できます。ライセンス設定には以下のようなパラメータを定義します。</p>
<table><thead><tr><th>パラメータ</th><th>説明</th></tr></thead><tbody><tr><td><strong>ライセンスカウントタイプ</strong></td><td>vCPU数、インスタンス数、ソケット数などでカウント</td></tr><tr><td><strong>ライセンス数の上限</strong></td><td>使用可能なライセンスの最大数</td></tr><tr><td><strong>ハードリミットの有無</strong></td><td>上限に達した場合に新規リソースの起動を制限するかどうか</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="使用状況の追跡">使用状況の追跡<a href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac#%E4%BD%BF%E7%94%A8%E7%8A%B6%E6%B3%81%E3%81%AE%E8%BF%BD%E8%B7%A1" class="hash-link" aria-label="使用状況の追跡 への直接リンク" title="使用状況の追跡 への直接リンク" translate="no">​</a></h3>
<p>License Managerのダッシュボードでは、ライセンスの使用状況をリアルタイムに追跡できます。どのAWSリソースがどのライセンスを使用しているかを可視化し、ライセンスの過不足を把握できます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="制限の適用">制限の適用<a href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac#%E5%88%B6%E9%99%90%E3%81%AE%E9%81%A9%E7%94%A8" class="hash-link" aria-label="制限の適用 への直接リンク" title="制限の適用 への直接リンク" translate="no">​</a></h3>
<p>ライセンスルールにハードリミットを設定することで、上限に達した場合に新しいAWSリソースの起動を自動的にブロックできます。これにより、ライセンス違反を未然に防ぐことが可能です。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="aws-organizationsとの連携">AWS Organizationsとの連携<a href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac#aws-organizations%E3%81%A8%E3%81%AE%E9%80%A3%E6%90%BA" class="hash-link" aria-label="AWS Organizationsとの連携 への直接リンク" title="AWS Organizationsとの連携 への直接リンク" translate="no">​</a></h2>
<p>AWS License Managerは<a class="" href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae">AWS Organizations</a>と連携することで、組織全体のライセンスを一元管理できます。管理アカウントでライセンス設定を作成し、メンバーアカウント全体に適用することで、組織横断的なライセンスコンプライアンスを実現します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/aws-license-manager-guide-0a2dbbac#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、AWS License Managerの基本的な仕組みについて解説しました。AWS License Managerは、ソフトウェアライセンスのルール定義、使用状況の追跡、制限の適用を自動化するサービスです。従来のExcelやデータベースによる手動管理と比較して、ヒューマンエラーの防止、リアルタイムの使用状況把握、上限超過時の自動制限により、ライセンスコンプライアンスを効率的に確保できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://aws.amazon.com/jp/license-manager/" target="_blank" rel="noopener noreferrer" class="">AWS License Manager公式ページ</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/license-manager/latest/userguide/license-manager.html" target="_blank" rel="noopener noreferrer" class="">AWS License Manager公式ドキュメント</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="AWS License Manager" term="AWS License Manager"/>
        <category label="cloud" term="cloud"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AWS Organizationsで複数アカウントを一元管理する - OUとSCPによるアクセス制御]]></title>
        <id>https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae</id>
        <link href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae"/>
        <updated>2026-03-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、複数のAWSアカウントを一元管理するためのサービスであるAWS Organizationsについて解説します。OU（組織単位）によるアカウントのグループ化、SCP（サービスコントロールポリシー）によるアクセス制御、請求の一元管理について整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、複数のAWSアカウントを一元管理するためのサービスであるAWS Organizationsについて解説します。OU（組織単位）によるアカウントのグループ化、SCP（サービスコントロールポリシー）によるアクセス制御、請求の一元管理について整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">複数のAWSアカウントを効率的に管理したい人</li>
<li class="">AWS Organizationsの基本的な仕組みを理解したい人</li>
<li class="">OUとSCPによるアクセス制御を学びたい人</li>
<li class="">AWSアカウントの請求を一元化したい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="aws-organizationsとは">AWS Organizationsとは<a href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae#aws-organizations%E3%81%A8%E3%81%AF" class="hash-link" aria-label="AWS Organizationsとは への直接リンク" title="AWS Organizationsとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://aws.amazon.com/jp/organizations/" target="_blank" rel="noopener noreferrer" class="">AWS Organizations</a>は、複数のAWSアカウントを一元管理するためのサービスです。ルートとなる単一の<strong>管理アカウント（メインアカウント）<strong>に、複数の</strong>メンバーアカウント</strong>を紐づける形式で組織を構成します。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ou組織単位">OU（組織単位）<a href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae#ou%E7%B5%84%E7%B9%94%E5%8D%98%E4%BD%8D" class="hash-link" aria-label="OU（組織単位） への直接リンク" title="OU（組織単位） への直接リンク" translate="no">​</a></h2>
<p>OU（Organizational Unit）は、メンバーアカウントをグループ化するための単位です。企業であれば部門ごと、プロジェクトであれば環境ごと（開発・ステージング・本番）にOUを作成し、その下にメンバーアカウントを配置できます。</p>
<p>OUの主な特徴は以下の通りです。</p>
<ul>
<li class="">OUは階層構造を持ち、OU内にさらにOUをネストすることが可能</li>
<li class="">メンバーアカウントは1つのOUにのみ所属できる</li>
<li class="">OUに所属せず、直接管理アカウントにメンバーアカウントを紐づけることも可能</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="scpサービスコントロールポリシー">SCP（サービスコントロールポリシー）<a href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae#scp%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC" class="hash-link" aria-label="SCP（サービスコントロールポリシー） への直接リンク" title="SCP（サービスコントロールポリシー） への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps.html" target="_blank" rel="noopener noreferrer" class="">SCP（Service Control Policy）</a>は、AWS Organizations内でのリソースへのアクセス制御を行うためのポリシーです。OU単位またはメンバーアカウント単位で適用でき、対象のアカウントで利用可能なAWSサービスやアクションを制限します。</p>
<!-- -->
<p>SCPの主なポイントは以下の通りです。</p>
<ul>
<li class="">SCPはOU単位での設定が可能で、OUに属するすべてのメンバーアカウントに適用される</li>
<li class="">メンバーアカウント単位での個別設定も可能</li>
<li class="">SCPで制限されたアクションは、メンバーアカウント内のIAMポリシーで許可されていても実行できない</li>
<li class="">管理アカウント自体にはSCPは適用されない</li>
</ul>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>SCPとIAMポリシーの関係</div><div class="admonitionContent_BuS1"><p>SCPはIAMポリシーの上位に位置する制限です。SCPで拒否されたアクションは、IAMポリシーで許可されていても実行できません。SCPは「利用可能なサービスの上限」を定義し、IAMポリシーは「その範囲内での具体的な権限」を定義します。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="メンバーアカウントとiamの関係">メンバーアカウントとIAMの関係<a href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae#%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%A8iam%E3%81%AE%E9%96%A2%E4%BF%82" class="hash-link" aria-label="メンバーアカウントとIAMの関係 への直接リンク" title="メンバーアカウントとIAMの関係 への直接リンク" translate="no">​</a></h2>
<p>AWS Organizationsにおけるメンバーアカウントは、IAMユーザーとは異なる概念です。メンバーアカウントはそれぞれ固有のAWSアカウント（アカウントIDを持つ独立したアカウント）であり、各メンバーアカウント内で独自のIAMユーザー、グループ、ロールを管理できます。</p>
<p>管理アカウントや権限のあるアカウントから、IAMの権限グループやロールを各メンバーアカウントに付与することも可能です。SCPとIAMを組み合わせることで、きめ細かい権限管理が実現できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="請求の一元管理">請求の一元管理<a href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae#%E8%AB%8B%E6%B1%82%E3%81%AE%E4%B8%80%E5%85%83%E7%AE%A1%E7%90%86" class="hash-link" aria-label="請求の一元管理 への直接リンク" title="請求の一元管理 への直接リンク" translate="no">​</a></h2>
<p>AWS Organizationsでは、個々のメンバーアカウントで発生した利用料金がルートの管理アカウントの請求に一元化されます。これにより、組織全体のAWS利用コストを単一の請求書で把握できます。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>一括請求のメリット</div><div class="admonitionContent_BuS1"><ul>
<li class="">組織全体のコストを一元的に可視化できる</li>
<li class="">ボリュームディスカウントなどの割引が組織全体の利用量に基づいて適用される</li>
<li class="">個々のメンバーアカウントごとの利用料金の内訳も確認可能</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/aws-organizations-guide-ea7566ae#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、AWS Organizationsの基本的な仕組みについて解説しました。AWS Organizationsは、管理アカウントを中心に複数のメンバーアカウントをOU（組織単位）でグループ化し、SCP（サービスコントロールポリシー）でアクセス制御を行い、請求を一元管理するサービスです。IAMポリシーとSCPを組み合わせることで、組織のガバナンスルールに準拠したアカウント管理が可能になります。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://aws.amazon.com/jp/organizations/" target="_blank" rel="noopener noreferrer" class="">AWS Organizations公式ページ</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_introduction.html" target="_blank" rel="noopener noreferrer" class="">AWS Organizations公式ドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps.html" target="_blank" rel="noopener noreferrer" class="">サービスコントロールポリシー（SCP）</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="AWS Organizations" term="AWS Organizations"/>
        <category label="cloud" term="cloud"/>
        <category label="security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AWS Service Catalogで標準化されたAWSリソースを展開する - CloudFormationテンプレートによるガバナンス]]></title>
        <id>https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6</id>
        <link href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6"/>
        <updated>2026-03-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、組織内で標準化されたAWSリソースをメンバーに提供するためのサービスであるAWS Service Catalogについて解説します。CloudFormationテンプレートを活用したサービスカタログの仕組みと、ガバナンスルールに準拠したリソース展開について整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、組織内で標準化されたAWSリソースをメンバーに提供するためのサービスであるAWS Service Catalogについて解説します。CloudFormationテンプレートを活用したサービスカタログの仕組みと、ガバナンスルールに準拠したリソース展開について整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">組織内のAWSリソース作成を標準化したい人</li>
<li class="">AWS Service Catalogの基本的な仕組みを理解したい人</li>
<li class="">CloudFormationテンプレートを使ったガバナンスに関心がある人</li>
<li class="">メンバー間の環境差異をなくしたい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="組織におけるawsリソース管理の課題">組織におけるAWSリソース管理の課題<a href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6#%E7%B5%84%E7%B9%94%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Baws%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E7%AE%A1%E7%90%86%E3%81%AE%E8%AA%B2%E9%A1%8C" class="hash-link" aria-label="組織におけるAWSリソース管理の課題 への直接リンク" title="組織におけるAWSリソース管理の課題 への直接リンク" translate="no">​</a></h2>
<p>組織でAWSを使って開発や運用を行う際に、個々のメンバーが独自にAWSリソースを作成・設定できる状態は、以下のリスクを伴います。</p>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>統制がない場合のリスク</div><div class="admonitionContent_BuS1"><ul>
<li class="">組織のガバナンスルールから逸脱したリソースが作成される</li>
<li class="">組織が把握していない設定のリソースが存在する</li>
<li class="">メンバー間や部門間で実行環境に差異が生まれる</li>
<li class="">コンプライアンス要件を満たさないリソースが運用される</li>
</ul></div></div>
<p>これらの問題に対応するために、AWSでは<a href="https://docs.aws.amazon.com/ja_jp/servicecatalog/" target="_blank" rel="noopener noreferrer" class="">AWS Service Catalog</a>が提供されています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="aws-service-catalogとは">AWS Service Catalogとは<a href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6#aws-service-catalog%E3%81%A8%E3%81%AF" class="hash-link" aria-label="AWS Service Catalogとは への直接リンク" title="AWS Service Catalogとは への直接リンク" translate="no">​</a></h2>
<p>AWS Service Catalogは、組織が<a href="https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html" target="_blank" rel="noopener noreferrer" class="">AWS CloudFormation</a>テンプレートを使用して事前に作成した標準化されたリソース構成を、<strong>サービスカタログ</strong>として組織のメンバーに提供するサービスです。</p>
<p>メンバーはサービスカタログから承認済みのリソース構成を選択してプロビジョニングするため、ガバナンスルールに準拠したリソースのみが作成されます。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="service-catalogの構成要素">Service Catalogの構成要素<a href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6#service-catalog%E3%81%AE%E6%A7%8B%E6%88%90%E8%A6%81%E7%B4%A0" class="hash-link" aria-label="Service Catalogの構成要素 への直接リンク" title="Service Catalogの構成要素 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ポートフォリオ">ポートフォリオ<a href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6#%E3%83%9D%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%AA%E3%82%AA" class="hash-link" aria-label="ポートフォリオ への直接リンク" title="ポートフォリオ への直接リンク" translate="no">​</a></h3>
<p>ポートフォリオは、関連する製品（CloudFormationテンプレート）をグループ化するコンテナです。部門やチーム、ユースケースごとにポートフォリオを作成し、適切なメンバーやOUに共有します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="製品">製品<a href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6#%E8%A3%BD%E5%93%81" class="hash-link" aria-label="製品 への直接リンク" title="製品 への直接リンク" translate="no">​</a></h3>
<p>製品は、CloudFormationテンプレートとして定義された具体的なリソース構成です。例えば、「標準Webアプリケーション構成」「セキュアデータベース構成」など、ガバナンスルールに準拠した構成をテンプレートとして登録します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="制約">制約<a href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6#%E5%88%B6%E7%B4%84" class="hash-link" aria-label="制約 への直接リンク" title="制約 への直接リンク" translate="no">​</a></h3>
<p>制約は、メンバーが製品をプロビジョニングする際に適用される追加のルールです。起動制約（どのIAMロールで起動するか）、テンプレート制約（パラメータの選択肢を制限する）などを設定できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="service-catalogの利点">Service Catalogの利点<a href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6#service-catalog%E3%81%AE%E5%88%A9%E7%82%B9" class="hash-link" aria-label="Service Catalogの利点 への直接リンク" title="Service Catalogの利点 への直接リンク" translate="no">​</a></h2>
<table><thead><tr><th>利点</th><th>説明</th></tr></thead><tbody><tr><td><strong>ガバナンス準拠</strong></td><td>メンバーは承認済みの構成のみをプロビジョニングするため、ガバナンスルールからの逸脱を防止できる</td></tr><tr><td><strong>環境の一貫性</strong></td><td>サービスカタログから標準化されたリソースを選択するため、メンバー間・部門間の環境差異がなくなる</td></tr><tr><td><strong>開発効率の向上</strong></td><td>メンバーは一からインフラを設計する必要がなく、カタログから選択するだけでプロビジョニングが完了する</td></tr><tr><td><strong>バージョン管理</strong></td><td>製品のバージョン管理が可能で、テンプレートの更新を段階的に展開できる</td></tr></tbody></table>
<!-- -->
<p>CloudFormationテンプレートの基本については、<a class="" href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85">IaC（Infrastructure as Code）とAWS CloudFormation</a>で解説しています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/aws-service-catalog-guide-1b3f5eb6#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、AWS Service Catalogの基本的な仕組みについて解説しました。AWS Service Catalogは、CloudFormationテンプレートをサービスカタログとして組織のメンバーに提供し、ガバナンスルールに準拠した標準化されたAWSリソースの展開を実現するサービスです。メンバーはカタログから承認済みの構成を選択してプロビジョニングするため、ガバナンスからの逸脱防止と環境の一貫性の確保、開発効率の向上が期待できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/servicecatalog/" target="_blank" rel="noopener noreferrer" class="">AWS Service Catalog公式ドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html" target="_blank" rel="noopener noreferrer" class="">AWS CloudFormation公式ドキュメント</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="AWS Service Catalog" term="AWS Service Catalog"/>
        <category label="AWS CloudFormation" term="AWS CloudFormation"/>
        <category label="cloud" term="cloud"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Amazon VPCの基本 - サブネット・ゲートウェイ・接続方式を理解する]]></title>
        <id>https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381</id>
        <link href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381"/>
        <updated>2026-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWSのネットワークの基盤となるAmazon VPC（Virtual Private Cloud）について解説します。VPCの基本概念であるサブネット、ゲートウェイの種類、そしてVPCへの接続方式（インターネットゲートウェイ、VPN、Direct Connect）について整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWSのネットワークの基盤となるAmazon VPC（Virtual Private Cloud）について解説します。VPCの基本概念であるサブネット、ゲートウェイの種類、そしてVPCへの接続方式（インターネットゲートウェイ、VPN、Direct Connect）について整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">AWSのネットワーク構成を理解したい人</li>
<li class="">VPCのサブネット設計について学びたい人</li>
<li class="">VPN接続やDirect Connectの違いを知りたい人</li>
<li class="">AWSでセキュアなネットワーク環境を構築したい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="amazon-vpcとは">Amazon VPCとは<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#amazon-vpc%E3%81%A8%E3%81%AF" class="hash-link" aria-label="Amazon VPCとは への直接リンク" title="Amazon VPCとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html" target="_blank" rel="noopener noreferrer" class="">Amazon VPC（Virtual Private Cloud）</a>は、AWSクラウド内に論理的に分離された仮想ネットワークをプロビジョニングするサービスです。VPC内で定義したネットワーク空間にAWSリソースを配置し、外部との通信を制御できます。</p>
<p>VPCはAWSクラウドにおける自分専用のネットワーク空間であり、外部との境界線として機能します。VPC内のリソースには、自分で定義したゲートウェイを通じてのみアクセスが可能です。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="サブネット">サブネット<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88" class="hash-link" aria-label="サブネット への直接リンク" title="サブネット への直接リンク" translate="no">​</a></h2>
<p>VPC内にはサブネットと呼ばれるIPアドレスの範囲を定義し、リソースをグループ化します。サブネットには<strong>パブリックサブネット</strong>と<strong>プライベートサブネット</strong>の2種類があります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="パブリックサブネット">パブリックサブネット<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88" class="hash-link" aria-label="パブリックサブネット への直接リンク" title="パブリックサブネット への直接リンク" translate="no">​</a></h3>
<p>パブリックサブネットは、インターネットとの通信が可能なサブネットです。インターネットゲートウェイへのルーティングが設定されており、外部からのアクセスを受け付けるリソースを配置します。</p>
<p><strong>主な用途</strong>:</p>
<ul>
<li class="">Webサーバー（EC2インスタンス）</li>
<li class="">ロードバランサー（ALB / NLB）</li>
<li class="">NAT Gateway（プライベートサブネットからインターネットへの通信用）</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="プライベートサブネット">プライベートサブネット<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88" class="hash-link" aria-label="プライベートサブネット への直接リンク" title="プライベートサブネット への直接リンク" translate="no">​</a></h3>
<p>プライベートサブネットは、インターネットからの直接アクセスができないサブネットです。外部からのアクセスが想定されない、機密性の高いリソースを配置します。</p>
<p><strong>主な用途</strong>:</p>
<ul>
<li class="">データベース（RDS、DynamoDB VPCエンドポイント経由）</li>
<li class="">アプリケーションサーバー</li>
<li class="">内部向けのバッチ処理サーバー</li>
</ul>
<table><thead><tr><th>項目</th><th>パブリックサブネット</th><th>プライベートサブネット</th></tr></thead><tbody><tr><td><strong>インターネット接続</strong></td><td>可能</td><td>不可（直接）</td></tr><tr><td><strong>外部からのアクセス</strong></td><td>可能</td><td>不可</td></tr><tr><td><strong>主な配置リソース</strong></td><td>Webサーバー、LB</td><td>データベース、内部サーバー</td></tr><tr><td><strong>ルーティング</strong></td><td>インターネットGW経由</td><td>NAT GW経由（送信のみ）</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vpcへの接続方式">VPCへの接続方式<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#vpc%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%E6%96%B9%E5%BC%8F" class="hash-link" aria-label="VPCへの接続方式 への直接リンク" title="VPCへの接続方式 への直接リンク" translate="no">​</a></h2>
<p>VPC内のリソースへアクセスする方法は、リソースの公開範囲によって異なります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="インターネットゲートウェイ">インターネットゲートウェイ<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4" class="hash-link" aria-label="インターネットゲートウェイ への直接リンク" title="インターネットゲートウェイ への直接リンク" translate="no">​</a></h3>
<p>顧客向けのWebサイトなど、パブリックにアクセスされるリソースがある場合は、VPCに<a href="https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Internet_Gateway.html" target="_blank" rel="noopener noreferrer" class="">インターネットゲートウェイ</a>をアタッチします。インターネットゲートウェイはVPCとインターネット間の通信を仲介するゲートウェイです。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vpn接続仮想プライベートゲートウェイ">VPN接続（仮想プライベートゲートウェイ）<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#vpn%E6%8E%A5%E7%B6%9A%E4%BB%AE%E6%83%B3%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4" class="hash-link" aria-label="VPN接続（仮想プライベートゲートウェイ） への直接リンク" title="VPN接続（仮想プライベートゲートウェイ） への直接リンク" translate="no">​</a></h3>
<p>インターネット経由のパブリックアクセスではなく、プライベートな経路でVPCに接続する場合は、<a href="https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/how_it_works.html" target="_blank" rel="noopener noreferrer" class="">仮想プライベートゲートウェイ</a>をVPCにアタッチし、<a href="https://aws.amazon.com/jp/vpn/" target="_blank" rel="noopener noreferrer" class="">AWS VPN</a>経由で接続します。VPN接続はインターネット上に暗号化されたトンネルを構築し、オンプレミス環境からVPCへの安全な通信を実現します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="amazon-direct-connect">Amazon Direct Connect<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#amazon-direct-connect" class="hash-link" aria-label="Amazon Direct Connect への直接リンク" title="Amazon Direct Connect への直接リンク" translate="no">​</a></h3>
<p><a href="https://aws.amazon.com/jp/directconnect/" target="_blank" rel="noopener noreferrer" class="">Amazon Direct Connect</a>は、オンプレミス環境とAWSの間に物理的な専用回線を敷設するサービスです。VPN接続と同様に仮想プライベートゲートウェイを使用しますが、インターネットを経由せず専用の物理回線を使用します。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vpnとdirect-connectの比較">VPNとDirect Connectの比較<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#vpn%E3%81%A8direct-connect%E3%81%AE%E6%AF%94%E8%BC%83" class="hash-link" aria-label="VPNとDirect Connectの比較 への直接リンク" title="VPNとDirect Connectの比較 への直接リンク" translate="no">​</a></h3>
<table><thead><tr><th>項目</th><th>AWS VPN</th><th>Amazon Direct Connect</th></tr></thead><tbody><tr><td><strong>接続経路</strong></td><td>インターネット経由（暗号化トンネル）</td><td>物理的な専用回線</td></tr><tr><td><strong>コスト</strong></td><td>比較的安価</td><td>高価（専用回線の敷設が必要）</td></tr><tr><td><strong>帯域幅</strong></td><td>接続数が増えると低速になりやすい</td><td>安定した帯域幅を確保</td></tr><tr><td><strong>レイテンシ</strong></td><td>インターネットの状態に依存</td><td>安定した低レイテンシ</td></tr><tr><td><strong>適したユースケース</strong></td><td>一般的なリモートアクセス</td><td>大量データ転送、低レイテンシが必要なアプリケーション</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>接続方式の選択</div><div class="admonitionContent_BuS1"><p>プライベートなVPC環境への安全な接続は、用途に応じてVPNとDirect Connectを使い分けます。一般的なリモートアクセスやコスト重視であればVPN、大量のデータ転送やレイテンシに厳しい要件がある場合はDirect Connectが有効です。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、Amazon VPCの基本概念として、サブネット（パブリック・プライベート）によるリソースの分離、インターネットゲートウェイによるパブリックアクセス、VPNとDirect Connectによるプライベート接続の3つの接続方式について解説しました。VPCはAWSにおけるネットワーク設計の基盤であり、パブリックサブネットとプライベートサブネットの適切な使い分けと、ユースケースに応じた接続方式の選択がセキュアなインフラ構築の基本となります。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html" target="_blank" rel="noopener noreferrer" class="">Amazon VPC公式ドキュメント</a></li>
<li class=""><a href="https://aws.amazon.com/jp/vpn/" target="_blank" rel="noopener noreferrer" class="">AWS VPN</a></li>
<li class=""><a href="https://aws.amazon.com/jp/directconnect/" target="_blank" rel="noopener noreferrer" class="">Amazon Direct Connect</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Internet_Gateway.html" target="_blank" rel="noopener noreferrer" class="">VPCインターネットゲートウェイ</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="Amazon VPC" term="Amazon VPC"/>
        <category label="network" term="network"/>
        <category label="security" term="security"/>
        <category label="cloud" term="cloud"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AWSのリージョン・アベイラビリティーゾーン・エッジロケーション - グローバルインフラの仕組み]]></title>
        <id>https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b</id>
        <link href="https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b"/>
        <updated>2026-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWSのグローバルインフラストラクチャを構成する3つの要素であるリージョン、アベイラビリティーゾーン（AZ）、エッジロケーションについて解説します。それぞれの概念と役割の違いを整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWSのグローバルインフラストラクチャを構成する3つの要素であるリージョン、アベイラビリティーゾーン（AZ）、エッジロケーションについて解説します。それぞれの概念と役割の違いを整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">AWSのグローバルインフラの仕組みを理解したい人</li>
<li class="">リージョンとAZの違いを整理したい人</li>
<li class="">エッジロケーションとCDNの関係を知りたい人</li>
<li class="">AWSでシステム設計を行う際のインフラ選定の基礎を学びたい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="awsグローバルインフラの全体像">AWSグローバルインフラの全体像<a href="https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b#aws%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E3%81%AE%E5%85%A8%E4%BD%93%E5%83%8F" class="hash-link" aria-label="AWSグローバルインフラの全体像 への直接リンク" title="AWSグローバルインフラの全体像 への直接リンク" translate="no">​</a></h2>
<p>AWSのグローバルインフラストラクチャは、<strong>リージョン</strong>、<strong>アベイラビリティーゾーン（AZ）</strong>、<strong>エッジロケーション</strong>の3つの要素で構成されています。それぞれ異なる目的と役割を持ち、AWSのサービスを支えるインフラ基盤として機能しています。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="リージョン">リージョン<a href="https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b#%E3%83%AA%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3" class="hash-link" aria-label="リージョン への直接リンク" title="リージョン への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html" target="_blank" rel="noopener noreferrer" class="">リージョン</a>は、複数のデータセンターで構成される地理的なエリアです。AWSは世界中に複数のリージョンを展開しており、日本には東京リージョン（ap-northeast-1）と大阪リージョン（ap-northeast-3）の2つのリージョンがあります。</p>
<p>リージョンの主な特徴は以下の通りです。</p>
<ul>
<li class="">各リージョンは地理的に離れた場所に配置されている</li>
<li class="">1つのリージョンには<a href="https://aws.amazon.com/jp/about-aws/global-infrastructure/regions_az/" target="_blank" rel="noopener noreferrer" class="">3つ以上のAZ</a>が存在する</li>
<li class="">リージョン名（例: 東京リージョン）は地理的な位置を示すものであり、管轄のデータセンターが必ずしもその都市に所在するとは限らない</li>
<li class="">AWSサービスの利用料金はリージョンごとに異なる</li>
</ul>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>リージョン選択の考慮点</div><div class="admonitionContent_BuS1"><p>リージョンを選択する際は、エンドユーザーとの物理的な距離（レイテンシ）、利用可能なAWSサービス、料金、データの法的要件（データレジデンシー）などを考慮する必要があります。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="アベイラビリティーゾーンaz">アベイラビリティーゾーン（AZ）<a href="https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b#%E3%82%A2%E3%83%99%E3%82%A4%E3%83%A9%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3%E3%83%BC%E3%82%BE%E3%83%BC%E3%83%B3az" class="hash-link" aria-label="アベイラビリティーゾーン（AZ） への直接リンク" title="アベイラビリティーゾーン（AZ） への直接リンク" translate="no">​</a></h2>
<p>アベイラビリティーゾーン（AZ）は、リージョン内に存在するデータセンターのグループです。各AZは以下の特徴を持ち、耐障害性と高可用性を実現しています。</p>
<table><thead><tr><th>特徴</th><th>説明</th></tr></thead><tbody><tr><td><strong>独立した電源</strong></td><td>各AZは独立した電力供給を持つ</td></tr><tr><td><strong>独立した冷却装置</strong></td><td>データセンターの冷却システムが個別に管理されている</td></tr><tr><td><strong>物理的な距離</strong></td><td>AZ間は物理的に離れた場所に構築されており、局所的な災害の影響を限定できる</td></tr><tr><td><strong>高速ネットワーク</strong></td><td>AZ間は低レイテンシの専用ネットワークで接続されている</td></tr></tbody></table>
<!-- -->
<p>この冗長構成により、1つのAZで障害が発生しても、リージョン内の他のAZが稼働可能な限り、コンピューティングを継続できます。マルチAZ構成でシステムを設計することで、高い可用性を実現できます。</p>
<p>マルチAZ構成を活用したトラフィック分散については、<a class="" href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d">Elastic Load Balancingの仕組み - Amazon EC2と連携したトラフィック分散</a>で解説しています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="エッジロケーション">エッジロケーション<a href="https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b#%E3%82%A8%E3%83%83%E3%82%B8%E3%83%AD%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3" class="hash-link" aria-label="エッジロケーション への直接リンク" title="エッジロケーション への直接リンク" translate="no">​</a></h2>
<p>エッジロケーションは、主にCDN（Content Delivery Network）サービスである<a href="https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html" target="_blank" rel="noopener noreferrer" class="">Amazon CloudFront</a>で使用される、コンテンツ配信拠点です。リージョンやAZとは異なり、世界中の主要都市に数百か所以上配置されています。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="エッジロケーションの役割">エッジロケーションの役割<a href="https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b#%E3%82%A8%E3%83%83%E3%82%B8%E3%83%AD%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%BD%B9%E5%89%B2" class="hash-link" aria-label="エッジロケーションの役割 への直接リンク" title="エッジロケーションの役割 への直接リンク" translate="no">​</a></h3>
<p>あるリージョンにデプロイしたWebサイトやアプリケーションのコンテンツは、リージョンのデータセンターから配信されます。そのため、データセンターから物理的に離れた場所からアクセスすると、距離に応じてレイテンシが発生します。</p>
<p>例えば、東京リージョンにデプロイしたWebサイトを米国からアクセスした場合、東京で閲覧する場合よりもレスポンスが遅くなります。</p>
<!-- -->
<p>CloudFrontは、画像や動画などのコンテンツをエンドユーザーに最も近いエッジロケーションにキャッシュし、そこから配信します。これにより、アプリケーションをデプロイしたリージョンに関係なく、世界中のユーザーにコンテンツを高速に配信することが可能になります。</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>DNSとの連携</div><div class="admonitionContent_BuS1"><p>ユーザーを最も近いエッジロケーションやリージョンにルーティングする役割はDNSサービスが担っています。
AWSが提供しているDNSサービスである<a href="https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/Welcome.html" target="_blank" rel="noopener noreferrer" class="">Amazon Route 53</a>を使用すると、ドメインの管理からレイテンシベースルーティングやジオロケーションルーティングを使用でき、ユーザーに最適な配信先をシームレスに選択できます。
この機能により、ユーザーは迅速かつ効率的にコンテンツにアクセスできるため、全体的なユーザーエクスペリエンスが向上します。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3つの要素の比較">3つの要素の比較<a href="https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b#3%E3%81%A4%E3%81%AE%E8%A6%81%E7%B4%A0%E3%81%AE%E6%AF%94%E8%BC%83" class="hash-link" aria-label="3つの要素の比較 への直接リンク" title="3つの要素の比較 への直接リンク" translate="no">​</a></h2>
<table><thead><tr><th>項目</th><th>リージョン</th><th>AZ</th><th>エッジロケーション</th></tr></thead><tbody><tr><td><strong>目的</strong></td><td>地理的なサービス提供エリア</td><td>耐障害性・高可用性の確保</td><td>コンテンツの高速配信</td></tr><tr><td><strong>構成</strong></td><td>3つ以上のAZで構成</td><td>独立したデータセンター群</td><td>CDN配信拠点</td></tr><tr><td><strong>数</strong></td><td>30以上</td><td>リージョンあたり3つ以上</td><td>数百か所以上</td></tr><tr><td><strong>主な用途</strong></td><td>AWSリソースのデプロイ先</td><td>マルチAZ構成による冗長化</td><td>CloudFrontによるキャッシュ配信</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/aws-regions-az-edge-locations-fbf2ca0b#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、AWSのグローバルインフラストラクチャを構成するリージョン、アベイラビリティーゾーン（AZ）、エッジロケーションの3つの要素について解説しました。リージョンは地理的なサービス提供エリア、AZはリージョン内の冗長化されたデータセンター群、エッジロケーションはCloudFrontによるコンテンツ配信拠点として、それぞれ異なる役割を担っています。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://aws.amazon.com/jp/about-aws/global-infrastructure/" target="_blank" rel="noopener noreferrer" class="">AWSグローバルインフラストラクチャ</a></li>
<li class=""><a href="https://aws.amazon.com/jp/about-aws/global-infrastructure/regions_az/" target="_blank" rel="noopener noreferrer" class="">リージョンとアベイラビリティーゾーン</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html" target="_blank" rel="noopener noreferrer" class="">Amazon CloudFront公式ドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/Welcome.html" target="_blank" rel="noopener noreferrer" class="">Amazon Route 53公式ドキュメント</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="cloud" term="cloud"/>
        <category label="network" term="network"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[IaC（Infrastructure as Code）とAWS CloudFormation - インフラをコードで管理する]]></title>
        <id>https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85</id>
        <link href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85"/>
        <updated>2026-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、IaC（Infrastructure as Code）の概念と、AWSが提供するIaCサービスであるAWS CloudFormationについて解説します。CloudFormationを使用してインフラの定義をテンプレート化し、リージョンを問わず一貫性のある環境を構築する方法を紹介します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、IaC（Infrastructure as Code）の概念と、AWSが提供するIaCサービスであるAWS CloudFormationについて解説します。CloudFormationを使用してインフラの定義をテンプレート化し、リージョンを問わず一貫性のある環境を構築する方法を紹介します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">AWSのインフラ管理を自動化したい人</li>
<li class="">IaC（Infrastructure as Code）の概念を理解したい人</li>
<li class="">CloudFormationの基本的な仕組みと利点を知りたい人</li>
<li class="">複数リージョンへのインフラ展開を効率化したい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="iacinfrastructure-as-codeとは">IaC（Infrastructure as Code）とは<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#iacinfrastructure-as-code%E3%81%A8%E3%81%AF" class="hash-link" aria-label="IaC（Infrastructure as Code）とは への直接リンク" title="IaC（Infrastructure as Code）とは への直接リンク" translate="no">​</a></h2>
<p>IaC（Infrastructure as Code）は、サーバー、ネットワーク、データベースなどのインフラストラクチャをコード（テンプレートファイル）として定義・管理するアプローチです。従来の手動によるインフラ構築と異なり、インフラの構成をコードとして記述することで、バージョン管理、再現性の確保、自動化が可能になります。</p>
<!-- -->
<p>IaCの主なメリットは以下の通りです。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>IaCの利点</div><div class="admonitionContent_BuS1"><ul>
<li class=""><strong>再現性</strong>: 同一のテンプレートから常に同じ構成のインフラを構築できる</li>
<li class=""><strong>バージョン管理</strong>: Gitなどのバージョン管理システムでインフラの変更履歴を追跡できる</li>
<li class=""><strong>自動化</strong>: 人間の手動操作を排除し、ヒューマンエラーを防止できる</li>
<li class=""><strong>一貫性</strong>: 環境間（開発・ステージング・本番）の差異をなくすことができる</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="aws-cloudformationとは">AWS CloudFormationとは<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#aws-cloudformation%E3%81%A8%E3%81%AF" class="hash-link" aria-label="AWS CloudFormationとは への直接リンク" title="AWS CloudFormationとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html" target="_blank" rel="noopener noreferrer" class="">AWS CloudFormation</a>は、AWSが提供するIaCサービスです。YAMLまたはJSON形式のテンプレートファイルにインフラの構成を記述し、そのテンプレートに基づいてAWSリソースのプロビジョニングと管理を自動化します。</p>
<p>CloudFormationでは、テンプレートから作成されるリソースの集合を<strong>スタック</strong>と呼びます。スタック単位でリソースの作成、更新、削除が管理されます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="テンプレートの基本構造">テンプレートの基本構造<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E5%9F%BA%E6%9C%AC%E6%A7%8B%E9%80%A0" class="hash-link" aria-label="テンプレートの基本構造 への直接リンク" title="テンプレートの基本構造 への直接リンク" translate="no">​</a></h3>
<p>CloudFormationテンプレートはYAMLまたはJSONで記述します。以下はYAML形式の基本的な構造です。</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">template.yaml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">AWSTemplateFormatVersion</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'2010-09-09'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">Description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> サンプルCloudFormationテンプレート</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">Resources</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">MyS3Bucket</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> AWS</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">S3</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">Bucket</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Properties</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">BucketName</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> my</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">sample</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">bucket</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">MyDynamoDBTable</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> AWS</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">DynamoDB</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">Table</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Properties</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">TableName</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> my</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">sample</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">table</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">AttributeDefinitions</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">AttributeName</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> id</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">AttributeType</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> S</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">KeySchema</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">AttributeName</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> id</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">KeyType</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> HASH</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">BillingMode</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> PAY_PER_REQUEST</span><br></span></code></pre></div></div>
<p>このテンプレートでは、S3バケットとDynamoDBテーブルを定義しています。<code>Resources</code>セクションに作成するAWSリソースを記述し、<code>Type</code>でリソースの種類、<code>Properties</code>でリソースの設定を指定します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cloudformationの利点">CloudFormationの利点<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#cloudformation%E3%81%AE%E5%88%A9%E7%82%B9" class="hash-link" aria-label="CloudFormationの利点 への直接リンク" title="CloudFormationの利点 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="テンプレートによる管理の簡素化">テンプレートによる管理の簡素化<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AB%E3%82%88%E3%82%8B%E7%AE%A1%E7%90%86%E3%81%AE%E7%B0%A1%E7%B4%A0%E5%8C%96" class="hash-link" aria-label="テンプレートによる管理の簡素化 への直接リンク" title="テンプレートによる管理の簡素化 への直接リンク" translate="no">​</a></h3>
<p>CloudFormationの利点は、インフラの定義を単一のテンプレートに集約して管理を簡素化できる点です。テンプレートにはAWSリソースの構成が宣言的に記述されているため、現在のインフラの状態をテンプレートを確認するだけで把握できます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="複数リージョンへの複製">複数リージョンへの複製<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#%E8%A4%87%E6%95%B0%E3%83%AA%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%B8%E3%81%AE%E8%A4%87%E8%A3%BD" class="hash-link" aria-label="複数リージョンへの複製 への直接リンク" title="複数リージョンへの複製 への直接リンク" translate="no">​</a></h3>
<p>CloudFormationを使用すると、あるリージョンで稼働しているシステムを他のリージョンに複製することが可能です。CloudFormationを使用しない場合はリージョンごとに手動でインフラを構築する必要がありますが、CloudFormationではテンプレートを対象リージョンに対してデプロイするだけで、Lambda関数、DynamoDBテーブル、S3バケットなどの設定が丸ごと複製されます。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="テンプレート修正の一括反映">テンプレート修正の一括反映<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E4%BF%AE%E6%AD%A3%E3%81%AE%E4%B8%80%E6%8B%AC%E5%8F%8D%E6%98%A0" class="hash-link" aria-label="テンプレート修正の一括反映 への直接リンク" title="テンプレート修正の一括反映 への直接リンク" translate="no">​</a></h3>
<p>テンプレートは単一のファイルとして管理されるため、構成に修正が必要な場合はテンプレートを修正して各リージョンに再デプロイするだけで、全リージョンに修正を反映できます。手動で個別のリージョンを修正する必要はありません。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="sam-cliとの連携">SAM CLIとの連携<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#sam-cli%E3%81%A8%E3%81%AE%E9%80%A3%E6%90%BA" class="hash-link" aria-label="SAM CLIとの連携 への直接リンク" title="SAM CLIとの連携 への直接リンク" translate="no">​</a></h3>
<p>CloudFormationは<a href="https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html" target="_blank" rel="noopener noreferrer" class="">AWS SAM（Serverless Application Model）</a>と組み合わせて使用することで、サーバーレスアプリケーションの開発・デプロイをさらに効率化できます。SAM CLIを使用すると、<code>sam deploy</code>コマンドひとつで対象リージョンに対してCloudFormationテンプレートに基づいたデプロイが実行されます。</p>
<p>SAM CLIを使ったLambda関数の開発・デプロイについては、<a class="" href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e">SAM CLIでAWS Lambdaの開発とデプロイを効率化する</a>で詳しく解説しています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ビジネスにおけるcloudformationの活用">ビジネスにおけるCloudFormationの活用<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Bcloudformation%E3%81%AE%E6%B4%BB%E7%94%A8" class="hash-link" aria-label="ビジネスにおけるCloudFormationの活用 への直接リンク" title="ビジネスにおけるCloudFormationの活用 への直接リンク" translate="no">​</a></h2>
<p>CloudFormationによるインフラのコード管理は、ビジネスの国際展開においても有効です。新しいリージョンへの展開時に、既存環境と同一構成のインフラをテンプレートからデプロイするだけでセットアップが完了します。</p>
<p>テンプレートによるインフラ管理の自動化と人間の手動操作の排除により、システム構築の再現性が担保されます。これにより、運用チームはインフラの手動構築に時間を費やすことなく、より重要な業務に集中できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/iac-cloudformation-guide-b61f8b85#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、IaC（Infrastructure as Code）の概念とAWS CloudFormationの基本的な仕組み、利点について解説しました。CloudFormationを使用することで、インフラの定義をYAML/JSONテンプレートとして管理し、複数リージョンへの一貫性のあるデプロイ、テンプレート修正による一括反映、SAM CLIとの連携によるサーバーレス開発の効率化が可能になります。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html" target="_blank" rel="noopener noreferrer" class="">AWS CloudFormation公式ドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html" target="_blank" rel="noopener noreferrer" class="">AWS SAM（Serverless Application Model）</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/template-reference.html" target="_blank" rel="noopener noreferrer" class="">AWS CloudFormation テンプレートリファレンス</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="AWS CloudFormation" term="AWS CloudFormation"/>
        <category label="IaC" term="IaC"/>
        <category label="cloud" term="cloud"/>
        <category label="DevOps" term="DevOps"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[VPCのネットワークACLとセキュリティグループ - 2つの仮想ファイアウォールの違いと使い分け]]></title>
        <id>https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0</id>
        <link href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0"/>
        <updated>2026-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、Amazon VPCにおけるセキュリティの要となるネットワークACL（Access Control List）とセキュリティグループについて解説します。どちらもVPCの仮想ファイアウォールですが、動作レベルやステートの扱いが異なります。それぞれの特徴と使い分けを整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、Amazon VPCにおけるセキュリティの要となるネットワークACL（Access Control List）とセキュリティグループについて解説します。どちらもVPCの仮想ファイアウォールですが、動作レベルやステートの扱いが異なります。それぞれの特徴と使い分けを整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">VPCのセキュリティ構成を理解したい人</li>
<li class="">ネットワークACLとセキュリティグループの違いを整理したい人</li>
<li class="">AWSにおけるトラフィック制御の仕組みを学びたい人</li>
<li class="">VPCの仮想ファイアウォールの適切な使い分けを知りたい人</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>前提となる記事</div><div class="admonitionContent_BuS1"><p>この記事では、Amazon VPCの基本概念（サブネット、ゲートウェイなど）を理解していることを前提としています。</p><ul>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/amazon-vpc-guide-a9ffc381">Amazon VPCの基本 - サブネット・ゲートウェイ・接続方式を理解する</a></li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vpcにおける2つの仮想ファイアウォール">VPCにおける2つの仮想ファイアウォール<a href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0#vpc%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B2%E3%81%A4%E3%81%AE%E4%BB%AE%E6%83%B3%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB" class="hash-link" aria-label="VPCにおける2つの仮想ファイアウォール への直接リンク" title="VPCにおける2つの仮想ファイアウォール への直接リンク" translate="no">​</a></h2>
<p>VPCでは、トラフィックを制御するために<strong>ネットワークACL</strong>と<strong>セキュリティグループ</strong>の2つの仮想ファイアウォールが提供されています。この2つは動作するレベルとステートの扱いが異なり、組み合わせて使用することで多層的なセキュリティを実現します。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ネットワークacl">ネットワークACL<a href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AFacl" class="hash-link" aria-label="ネットワークACL への直接リンク" title="ネットワークACL への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html" target="_blank" rel="noopener noreferrer" class="">ネットワークACL</a>は、<strong>サブネットレベル</strong>でインバウンド（受信）とアウトバウンド（送信）のトラフィックを制御する仮想ファイアウォールです。ゲートウェイとサブネットの間で動作し、サブネットに出入りするすべてのトラフィックを検証します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ネットワークaclの特徴">ネットワークACLの特徴<a href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AFacl%E3%81%AE%E7%89%B9%E5%BE%B4" class="hash-link" aria-label="ネットワークACLの特徴 への直接リンク" title="ネットワークACLの特徴 への直接リンク" translate="no">​</a></h3>
<ul>
<li class=""><strong>ステートレス</strong>: インバウンドとアウトバウンドの双方向で、サブネットの境界でリストの検証が<strong>必ず</strong>行われる。インバウンドで許可されたトラフィックであっても、アウトバウンドで再度検証される</li>
<li class=""><strong>デフォルトの動作</strong>: デフォルトのネットワークACLはすべてのインバウンド・アウトバウンドトラフィックを許可する</li>
<li class=""><strong>ルールの評価順序</strong>: ルール番号の昇順で評価され、最初にマッチしたルールが適用される</li>
<li class=""><strong>カスタムルール</strong>: 独自のルールを明示的に設定することで、トラフィック制御が可能</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="セキュリティグループ">セキュリティグループ<a href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0#%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97" class="hash-link" aria-label="セキュリティグループ への直接リンク" title="セキュリティグループ への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-security-groups.html" target="_blank" rel="noopener noreferrer" class="">セキュリティグループ</a>は、<strong>リソースレベル</strong>（EC2インスタンス、RDS、Lambda等の個々のリソース）でトラフィックを制御する仮想ファイアウォールです。サブネット内の特定のリソースに対して、許可するトラフィックを定義します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="セキュリティグループの特徴">セキュリティグループの特徴<a href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0#%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E7%89%B9%E5%BE%B4" class="hash-link" aria-label="セキュリティグループの特徴 への直接リンク" title="セキュリティグループの特徴 への直接リンク" translate="no">​</a></h3>
<ul>
<li class=""><strong>ステートフル</strong>: インバウンドで許可されたトラフィックのレスポンスは、アウトバウンドルールに関係なく自動的に許可される。一度検証されたパケットは再検証されない</li>
<li class=""><strong>デフォルトの動作</strong>: すべてのインバウンドトラフィックを<strong>拒否</strong>し、すべてのアウトバウンドトラフィックを<strong>許可</strong>する</li>
<li class=""><strong>許可ルールのみ</strong>: セキュリティグループでは許可ルールのみ設定可能で、明示的な拒否ルールは設定できない</li>
<li class=""><strong>カスタムルール</strong>: アクセスを許可するトラフィックのソース、ポート、プロトコルを指定できる</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ネットワークaclとセキュリティグループの比較">ネットワークACLとセキュリティグループの比較<a href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AFacl%E3%81%A8%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E6%AF%94%E8%BC%83" class="hash-link" aria-label="ネットワークACLとセキュリティグループの比較 への直接リンク" title="ネットワークACLとセキュリティグループの比較 への直接リンク" translate="no">​</a></h2>
<table><thead><tr><th>項目</th><th>ネットワークACL</th><th>セキュリティグループ</th></tr></thead><tbody><tr><td><strong>動作レベル</strong></td><td>サブネットレベル</td><td>リソースレベル</td></tr><tr><td><strong>ステート</strong></td><td>ステートレス（双方向で検証）</td><td>ステートフル（検証済みは再検証不要）</td></tr><tr><td><strong>デフォルト動作</strong></td><td>全トラフィック許可</td><td>インバウンド全拒否 / アウトバウンド全許可</td></tr><tr><td><strong>ルールの種類</strong></td><td>許可と拒否の両方</td><td>許可のみ</td></tr><tr><td><strong>評価方法</strong></td><td>ルール番号順に評価</td><td>すべてのルールを評価</td></tr><tr><td><strong>適用対象</strong></td><td>サブネット内のすべてのリソース</td><td>関連付けられた特定のリソース</td></tr></tbody></table>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="使い分けの指針">使い分けの指針<a href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0#%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%81%AE%E6%8C%87%E9%87%9D" class="hash-link" aria-label="使い分けの指針 への直接リンク" title="使い分けの指針 への直接リンク" translate="no">​</a></h2>
<ul>
<li class=""><strong>サブネットレベル</strong>でのアクセス制御が必要な場合はネットワークACLを使用する。例えば、特定のIPアドレス範囲からのアクセスをサブネット単位で一括して拒否する場合に有効</li>
<li class=""><strong>個々のリソースレベル</strong>でアクセス制御が必要な場合はセキュリティグループを使用する。例えば、特定のEC2インスタンスに対して特定のポートのみアクセスを許可する場合に有効</li>
<li class="">多層防御の観点から、ネットワークACLとセキュリティグループの両方を適切に設定することが推奨される</li>
</ul>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>責任共有モデルにおける注意点</div><div class="admonitionContent_BuS1"><p>AWSの<a href="https://aws.amazon.com/jp/compliance/shared-responsibility-model/" target="_blank" rel="noopener noreferrer" class="">責任共有モデル</a>において、EC2などのアンマネージドサービスにおけるネットワークACLとセキュリティグループの設定・管理はユーザー側の責任です。適切なトラフィック制御の設定は、セキュリティ確保のために不可欠です。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/vpc-network-acl-security-groups-26ea61a0#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、VPCにおける2つの仮想ファイアウォールであるネットワークACLとセキュリティグループについて解説しました。ネットワークACLはサブネットレベルでステートレスに動作し、セキュリティグループはリソースレベルでステートフルに動作します。サブネット単位での一括制御にはネットワークACL、個々のリソースに対するきめ細かい制御にはセキュリティグループを使用し、両者を組み合わせた多層防御でVPCのセキュリティを確保できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html" target="_blank" rel="noopener noreferrer" class="">ネットワークACL公式ドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-security-groups.html" target="_blank" rel="noopener noreferrer" class="">セキュリティグループ公式ドキュメント</a></li>
<li class=""><a href="https://aws.amazon.com/jp/compliance/shared-responsibility-model/" target="_blank" rel="noopener noreferrer" class="">AWS責任共有モデル</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="Amazon VPC" term="Amazon VPC"/>
        <category label="network" term="network"/>
        <category label="security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DocusaurusでGoogle Analyticsを導入する - plugin-google-gtagの設定手順]]></title>
        <id>https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769</id>
        <link href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769"/>
        <updated>2026-03-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、DocusaurusにGoogle Analytics（GA4）を導入する方法について解説します。Docusaurus公式プラグインのplugin-google-gtagを使用した設定手順を紹介します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、DocusaurusにGoogle Analytics（GA4）を導入する方法について解説します。Docusaurus公式プラグインの<code>plugin-google-gtag</code>を使用した設定手順を紹介します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">Docusaurusで構築したサイトにアクセス解析を導入したい人</li>
<li class="">Google Analytics（GA4）をDocusaurusに設定したい人</li>
<li class="">plugin-google-gtagの設定方法を知りたい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="google-analyticsga4とは">Google Analytics（GA4）とは<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#google-analyticsga4%E3%81%A8%E3%81%AF" class="hash-link" aria-label="Google Analytics（GA4）とは への直接リンク" title="Google Analytics（GA4）とは への直接リンク" translate="no">​</a></h2>
<p><a href="https://analytics.google.com/" target="_blank" rel="noopener noreferrer" class="">Google Analytics</a>は、Googleが提供するWebサイトのアクセス解析サービスです。ユーザーの行動分析、トラフィックの把握、コンバージョンの追跡など幅広い分析機能を備えています。GA4（Google Analytics 4）は現行バージョンの名称で、Googleタグ（gtag）を使用してデータを収集します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="docusaurusでの導入手順">Docusaurusでの導入手順<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#docusaurus%E3%81%A7%E3%81%AE%E5%B0%8E%E5%85%A5%E6%89%8B%E9%A0%86" class="hash-link" aria-label="Docusaurusでの導入手順 への直接リンク" title="Docusaurusでの導入手順 への直接リンク" translate="no">​</a></h2>
<p>DocusaurusでGoogle Analyticsを導入するには、公式プラグインの<a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-google-gtag" target="_blank" rel="noopener noreferrer" class="">@docusaurus/plugin-google-gtag</a>を使用します。</p>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>旧プラグインについて</div><div class="admonitionContent_BuS1"><p>以前は<a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-google-analytics" target="_blank" rel="noopener noreferrer" class="">@docusaurus/plugin-google-analytics</a>が使用されていましたが、現在は非推奨で機能しません。新規導入では<code>plugin-google-gtag</code>を使用します。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="前提条件">前提条件<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6" class="hash-link" aria-label="前提条件 への直接リンク" title="前提条件 への直接リンク" translate="no">​</a></h3>
<ul>
<li class="">Docusaurusプロジェクトがセットアップ済みであること</li>
<li class="">GA4の管理画面でGoogleタグ（トラッキングID）を取得済みであること</li>
</ul>
<p>GA4の管理画面では「測定ID」または「Googleタグ」として表示されます。<code>G-</code>から始まる文字列がトラッキングIDです。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="プラグインのインストール">プラグインのインストール<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" class="hash-link" aria-label="プラグインのインストール への直接リンク" title="プラグインのインストール への直接リンク" translate="no">​</a></h3>
<p><code>@docusaurus/preset-classic</code>を使用している場合、<code>plugin-google-gtag</code>は既にプリセットに含まれているため追加のインストールは不要です。</p>
<p>プリセットを使用していない場合は、以下のコマンドでインストールします。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">npm</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--save</span><span class="token plain"> @docusaurus/plugin-google-gtag</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="設定の追加">設定の追加<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#%E8%A8%AD%E5%AE%9A%E3%81%AE%E8%BF%BD%E5%8A%A0" class="hash-link" aria-label="設定の追加 への直接リンク" title="設定の追加 への直接リンク" translate="no">​</a></h3>
<p>プロジェクト直下の<code>docusaurus.config.ts</code>に設定を追加します。<code>@docusaurus/preset-classic</code>を使用しているかどうかで設定方法が異なります。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preset-classicを使用している場合">preset-classicを使用している場合<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#preset-classic%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88" class="hash-link" aria-label="preset-classicを使用している場合 への直接リンク" title="preset-classicを使用している場合 への直接リンク" translate="no">​</a></h4>
<div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">docusaurus.config.ts</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword module" style="color:rgb(189, 147, 249);font-style:italic">export</span><span class="token plain"> </span><span class="token keyword module" style="color:rgb(189, 147, 249);font-style:italic">default</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  presets</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token string" style="color:rgb(255, 121, 198)">'@docusaurus/preset-classic'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        gtag</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          trackingID</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'G-XXXXXXXXXX'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          anonymizeIP</span><span class="token operator">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="プラグインとして追加する場合">プラグインとして追加する場合<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A8%E3%81%97%E3%81%A6%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88" class="hash-link" aria-label="プラグインとして追加する場合 への直接リンク" title="プラグインとして追加する場合 への直接リンク" translate="no">​</a></h4>
<div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">docusaurus.config.ts</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword module" style="color:rgb(189, 147, 249);font-style:italic">export</span><span class="token plain"> </span><span class="token keyword module" style="color:rgb(189, 147, 249);font-style:italic">default</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  plugins</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token string" style="color:rgb(255, 121, 198)">'@docusaurus/plugin-google-gtag'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        trackingID</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'G-XXXXXXXXXX'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        anonymizeIP</span><span class="token operator">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="設定オプション">設定オプション<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#%E8%A8%AD%E5%AE%9A%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3" class="hash-link" aria-label="設定オプション への直接リンク" title="設定オプション への直接リンク" translate="no">​</a></h3>
<table><thead><tr><th>オプション</th><th>型</th><th>デフォルト</th><th>説明</th></tr></thead><tbody><tr><td><code>trackingID</code></td><td><code>string | string[]</code></td><td>必須</td><td>GA4のトラッキングID。複数指定する場合は配列で指定</td></tr><tr><td><code>anonymizeIP</code></td><td><code>boolean</code></td><td><code>false</code></td><td><code>true</code>にするとリクエスト送信時にIPアドレスを匿名化</td></tr></tbody></table>
<p><code>trackingID</code>は複数指定が可能です。複数のプロパティでデータを収集する場合に使用します。</p>
<div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">docusaurus.config.ts（複数ID指定の例）</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">gtag</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  trackingID</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">'G-XXXXXXXXXX'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'G-YYYYYYYYYY'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  anonymizeIP</span><span class="token operator">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><br></span></code></pre></div></div>
<p><code>anonymizeIP</code>は、ユーザーのプライバシー保護の観点から<code>true</code>に設定しておくことが推奨されます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作確認">動作確認<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D" class="hash-link" aria-label="動作確認 への直接リンク" title="動作確認 への直接リンク" translate="no">​</a></h2>
<p>設定後、開発サーバーを起動してブラウザの開発者ツールで動作を確認できます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">npm</span><span class="token plain"> run start</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>開発環境での注意</div><div class="admonitionContent_BuS1"><p><code>plugin-google-gtag</code>は、デフォルトでは本番ビルド（<code>npm run build</code>）でのみGoogleタグのスクリプトを挿入します。開発サーバー（<code>npm run start</code>）ではスクリプトが挿入されないため、本番環境にデプロイ後にGA4の管理画面でデータ収集を確認します。</p></div></div>
<p>本番ビルドで確認する場合は、以下のコマンドでビルドとローカルサーバーの起動を行います。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">npm</span><span class="token plain"> run build </span><span class="token operator">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">npm</span><span class="token plain"> run serve</span><br></span></code></pre></div></div>
<p>ブラウザの開発者ツールのネットワークタブで、<code>gtag</code>や<code>google-analytics.com</code>へのリクエストが送信されていれば正常に動作しています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/docusaurus-google-analytics-setup-eccd8769#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、DocusaurusにGoogle Analytics（GA4）を導入する方法について解説しました。<code>@docusaurus/preset-classic</code>を使用している場合は追加インストール不要で、<code>docusaurus.config.ts</code>にトラッキングIDを設定するだけでアクセス解析を開始できます。旧プラグインの<code>plugin-google-analytics</code>は非推奨のため、新規導入では<code>plugin-google-gtag</code>を使用します。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://analytics.google.com/" target="_blank" rel="noopener noreferrer" class="">Google Analytics</a></li>
<li class=""><a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-google-gtag" target="_blank" rel="noopener noreferrer" class="">@docusaurus/plugin-google-gtag 公式ドキュメント</a></li>
<li class=""><a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-google-analytics" target="_blank" rel="noopener noreferrer" class="">@docusaurus/plugin-google-analytics（非推奨）</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="Docusaurus" term="Docusaurus"/>
        <category label="Google Analytics" term="Google Analytics"/>
        <category label="web" term="web"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SAM CLIでAWS Lambdaの開発とデプロイを効率化する - CloudFormationテンプレートによるサーバーレス開発]]></title>
        <id>https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e</id>
        <link href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e"/>
        <updated>2026-03-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWS SAM CLIを使用してCloudFormationテンプレートをベースにLambda関数の開発とデプロイを行う方法について解説します。SAM CLIのインストールからプロジェクトの作成、ビルド、デプロイまでの一連の流れを紹介します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWS SAM CLIを使用してCloudFormationテンプレートをベースにLambda関数の開発とデプロイを行う方法について解説します。SAM CLIのインストールからプロジェクトの作成、ビルド、デプロイまでの一連の流れを紹介します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">AWS Lambdaのデプロイを自動化したい人</li>
<li class="">SAM（Serverless Application Model）の使い方を知りたい人</li>
<li class="">CloudFormationテンプレートでインフラを管理したい人</li>
<li class="">サーバーレスアプリケーションの開発フローを効率化したい人</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>前提となる記事</div><div class="admonitionContent_BuS1"><p>この記事では、HomebrewとAWS CLIがインストール済みで、IAMプロファイルが設定済みであることを前提としています。</p><ul>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/homebrew-getting-started-guide-2bd00523">Homebrewの導入と基本操作 - macOSのパッケージ管理を効率化する</a></li>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/aws-cli-install-homebrew-bba87303">HomebrewでAWS CLIをインストールする - AWSサービスをコマンドラインから操作する</a></li>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33">AWS CLIでIAMユーザーのプロファイルを設定する - 認証情報の管理と操作方法</a></li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="aws-lambdaとは">AWS Lambdaとは<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#aws-lambda%E3%81%A8%E3%81%AF" class="hash-link" aria-label="AWS Lambdaとは への直接リンク" title="AWS Lambdaとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://aws.amazon.com/jp/lambda/" target="_blank" rel="noopener noreferrer" class="">AWS Lambda</a>は、AWSが提供するサーバーレスコンピューティングサービスです。Amazon EC2とは異なり、インスタンスなどの実行基盤を自分で用意・管理する必要がなく、プログラムを作成してデプロイすればいつでも実行可能な状態になります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="samserverless-application-modelとは">SAM（Serverless Application Model）とは<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#samserverless-application-model%E3%81%A8%E3%81%AF" class="hash-link" aria-label="SAM（Serverless Application Model）とは への直接リンク" title="SAM（Serverless Application Model）とは への直接リンク" translate="no">​</a></h2>
<p><a href="https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html" target="_blank" rel="noopener noreferrer" class="">AWS SAM</a>は、AWSが公式に提供するサーバーレスアプリケーションの構築フレームワークです。<a href="https://aws.amazon.com/jp/cloudformation/" target="_blank" rel="noopener noreferrer" class="">AWS CloudFormation</a>を基盤としており、YAMLテンプレートでLambda関数やAPI Gatewayなどのリソースを定義し、デプロイを自動化できます。</p>
<p>同様の仕組みとして<a href="https://www.serverless.com/" target="_blank" rel="noopener noreferrer" class="">Serverless Framework</a>などがありますが、SAMはAWS公式の仕組みであり、IAMをベースにAWSの各種サービスとシームレスに統合できる点が特徴です。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="sam-cliの役割">SAM CLIの役割<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#sam-cli%E3%81%AE%E5%BD%B9%E5%89%B2" class="hash-link" aria-label="SAM CLIの役割 への直接リンク" title="SAM CLIの役割 への直接リンク" translate="no">​</a></h3>
<p><a href="https://github.com/aws/aws-sam-cli" target="_blank" rel="noopener noreferrer" class="">SAM CLI</a>は、SAMの仕組みをローカル環境で使用するためのオープンソースのコマンドラインツールです。プロジェクトの初期化、ビルド、ローカルテスト、デプロイなどの操作を提供します。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sam-cliのインストール">SAM CLIのインストール<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#sam-cli%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" class="hash-link" aria-label="SAM CLIのインストール への直接リンク" title="SAM CLIのインストール への直接リンク" translate="no">​</a></h2>
<p>SAM CLIは<a href="https://formulae.brew.sh/formula/aws-sam-cli" target="_blank" rel="noopener noreferrer" class="">Homebrew</a>経由でインストールできます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">brew </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> aws-sam-cli</span><br></span></code></pre></div></div>
<p>インストール後、以下のコマンドでバージョンを確認します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">sam </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><br></span></code></pre></div></div>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">SAM CLI, version 1.154.0</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プロジェクトの作成">プロジェクトの作成<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90" class="hash-link" aria-label="プロジェクトの作成 への直接リンク" title="プロジェクトの作成 への直接リンク" translate="no">​</a></h2>
<p><code>sam init</code>コマンドで対話形式のプロンプトが開始され、CloudFormationテンプレートとSAMの設定ファイルが生成されます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">sam init</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>テンプレートの直接作成</div><div class="admonitionContent_BuS1"><p>SAMを使用した実装に慣れたら対象プロジェクトに<code>samconfig.toml</code>と<code>template.yaml</code>を直接作成することも可能です。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="対話形式の手順">対話形式の手順<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E5%AF%BE%E8%A9%B1%E5%BD%A2%E5%BC%8F%E3%81%AE%E6%89%8B%E9%A0%86" class="hash-link" aria-label="対話形式の手順 への直接リンク" title="対話形式の手順 への直接リンク" translate="no">​</a></h3>
<p>以下の手順でHello World Exampleのプロジェクトを作成します。</p>
<p><strong>1. テンプレートソースの選択</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Which template source would you like to use?</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        1 - AWS Quick Start Templates</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        2 - Custom Template Location</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Choice: 1</span><br></span></code></pre></div></div>
<p><strong>2. アプリケーションテンプレートの選択</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Choose an AWS Quick Start application template</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        1 - Hello World Example</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        2 - Data processing</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        3 - Hello World Example with Powertools for AWS Lambda</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        4 - Multi-step workflow</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        5 - Scheduled task</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        6 - Standalone function</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        7 - Serverless API</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        8 - Infrastructure event management</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        9 - Lambda Response Streaming</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        10 - GraphQLApi Hello World Example</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        11 - Full Stack</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        12 - Durable Functions</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        13 - Lambda EFS example</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        14 - Serverless Connector Hello World Example</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        15 - Multi-step workflow with Connectors</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        16 - Hello World Durable Function Example</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        17 - DynamoDB Example</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        18 - Machine Learning</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Template: 1</span><br></span></code></pre></div></div>
<p><strong>3. ランタイムの選択</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Use the most popular runtime and package type? (python3.14 and zip) [y/N]: y</span><br></span></code></pre></div></div>
<p><strong>4. X-Rayトレーシングの設定</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Would you like to enable X-Ray tracing on the function(s) in your application?  [y/N]: N</span><br></span></code></pre></div></div>
<p><strong>5. CloudWatch Application Insightsの設定</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Would you like to enable monitoring using CloudWatch Application Insights?</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]: N</span><br></span></code></pre></div></div>
<p><strong>6. ログ形式の設定</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Would you like to set Structured Logging in JSON format on your Lambda functions?  [y/N]: y</span><br></span></code></pre></div></div>
<p><strong>7. プロジェクト名の設定</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Project name [sam-app]: sam-app</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プロジェクト構造">プロジェクト構造<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%A7%8B%E9%80%A0" class="hash-link" aria-label="プロジェクト構造 への直接リンク" title="プロジェクト構造 への直接リンク" translate="no">​</a></h2>
<p><code>sam init</code>が完了すると、以下の構造のプロジェクトが生成されます。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">sam-app/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── README.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── __init__.py</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── events/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│   └── event.json</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── hello_world/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│   ├── __init__.py</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│   ├── app.py</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│   └── requirements.txt</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── samconfig.toml</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── template.yaml</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└── tests/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ├── __init__.py</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ├── integration/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │   ├── __init__.py</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │   └── test_api_gateway.py</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ├── requirements.txt</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    └── unit/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        ├── __init__.py</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        └── test_handler.py</span><br></span></code></pre></div></div>
<p>SAMを利用するうえで重要なファイルは以下の3つです。</p>
<table><thead><tr><th>ファイル</th><th>役割</th></tr></thead><tbody><tr><td><code>samconfig.toml</code></td><td>SAMの動作に必要な設定（スタック名、リージョンなど）</td></tr><tr><td><code>template.yaml</code></td><td>CloudFormationテンプレート（インフラ構成の定義）</td></tr><tr><td><code>hello_world/app.py</code></td><td>Lambda関数の実装コード</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="主要ファイルの解説">主要ファイルの解説<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E4%B8%BB%E8%A6%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E8%A7%A3%E8%AA%AC" class="hash-link" aria-label="主要ファイルの解説 への直接リンク" title="主要ファイルの解説 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="samconfigtoml">samconfig.toml<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#samconfigtoml" class="hash-link" aria-label="samconfig.toml への直接リンク" title="samconfig.toml への直接リンク" translate="no">​</a></h3>
<p>SAMの動作に必要な設定を定義するファイルです。<code>stack_name</code>はCloudFormationに登録されるスタック名になります。デプロイ先のリージョンを指定する場合は、<code>[default.deploy.parameters]</code>に<code>region = "ap-northeast-1"</code>などを追加します。</p>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">samconfig.toml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">version = 0.1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default.global.parameters]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">stack_name = "sam-app"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default.build.parameters]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">cached = true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">parallel = true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default.validate.parameters]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">lint = true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default.deploy.parameters]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">capabilities = "CAPABILITY_IAM"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">confirm_changeset = true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">resolve_s3 = true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default.package.parameters]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">resolve_s3 = true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default.sync.parameters]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">watch = true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default.local_start_api.parameters]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">warm_containers = "EAGER"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default.local_start_lambda.parameters]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">warm_containers = "EAGER"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="templateyaml">template.yaml<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#templateyaml" class="hash-link" aria-label="template.yaml への直接リンク" title="template.yaml への直接リンク" translate="no">​</a></h3>
<p>CloudFormationテンプレートで、デプロイ時に作成されるAWSリソースを定義します。</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">template.yaml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">AWSTemplateFormatVersion</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'2010-09-09'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">Transform</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> AWS</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">Serverless</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token datetime number">2016-10-31</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">Description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token scalar string" style="color:rgb(255, 121, 198)"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)">  sam-app</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  Sample SAM Template for sam</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">app</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">Globals</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">Function</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Timeout</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token number">3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">LoggingConfig</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">LogFormat</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> JSON</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">Resources</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">HelloWorldFunction</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> AWS</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">Serverless</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">Function</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Properties</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">CodeUri</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> hello_world/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">Handler</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> app.lambda_handler</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">Runtime</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> python3.14</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">Architectures</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> x86_64</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">Events</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">HelloWorld</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">Type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Api</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">Properties</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token key atrule">Path</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /hello</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token key atrule">Method</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> get</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">Outputs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">HelloWorldApi</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> API Gateway endpoint URL for Prod stage for Hello World function</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Value</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token tag" style="color:rgb(255, 121, 198)">!Sub</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"https://${ServerlessRestApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/Prod/hello/"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">HelloWorldFunction</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Hello World Lambda Function ARN</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Value</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token tag" style="color:rgb(255, 121, 198)">!GetAtt</span><span class="token plain"> HelloWorldFunction.Arn</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">HelloWorldFunctionIamRole</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Implicit IAM Role created for Hello World function</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">Value</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token tag" style="color:rgb(255, 121, 198)">!GetAtt</span><span class="token plain"> HelloWorldFunctionRole.Arn</span><br></span></code></pre></div></div>
<p>テンプレートの主要なポイントは以下の通りです。</p>
<ul>
<li class=""><strong>Resources</strong>: Lambda関数の定義。<code>CodeUri</code>で関数のソースコードの場所、<code>Handler</code>でエントリポイント（<code>app.py</code>の<code>lambda_handler</code>関数）を指定</li>
<li class=""><strong>Architectures</strong>: CPUアーキテクチャの指定。<code>x86_64</code>または<code>arm64</code>を選択可能</li>
<li class=""><strong>Events</strong>: API Gatewayのエンドポイント定義。クイックスタートテンプレートではデフォルトで含まれる</li>
<li class=""><strong>Outputs</strong>: デプロイ後に出力される情報（APIエンドポイントURL、Lambda関数のARNなど）</li>
</ul>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>AWS Gravitonプロセッサ</div><div class="admonitionContent_BuS1"><p>AWSは独自のARMベースプロセッサ<a href="https://aws.amazon.com/jp/ec2/graviton/" target="_blank" rel="noopener noreferrer" class="">Graviton</a>を開発しています。<code>Architectures</code>に<code>arm64</code>を指定することで、Lambda関数でGravitonプロセッサを使用できます。x86_64と比較して実行効率が良く、<a href="https://aws.amazon.com/jp/lambda/pricing/" target="_blank" rel="noopener noreferrer" class="">料金も最大20%低く</a>なります。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="apppy">app.py<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#apppy" class="hash-link" aria-label="app.py への直接リンク" title="app.py への直接リンク" translate="no">​</a></h3>
<p>Lambda関数の実装コードです。クイックスタートテンプレートでは、HTTPリクエストを受けてステータス200で<code>hello world</code>を返す関数が生成されます。</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">hello_world/app.py</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> json</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">lambda_handler</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">event</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">return</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"statusCode"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token number">200</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"body"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> json</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">dumps</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token string" style="color:rgb(255, 121, 198)">"message"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"hello world"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre></div></div>
<p><code>event</code>パラメータにはAPI Gatewayから転送されたリクエスト情報が、<code>context</code>パラメータにはLambdaの実行環境に関する情報が渡されます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ビルドとデプロイ">ビルドとデプロイ<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E3%83%93%E3%83%AB%E3%83%89%E3%81%A8%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4" class="hash-link" aria-label="ビルドとデプロイ への直接リンク" title="ビルドとデプロイ への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ビルド">ビルド<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E3%83%93%E3%83%AB%E3%83%89" class="hash-link" aria-label="ビルド への直接リンク" title="ビルド への直接リンク" translate="no">​</a></h3>
<p><code>sam build</code>コマンドでプロジェクトをビルドします。依存ライブラリのインストールとコードのパッケージングが行われます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">sam build</span><br></span></code></pre></div></div>
<p>ビルドが成功すると以下のような出力が表示されます。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Starting Build use cache</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Building codeuri: /hello_world runtime: python3.14 architecture: x86_64</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> functions: HelloWorldFunction</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> Running PythonPipBuilder:CopySource</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Build Succeeded</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Built Artifacts  : .aws-sam/build</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Built Template   : .aws-sam/build/template.yaml</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="デプロイ">デプロイ<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4" class="hash-link" aria-label="デプロイ への直接リンク" title="デプロイ への直接リンク" translate="no">​</a></h3>
<p><code>sam deploy</code>コマンドでAWSにデプロイします。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">sam deploy</span><br></span></code></pre></div></div>
<p>デプロイ時に作成・変更されるリソースの一覧（Changeset）が表示されます。内容を確認し、<code>y</code>を入力するとデプロイが開始されます。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">CloudFormation stack changeset</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-------------------------------------------------------------</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Operation       LogicalResourceId          ResourceType</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-------------------------------------------------------------</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">+ Add           HelloWorldFunction         AWS::Lambda::Function</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">+ Add           HelloWorldFunctionRole     AWS::IAM::Role</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">+ Add           ServerlessRestApi          AWS::ApiGateway::RestApi</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">+ Add           ServerlessRestApiProdStage AWS::ApiGateway::Stage</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-------------------------------------------------------------</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Deploy this changeset? [y/N]: y</span><br></span></code></pre></div></div>
<p>デプロイが完了すると、<code>Outputs</code>に定義した情報（APIエンドポイントURLなど）が表示されます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="スタックの削除">スタックの削除<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%81%AE%E5%89%8A%E9%99%A4" class="hash-link" aria-label="スタックの削除 への直接リンク" title="スタックの削除 への直接リンク" translate="no">​</a></h2>
<p>不要になったCloudFormationスタックは、AWS CLIで削除できます。スタックに関連するすべてのリソース（Lambda関数、API Gateway、IAMロールなど）が削除されます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws cloudformation delete-stack --stack-name sam-app</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>スタック削除時の注意</div><div class="admonitionContent_BuS1"><p>スタックを削除すると、関連するすべてのAWSリソースが削除されます。本番環境のスタックを削除する場合は、影響範囲を十分に確認してから実行します。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/aws-sam-cli-lambda-deployment-guide-3182660e#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、SAM CLIを使用してAWS Lambda関数の開発とデプロイを行う方法について解説しました。SAMはCloudFormationを基盤としたAWS公式のフレームワークで、<code>sam init</code>でプロジェクトの雛形を作成し、<code>sam build</code>でビルド、<code>sam deploy</code>でデプロイという一連のワークフローを提供します。<code>template.yaml</code>でインフラ構成をコードとして管理できるため、手動デプロイと比較してヒューマンエラーの削減と再現性の向上が期待できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://aws.amazon.com/jp/lambda/" target="_blank" rel="noopener noreferrer" class="">AWS Lambda</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html" target="_blank" rel="noopener noreferrer" class="">AWS SAM 公式ドキュメント</a></li>
<li class=""><a href="https://github.com/aws/aws-sam-cli" target="_blank" rel="noopener noreferrer" class="">SAM CLI GitHub リポジトリ</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/install-sam-cli.html" target="_blank" rel="noopener noreferrer" class="">SAM CLI インストールガイド</a></li>
<li class=""><a href="https://aws.amazon.com/jp/cloudformation/" target="_blank" rel="noopener noreferrer" class="">AWS CloudFormation</a></li>
<li class=""><a href="https://aws.amazon.com/jp/ec2/graviton/" target="_blank" rel="noopener noreferrer" class="">AWS Graviton プロセッサ</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="AWS Lambda" term="AWS Lambda"/>
        <category label="AWS CloudFormation" term="AWS CloudFormation"/>
        <category label="AWS SAM" term="AWS SAM"/>
        <category label="CLI" term="CLI"/>
        <category label="Python" term="Python"/>
        <category label="Homebrew" term="Homebrew"/>
        <category label="DevOps" term="DevOps"/>
        <category label="cloud" term="cloud"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mermaidでテキストベースのダイアグラム図を作成する - コードで描く効率的な図の作成方法]]></title>
        <id>https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932</id>
        <link href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932"/>
        <updated>2026-03-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、テキストベースでダイアグラム図を作成できるライブラリ「Mermaid」について解説します。ExcelやWordでの図作成と比較しながら、Mermaidの基本的な使い方と対応する図の種類を紹介します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、テキストベースでダイアグラム図を作成できるライブラリ「Mermaid」について解説します。ExcelやWordでの図作成と比較しながら、Mermaidの基本的な使い方と対応する図の種類を紹介します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">フローチャートやシーケンス図をテキストベースで作成したい人</li>
<li class="">ExcelやWordでの図の作成・管理に非効率さを感じている人</li>
<li class="">マークダウンに図を統合して管理したい人</li>
<li class="">LLMなどのAI技術と親和性の高い図の作成方法を探している人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="従来の図作成の課題">従来の図作成の課題<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#%E5%BE%93%E6%9D%A5%E3%81%AE%E5%9B%B3%E4%BD%9C%E6%88%90%E3%81%AE%E8%AA%B2%E9%A1%8C" class="hash-link" aria-label="従来の図作成の課題 への直接リンク" title="従来の図作成の課題 への直接リンク" translate="no">​</a></h2>
<p>フローチャートやアーキテクチャ図の作成には、ExcelやWordなどのOfficeアプリケーション、または専用のダイアグラムツールが使われることが多いです。しかし、これらのアプリケーションでの図作成にはいくつかの課題があります。</p>
<ul>
<li class=""><strong>作成・更新に時間がかかる</strong>: 図形を一つずつ配置し、矢印で接続する作業が必要</li>
<li class=""><strong>保守性が低い</strong>: フローを追加する際に全体の配置を手動で調整する必要がある</li>
<li class=""><strong>テキストベースでない</strong>: Gitでの差分管理が困難で、LLMなどのテキストを扱う技術との親和性が低い</li>
</ul>
<table><thead><tr><th>項目</th><th>ExcelやWord</th><th>Mermaid</th></tr></thead><tbody><tr><td><strong>作成方法</strong></td><td>図形をGUIで配置</td><td>テキスト（コード）で記述</td></tr><tr><td><strong>フローの追加</strong></td><td>全体の再配置が必要</td><td>1〜数行のテキスト追加</td></tr><tr><td><strong>バージョン管理</strong></td><td>バイナリファイルのため差分管理が困難</td><td>テキストのためGitで差分管理が可能</td></tr><tr><td><strong>LLMとの親和性</strong></td><td>低い（バイナリ形式）</td><td>高い（テキスト形式）</td></tr><tr><td><strong>レイアウト</strong></td><td>手動で調整</td><td>自動レイアウト</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="mermaidとは">Mermaidとは<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#mermaid%E3%81%A8%E3%81%AF" class="hash-link" aria-label="Mermaidとは への直接リンク" title="Mermaidとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://mermaid.js.org/" target="_blank" rel="noopener noreferrer" class="">Mermaid</a>は、JavaScriptベースのオープンソースライブラリで、テキスト（コード）からダイアグラム図を動的に生成します。マークダウンに統合できるため、ドキュメントと図を一元管理することが可能です。</p>
<p><a href="https://osawards.com/javascript/2019" target="_blank" rel="noopener noreferrer" class="">JavaScript Open Source Awards 2019</a>では「The Most Exciting Use of Technology」として表彰されています。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mermaidの主な特徴">Mermaidの主な特徴<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#mermaid%E3%81%AE%E4%B8%BB%E3%81%AA%E7%89%B9%E5%BE%B4" class="hash-link" aria-label="Mermaidの主な特徴 への直接リンク" title="Mermaidの主な特徴 への直接リンク" translate="no">​</a></h3>
<ul>
<li class=""><strong>テキストベース</strong>: コードで図を記述するため、Gitでのバージョン管理が可能</li>
<li class=""><strong>自動レイアウト</strong>: ノードの配置やフローの描画を自動で処理</li>
<li class=""><strong>多様な図に対応</strong>: フローチャート、シーケンス図、クラス図など多くの図をサポート</li>
<li class=""><strong>幅広い統合</strong>: GitHub、GitLab、VSCode、Docusaurusなど多くのプラットフォームで利用可能</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="mermaidの基本的な使い方">Mermaidの基本的な使い方<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#mermaid%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E4%BD%BF%E3%81%84%E6%96%B9" class="hash-link" aria-label="Mermaidの基本的な使い方 への直接リンク" title="Mermaidの基本的な使い方 への直接リンク" translate="no">​</a></h2>
<p>Mermaidでは、マークダウンのコードブロック内に<code>mermaid</code>を指定して図を記述します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="フローチャート">フローチャート<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#%E3%83%95%E3%83%AD%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88" class="hash-link" aria-label="フローチャート への直接リンク" title="フローチャート への直接リンク" translate="no">​</a></h3>
<p>フローチャートは、処理の流れや分岐を表現する図です。<code>flowchart</code>キーワードで定義し、<code>TD</code>（上から下）や<code>LR</code>（左から右）で方向を指定します。</p>
<p>以下は<a href="https://mermaid.js.org/" target="_blank" rel="noopener noreferrer" class="">Mermaid公式サイト</a>で紹介されているコード例です。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">```mermaid</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">flowchart TD</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    A[Christmas] --&gt;|Get money| B(Go shopping)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    B --&gt; C{Let me think}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    C --&gt;|One| D[Laptop]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    C --&gt;|Two| E[iPhone]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    C --&gt;|Three| F[fa:fa-car Car]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```</span><br></span></code></pre></div></div>
<p>このコードをMermaidで描画すると、次のようなフローチャートが生成されます。</p>
<!-- -->
<p>構文は直感的で、<code>A[テキスト]</code>でノードを定義し、<code>--&gt;</code>で矢印を描画、<code>|ラベル|</code>でラベルを付与します。<code>[]</code>は四角形、<code>()</code>は角丸、<code>{}</code>はひし形（分岐）を表します。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="フローの追加と削除">フローの追加と削除<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%81%A8%E5%89%8A%E9%99%A4" class="hash-link" aria-label="フローの追加と削除 への直接リンク" title="フローの追加と削除 への直接リンク" translate="no">​</a></h4>
<p>4番目の選択肢として「Sweet」を追加する場合、1行追加するだけで対応できます。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">```mermaid</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">flowchart TD</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    A[Christmas] --&gt;|Get money| B(Go shopping)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    B --&gt; C{Let me think}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    C --&gt;|One| D[Laptop]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    C --&gt;|Two| E[iPhone]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    C --&gt;|Three| F[fa:fa-car Car]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    C --&gt;|Four| G[Sweet]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">```</span><br></span></code></pre></div></div>
<!-- -->
<p>レイアウトはMermaidが自動で調整するため、ノードの位置を手動で変更する必要はありません。不要なフローを削除する場合も、該当する行を削除するだけです。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="シーケンス図">シーケンス図<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E5%9B%B3" class="hash-link" aria-label="シーケンス図 への直接リンク" title="シーケンス図 への直接リンク" translate="no">​</a></h3>
<p>シーケンス図は、システム間のメッセージのやり取りを時系列で表現する図です。API通信や認証フローの可視化に適しています。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="クラス図">クラス図<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#%E3%82%AF%E3%83%A9%E3%82%B9%E5%9B%B3" class="hash-link" aria-label="クラス図 への直接リンク" title="クラス図 への直接リンク" translate="no">​</a></h3>
<p>クラス図は、クラスの構造と関係を表現する図です。オブジェクト指向設計の可視化に利用されます。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="状態図">状態図<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#%E7%8A%B6%E6%85%8B%E5%9B%B3" class="hash-link" aria-label="状態図 への直接リンク" title="状態図 への直接リンク" translate="no">​</a></h3>
<p>状態図は、オブジェクトの状態遷移を表現する図です。ライフサイクルやワークフローの可視化に適しています。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="er図エンティティ関係図">ER図（エンティティ関係図）<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#er%E5%9B%B3%E3%82%A8%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3%E9%96%A2%E4%BF%82%E5%9B%B3" class="hash-link" aria-label="ER図（エンティティ関係図） への直接リンク" title="ER図（エンティティ関係図） への直接リンク" translate="no">​</a></h3>
<p>ER図は、データベースのテーブル構造とリレーションを表現する図です。</p>
<!-- -->
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>対応する図の種類</div><div class="admonitionContent_BuS1"><p>Mermaidはここで紹介した図以外にも、ガントチャート、円グラフ、Git Graph、マインドマップ、タイムラインなど多くの図に対応しています。対応する図の一覧は<a href="https://mermaid.js.org/intro/" target="_blank" rel="noopener noreferrer" class="">Mermaid公式ドキュメント</a>で確認できます。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="mermaidの導入方法">Mermaidの導入方法<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#mermaid%E3%81%AE%E5%B0%8E%E5%85%A5%E6%96%B9%E6%B3%95" class="hash-link" aria-label="Mermaidの導入方法 への直接リンク" title="Mermaidの導入方法 への直接リンク" translate="no">​</a></h2>
<p>Mermaidは多くのプラットフォームで利用可能です。代表的な導入方法を紹介します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="visual-studio-code">Visual Studio Code<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#visual-studio-code" class="hash-link" aria-label="Visual Studio Code への直接リンク" title="Visual Studio Code への直接リンク" translate="no">​</a></h3>
<p>VSCodeでは、拡張機能「<a href="https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid" target="_blank" rel="noopener noreferrer" class="">Markdown Preview Mermaid Support</a>」をインストールすることで、マークダウンのプレビュー画面でMermaid図を描画できます。</p>
<p>VSCodeのインストールについては、<a class="" href="https://blog.shinyakato.dev/blog/vscode-install-homebrew-2dc71424">HomebrewでVisual Studio Codeをインストールする</a>で解説しています。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="github--gitlab">GitHub / GitLab<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#github--gitlab" class="hash-link" aria-label="GitHub / GitLab への直接リンク" title="GitHub / GitLab への直接リンク" translate="no">​</a></h3>
<p>GitHubとGitLabでは、マークダウンファイル内の<code>mermaid</code>コードブロックがネイティブで描画されます。READMEやIssue、Pull Requestの説明文にMermaid図を含めることが可能です。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="docusaurus">Docusaurus<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#docusaurus" class="hash-link" aria-label="Docusaurus への直接リンク" title="Docusaurus への直接リンク" translate="no">​</a></h3>
<p><a href="https://docusaurus.io/" target="_blank" rel="noopener noreferrer" class="">Docusaurus</a>では、<code>@docusaurus/theme-mermaid</code>テーマを導入することでMermaid図を利用できます。<code>docusaurus.config.ts</code>で以下のように設定します。</p>
<div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">docusaurus.config.ts</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword module" style="color:rgb(189, 147, 249);font-style:italic">export</span><span class="token plain"> </span><span class="token keyword module" style="color:rgb(189, 147, 249);font-style:italic">default</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  markdown</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    mermaid</span><span class="token operator">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  themes</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">'@docusaurus/theme-mermaid'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></span></code></pre></div></div>
<p>Docusaurusの基本的な使い方については、<a class="" href="https://blog.shinyakato.dev/blog/docusaurus-getting-started-df1d091c">Docusaurusで静的サイトを構築する</a>で解説しています。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mermaid-live-editor">Mermaid Live Editor<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#mermaid-live-editor" class="hash-link" aria-label="Mermaid Live Editor への直接リンク" title="Mermaid Live Editor への直接リンク" translate="no">​</a></h3>
<p><a href="https://mermaid.live/" target="_blank" rel="noopener noreferrer" class="">Mermaid Live Editor</a>は、ブラウザ上でMermaid図を編集・プレビューできる公式ツールです。環境構築不要で、Mermaidの構文を試すことができます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/mermaid-diagram-text-based-guide-e4604932#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、テキストベースでダイアグラム図を作成できるMermaidについて解説しました。Mermaidを使用することで、フローチャート、シーケンス図、クラス図、状態図、ER図など多様な図をコードで記述でき、Gitでのバージョン管理やLLMとの連携も可能になります。VSCode、GitHub、Docusaurusなど多くのプラットフォームで利用できるため、ドキュメント作成の効率化に有効です。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://mermaid.js.org/" target="_blank" rel="noopener noreferrer" class="">Mermaid公式サイト</a></li>
<li class=""><a href="https://mermaid.js.org/intro/" target="_blank" rel="noopener noreferrer" class="">Mermaid公式ドキュメント</a></li>
<li class=""><a href="https://mermaid.live/" target="_blank" rel="noopener noreferrer" class="">Mermaid Live Editor</a></li>
<li class=""><a href="https://github.com/mermaid-js/mermaid" target="_blank" rel="noopener noreferrer" class="">Mermaid GitHub リポジトリ</a></li>
<li class=""><a href="https://osawards.com/javascript/2019" target="_blank" rel="noopener noreferrer" class="">JavaScript Open Source Awards 2019</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="Mermaid" term="Mermaid"/>
        <category label="JavaScript" term="JavaScript"/>
        <category label="tools" term="tools"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Git rebaseでコミット履歴を整理する - インタラクティブrebaseの使い方]]></title>
        <id>https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e</id>
        <link href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e"/>
        <updated>2026-03-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、Gitのrebaseコマンドを使ってコミット履歴を整理する方法について解説します。特に、プルリクエストを作成する際に活用できるインタラクティブrebase（git rebase -i）に焦点を当てて説明します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、Gitの<code>rebase</code>コマンドを使ってコミット履歴を整理する方法について解説します。特に、プルリクエストを作成する際に活用できるインタラクティブrebase（<code>git rebase -i</code>）に焦点を当てて説明します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">Gitのコミット履歴を整理する方法を知りたい人</li>
<li class="">プルリクエストのコミット履歴をきれいにしたい人</li>
<li class=""><code>git rebase -i</code>の使い方を理解したい人</li>
<li class="">チーム開発でコミット履歴の管理に課題を感じている人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="rebaseとは">rebaseとは<a href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e#rebase%E3%81%A8%E3%81%AF" class="hash-link" aria-label="rebaseとは への直接リンク" title="rebaseとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://git-scm.com/docs/git-rebase" target="_blank" rel="noopener noreferrer" class=""><code>git rebase</code></a>は、コミット履歴の基準点（ベース）を変更・再構成するためのコマンドです。コミット履歴を整理したり、ブランチの起点を変更したりする際に使用します。</p>
<p>普段<code>main</code>ブランチで直接作業するような場合にはあまり使用しませんが、プルリクエストを作成するワークフローでは、マージ前にコミット履歴を整理する目的で活用できます。</p>
<div class="theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>rebaseの注意点</div><div class="admonitionContent_BuS1"><p>rebaseはコミット履歴を書き換える操作です。誤った使い方をするとGitの作業ツリーを破壊する可能性があります。特に、共同開発のブランチでrebaseを行うと、他のメンバーの修正を消してしまうリスクがあります。<strong>リモートにプッシュ済みのコミットに対するrebaseは、影響範囲を十分に理解した上で実行する必要があります。</strong></p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="インタラクティブrebaseの活用例">インタラクティブrebaseの活用例<a href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e#%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96rebase%E3%81%AE%E6%B4%BB%E7%94%A8%E4%BE%8B" class="hash-link" aria-label="インタラクティブrebaseの活用例 への直接リンク" title="インタラクティブrebaseの活用例 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="コミット履歴が散らかるケース">コミット履歴が散らかるケース<a href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e#%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E5%B1%A5%E6%AD%B4%E3%81%8C%E6%95%A3%E3%82%89%E3%81%8B%E3%82%8B%E3%82%B1%E3%83%BC%E3%82%B9" class="hash-link" aria-label="コミット履歴が散らかるケース への直接リンク" title="コミット履歴が散らかるケース への直接リンク" translate="no">​</a></h3>
<p>開発中、以下のようなコミット履歴になることがあります。</p>
<!-- -->
<p>この<code>feature</code>ブランチのコミット履歴を見ると、本質的な変更である「機能実装」と「テスト追加」に加えて、「typo修正」や「デバッグ用print削除」といった小さな修正コミットが混在しています。このままマージすると、<code>main</code>ブランチのコミット履歴にもこれらの細かいコミットがそのまま残ります。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>理想的なコミット</div><div class="admonitionContent_BuS1"><p>本来は、コミットの時点で適切な単位にまとめてコミットすることが理想です。しかし、開発中に試行錯誤した結果、細かいコミットが増えてしまうケースは少なくありません。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="rebaseでコミットを統合する">rebaseでコミットを統合する<a href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e#rebase%E3%81%A7%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%82%92%E7%B5%B1%E5%90%88%E3%81%99%E3%82%8B" class="hash-link" aria-label="rebaseでコミットを統合する への直接リンク" title="rebaseでコミットを統合する への直接リンク" translate="no">​</a></h3>
<p><code>git rebase -i</code>（インタラクティブrebase）を使用すると、複数のコミットを1つに統合（squash）できます。</p>
<p>直近4件のコミットを対象にインタラクティブrebaseを開始します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> rebase </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-i</span><span class="token plain"> HEAD~4</span><br></span></code></pre></div></div>
<p>エディタが開き、対象のコミット一覧が表示されます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">エディタで表示されるコミット一覧</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">pick jkl3456 機能実装</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pick ghi9012 typo修正</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pick def5678 テスト追加</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pick abc1234 デバッグ用print削除</span><br></span></code></pre></div></div>
<p>各行の先頭にある<code>pick</code>は、そのコミットをそのまま残すことを意味します。統合したいコミットの<code>pick</code>を<code>squash</code>（または省略形の<code>s</code>）に変更します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">squashに変更</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">pick jkl3456 機能実装</span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#F8F8F2"><span class="token plain">squash ghi9012 typo修正</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">pick def5678 テスト追加</span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#F8F8F2"><span class="token plain">squash abc1234 デバッグ用print削除</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>squashの動作</div><div class="admonitionContent_BuS1"><p><code>squash</code>を指定したコミットは、その直前の<code>pick</code>コミットに統合されます。上記の例では:</p><ul>
<li class="">「typo修正」→「機能実装」に統合</li>
<li class="">「デバッグ用print削除」→「テスト追加」に統合</li>
</ul></div></div>
<p>編集が完了したら、エディタを保存して終了します（Vimの場合は<code>:wq</code>）。続いてコミットメッセージの編集画面が表示されるので、統合後のコミットメッセージを記述して保存します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="rebase後のコミット履歴">rebase後のコミット履歴<a href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e#rebase%E5%BE%8C%E3%81%AE%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E5%B1%A5%E6%AD%B4" class="hash-link" aria-label="rebase後のコミット履歴 への直接リンク" title="rebase後のコミット履歴 への直接リンク" translate="no">​</a></h3>
<p>rebaseが完了すると、コミット履歴は以下のように整理されます。</p>
<!-- -->
<p>4つあったコミットが2つに整理され、プルリクエストをマージした際に<code>main</code>ブランチに残るコミット履歴もきれいな状態になります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="rebase--iで使用できるコマンド">rebase -iで使用できるコマンド<a href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e#rebase--i%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89" class="hash-link" aria-label="rebase -iで使用できるコマンド への直接リンク" title="rebase -iで使用できるコマンド への直接リンク" translate="no">​</a></h2>
<p>インタラクティブrebaseでは、<code>pick</code>と<code>squash</code>以外にもいくつかのコマンドが使用できます。</p>
<table><thead><tr><th>コマンド</th><th>省略形</th><th>動作</th></tr></thead><tbody><tr><td><code>pick</code></td><td><code>p</code></td><td>コミットをそのまま使用する</td></tr><tr><td><code>reword</code></td><td><code>r</code></td><td>コミットメッセージを変更する</td></tr><tr><td><code>edit</code></td><td><code>e</code></td><td>コミット内容を修正するために一時停止する</td></tr><tr><td><code>squash</code></td><td><code>s</code></td><td>直前のコミットに統合し、メッセージを編集する</td></tr><tr><td><code>fixup</code></td><td><code>f</code></td><td>直前のコミットに統合し、メッセージは破棄する</td></tr><tr><td><code>drop</code></td><td><code>d</code></td><td>コミットを削除する</td></tr></tbody></table>
<p>参考: <a href="https://git-scm.com/docs/git-rebase" target="_blank" rel="noopener noreferrer" class="">git-rebase - Git公式ドキュメント</a></p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>squashとfixupの使い分け</div><div class="admonitionContent_BuS1"><p><code>squash</code>は統合時にコミットメッセージの編集画面が表示されます。<code>fixup</code>は統合先のコミットメッセージをそのまま使用し、統合されるコミットのメッセージは破棄されます。メッセージの変更が不要な場合は<code>fixup</code>が効率的です。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="rebaseを中断取り消す">rebaseを中断・取り消す<a href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e#rebase%E3%82%92%E4%B8%AD%E6%96%AD%E5%8F%96%E3%82%8A%E6%B6%88%E3%81%99" class="hash-link" aria-label="rebaseを中断・取り消す への直接リンク" title="rebaseを中断・取り消す への直接リンク" translate="no">​</a></h2>
<p>rebase中に問題が発生した場合、以下のコマンドで操作を中断・取り消すことができます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">rebaseを中断する（rebase開始前の状態に戻る）</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> rebase </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--abort</span><br></span></code></pre></div></div>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">rebase完了後に取り消す（直前の操作を元に戻す）</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> reflog</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> reset </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--hard</span><span class="token plain"> HEAD@</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain">n</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre></div></div>
<p><code>git reflog</code>でrebase前のコミットハッシュを確認し、<code>git reset --hard</code>で戻ることができます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/git-rebase-interactive-guide-b965cf4e#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、<code>git rebase -i</code>を使ってコミット履歴を整理する方法について解説しました。インタラクティブrebaseを活用することで、開発中に増えてしまった細かいコミットを論理的な単位にまとめ、プルリクエストのコミット履歴を整理できます。ただし、rebaseはコミット履歴を書き換える操作であるため、共有ブランチでの使用には注意が必要です。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://git-scm.com/docs/git-rebase" target="_blank" rel="noopener noreferrer" class="">git-rebase - Git公式ドキュメント</a></li>
<li class=""><a href="https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E6%A9%9F%E8%83%BD-%E3%83%AA%E3%83%99%E3%83%BC%E3%82%B9" target="_blank" rel="noopener noreferrer" class="">Git - リベース</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="Git" term="Git"/>
        <category label="tools" term="tools"/>
        <category label="DevOps" term="DevOps"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[git-remote-codecommitでAWS CodeCommitの認証を簡略化する - IAMベースのGitアクセス]]></title>
        <id>https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c</id>
        <link href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c"/>
        <updated>2026-03-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWS公式のPythonツールであるgit-remote-codecommitを使用して、AWS CodeCommitリポジトリへのGitアクセスをIAMユーザーの認証情報で行う方法について解説します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWS公式のPythonツールである<a href="https://github.com/aws/git-remote-codecommit" target="_blank" rel="noopener noreferrer" class="">git-remote-codecommit</a>を使用して、AWS CodeCommitリポジトリへのGitアクセスをIAMユーザーの認証情報で行う方法について解説します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">AWS CodeCommitを使用していてGit認証に手間を感じている人</li>
<li class="">IAMユーザーの認証情報でCodeCommitにアクセスしたい人</li>
<li class="">Git認証情報（HTTPS Git認証情報）の管理を不要にしたい人</li>
<li class="">CodeCommitのクローンやプッシュでトラブルを経験したことがある人</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>前提となる記事</div><div class="admonitionContent_BuS1"><p>この記事では、AWS CLIがインストール済みで、IAMユーザーのプロファイルが設定されていることを前提としています。まだ設定していない場合は、以下の記事を参照してください。</p><ul>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/aws-cli-install-homebrew-bba87303">HomebrewでAWS CLIをインストールする - AWSサービスをコマンドラインから操作する</a></li>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33">AWS CLIでIAMユーザーのプロファイルを設定する - 認証情報の管理と操作方法</a></li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="git-remote-codecommitとは">git-remote-codecommitとは<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#git-remote-codecommit%E3%81%A8%E3%81%AF" class="hash-link" aria-label="git-remote-codecommitとは への直接リンク" title="git-remote-codecommitとは への直接リンク" translate="no">​</a></h2>
<p><a href="https://pypi.org/project/git-remote-codecommit/" target="_blank" rel="noopener noreferrer" class="">git-remote-codecommit</a>は、AWS CodeCommitリポジトリへのGitアクセスを簡略化するためのAWS公式ツールです。Pythonパッケージとしてpipで配布されています。</p>
<p>AWS CodeCommitはGitベースのマネージドリポジトリサービスですが、デフォルトのHTTPSアクセスではGit認証情報（ユーザー名とパスワード）の発行・管理が必要になります。git-remote-codecommitを使用すると、IAMユーザーの認証情報で直接アクセスできるため、Git認証情報を別途管理する必要がなくなります。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>git-remote-codecommitの利点</div><div class="admonitionContent_BuS1"><ul>
<li class="">IAMユーザーの認証情報でCodeCommitにアクセスできる</li>
<li class="">Git認証情報（HTTPS Git認証情報）の発行・管理が不要</li>
<li class="">AWS CLIのプロファイルをそのまま活用できる</li>
<li class="">フェデレーテッドアクセスや一時認証情報にも対応</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="前提条件">前提条件<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6" class="hash-link" aria-label="前提条件 への直接リンク" title="前提条件 への直接リンク" translate="no">​</a></h2>
<p>git-remote-codecommitを使用するには、以下の環境が必要です。</p>
<table><thead><tr><th>項目</th><th>要件</th></tr></thead><tbody><tr><td><strong>Python</strong></td><td>3.8以上（3.8、3.9、3.10、3.11がサポート対象）</td></tr><tr><td><strong>pip</strong></td><td>9.0.3以上</td></tr><tr><td><strong>Git</strong></td><td>1.7.9以上</td></tr><tr><td><strong>AWS CLI</strong></td><td>インストール・プロファイル設定済み</td></tr></tbody></table>
<p>参考: <a href="https://pypi.org/project/git-remote-codecommit/" target="_blank" rel="noopener noreferrer" class="">git-remote-codecommit - PyPI</a></p>
<p>Pythonのインストールについては、<a class="" href="https://blog.shinyakato.dev/blog/python-install-homebrew-afd41854">HomebrewでPythonをインストールする</a>で解説しています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="セットアップ手順">セットアップ手順<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E6%89%8B%E9%A0%86" class="hash-link" aria-label="セットアップ手順 への直接リンク" title="セットアップ手順 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="手順1-pipのバージョンを確認する">手順1: pipのバージョンを確認する<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E6%89%8B%E9%A0%861-pip%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B" class="hash-link" aria-label="手順1: pipのバージョンを確認する への直接リンク" title="手順1: pipのバージョンを確認する への直接リンク" translate="no">​</a></h3>
<p>git-remote-codecommitには<a href="https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-git-remote-codecommit.html" target="_blank" rel="noopener noreferrer" class="">pip 9.0.3以降が必要</a>です。まず、pipのバージョンを確認します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">pip3 </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><br></span></code></pre></div></div>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">出力例</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">pip </span><span class="token number">26.0</span><span class="token plain"> from /opt/homebrew/lib/python3.14/site-packages/pip </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">python </span><span class="token number">3.14</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre></div></div>
<p>バージョンが9.0.3未満の場合は、pipを更新します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">pip3 </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--upgrade</span><span class="token plain"> pip</span><br></span></code></pre></div></div>
<p>または、Homebrewで管理している場合はbrewコマンドでPythonを更新します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">brew upgrade python3</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="手順2-iamユーザーの準備">手順2: IAMユーザーの準備<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E6%89%8B%E9%A0%862-iam%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E6%BA%96%E5%82%99" class="hash-link" aria-label="手順2: IAMユーザーの準備 への直接リンク" title="手順2: IAMユーザーの準備 への直接リンク" translate="no">​</a></h3>
<p>CodeCommitリポジトリがあるリージョンで、適切な権限を持つIAMユーザーを準備します。</p>
<ol>
<li class="">IAMユーザーを作成し、CodeCommit関連のポリシー（<code>AWSCodeCommitFullAccess</code>または<code>AWSCodeCommitPowerUser</code>など）をアタッチする</li>
<li class="">AWS CLIでプロファイルを設定する</li>
</ol>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws configure </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--profile</span><span class="token plain"> my-codecommit-profile</span><br></span></code></pre></div></div>
<p>AWS CLIのプロファイル設定の詳細については、<a class="" href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33">AWS CLIでIAMユーザーのプロファイルを設定する</a>で解説しています。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="手順3-git-remote-codecommitをインストールする">手順3: git-remote-codecommitをインストールする<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E6%89%8B%E9%A0%863-git-remote-codecommit%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B" class="hash-link" aria-label="手順3: git-remote-codecommitをインストールする への直接リンク" title="手順3: git-remote-codecommitをインストールする への直接リンク" translate="no">​</a></h3>
<p>pipでgit-remote-codecommitをインストールします。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">pip3 </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> git-remote-codecommit</span><br></span></code></pre></div></div>
<p>インストールが完了すると、Gitコマンドで<code>codecommit://</code>プロトコルが使用できるようになります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="使用方法">使用方法<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95" class="hash-link" aria-label="使用方法 への直接リンク" title="使用方法 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="デフォルトプロファイルでクローンする">デフォルトプロファイルでクローンする<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%B3%E3%81%99%E3%82%8B" class="hash-link" aria-label="デフォルトプロファイルでクローンする への直接リンク" title="デフォルトプロファイルでクローンする への直接リンク" translate="no">​</a></h3>
<p>AWS CLIのデフォルトプロファイルを使用してリポジトリをクローンする場合は、以下のコマンドを実行します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> clone codecommit://YourRepositoryName</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="プロファイルを指定してクローンする">プロファイルを指定してクローンする<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%B3%E3%81%99%E3%82%8B" class="hash-link" aria-label="プロファイルを指定してクローンする への直接リンク" title="プロファイルを指定してクローンする への直接リンク" translate="no">​</a></h3>
<p>デフォルト以外のプロファイルを使用する場合は、<code>@</code>の前にプロファイル名を指定します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> clone codecommit://my-profile@YourRepositoryName</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="リージョンを指定してクローンする">リージョンを指定してクローンする<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E3%83%AA%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%B3%E3%81%99%E3%82%8B" class="hash-link" aria-label="リージョンを指定してクローンする への直接リンク" title="リージョンを指定してクローンする への直接リンク" translate="no">​</a></h3>
<p>特定のリージョンを明示的に指定する場合は、以下の形式を使用します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> clone codecommit::ap-northeast-1://my-profile@YourRepositoryName</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="クローン後の操作">クローン後の操作<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%B3%E5%BE%8C%E3%81%AE%E6%93%8D%E4%BD%9C" class="hash-link" aria-label="クローン後の操作 への直接リンク" title="クローン後の操作 への直接リンク" translate="no">​</a></h3>
<p><code>codecommit://</code>プロトコルでクローンしたリポジトリでは、通常のGitコマンドでプル・プッシュなどの操作が可能です。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> pull</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> push</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">git</span><span class="token plain"> fetch</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="codecommitプロトコルの形式まとめ">codecommitプロトコルの形式まとめ<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#codecommit%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E3%81%AE%E5%BD%A2%E5%BC%8F%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="codecommitプロトコルの形式まとめ への直接リンク" title="codecommitプロトコルの形式まとめ への直接リンク" translate="no">​</a></h2>
<p>使用するプロファイルとリージョンに応じて、以下のURL形式を選択します。</p>
<!-- -->
<table><thead><tr><th>形式</th><th>用途</th></tr></thead><tbody><tr><td><code>codecommit://RepoName</code></td><td>デフォルトプロファイル・デフォルトリージョン</td></tr><tr><td><code>codecommit://Profile@RepoName</code></td><td>プロファイル指定</td></tr><tr><td><code>codecommit::Region://Profile@RepoName</code></td><td>リージョン・プロファイル指定</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>注意点</div><div class="admonitionContent_BuS1"><ul>
<li class="">一部のIDEでは<code>codecommit://</code>形式のURLを直接認識できない場合があります。その場合は、コマンドラインで先にクローンしてからIDEで開くことで対応できます</li>
<li class="">AWS CLI v2の使用が推奨されます。一時認証情報のサポートはv2で提供されています</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/git-remote-codecommit-setup-guide-aac2112c#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、git-remote-codecommitを使用してAWS CodeCommitの認証をIAMベースに簡略化する方法について解説しました。git-remote-codecommitを導入することで、Git認証情報の管理が不要になり、AWS CLIのプロファイルをそのまま活用してCodeCommitリポジトリにアクセスできます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://pypi.org/project/git-remote-codecommit/" target="_blank" rel="noopener noreferrer" class="">git-remote-codecommit - PyPI</a></li>
<li class=""><a href="https://github.com/aws/git-remote-codecommit" target="_blank" rel="noopener noreferrer" class="">git-remote-codecommit - GitHub</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-git-remote-codecommit.html" target="_blank" rel="noopener noreferrer" class="">AWS公式 - git-remote-codecommitを使用したセットアップ</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="AWS CodeCommit" term="AWS CodeCommit"/>
        <category label="Python" term="Python"/>
        <category label="pip" term="pip"/>
        <category label="Git" term="Git"/>
        <category label="IAM" term="IAM"/>
        <category label="CLI" term="CLI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude CodeでAmazon Bedrockを使用する - 環境変数の設定からIAMポリシーの構成まで]]></title>
        <id>https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b</id>
        <link href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b"/>
        <updated>2026-03-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、Anthropicが開発したAIコーディングアシスタント「Claude Code」をAmazon Bedrockと連携して使用するためのセットアップ手順について解説します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、Anthropicが開発したAIコーディングアシスタント「<a href="https://docs.anthropic.com/ja/docs/claude-code/overview" target="_blank" rel="noopener noreferrer" class="">Claude Code</a>」をAmazon Bedrockと連携して使用するためのセットアップ手順について解説します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">Claude Codeの導入を検討している人</li>
<li class="">Claude CodeをAmazon Bedrock経由で使用したい人</li>
<li class="">AWSの請求体系でAIツールのコストを一元管理したい人</li>
<li class="">IAMによるアクセス権管理を活用したい人</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>前提となる記事</div><div class="admonitionContent_BuS1"><p>この記事では、AWS CLIがインストール・設定済みであることを前提としています。まだ設定していない場合は、以下の記事を参照してください。</p><ul>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/aws-cli-install-homebrew-bba87303">HomebrewでAWS CLIをインストールする - AWSサービスをコマンドラインから操作する</a></li>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33">AWS CLIでIAMユーザーのプロファイルを設定する - 認証情報の管理と操作方法</a></li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="claude-codeとは">Claude Codeとは<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#claude-code%E3%81%A8%E3%81%AF" class="hash-link" aria-label="Claude Codeとは への直接リンク" title="Claude Codeとは への直接リンク" translate="no">​</a></h2>
<p>Claude Codeは、Anthropicが開発したCLIベースのAIコーディングアシスタントです。ターミナル上で動作し、コードの生成・編集・デバッグ・リファクタリングなど、幅広いソフトウェア開発タスクを支援します。</p>
<p>Claude Codeは公式の定額制サブスクリプションでも利用可能ですが、Amazon Bedrockと連携することで従量課金制での利用が可能になります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="amazon-bedrockを使用するメリット">Amazon Bedrockを使用するメリット<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#amazon-bedrock%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88" class="hash-link" aria-label="Amazon Bedrockを使用するメリット への直接リンク" title="Amazon Bedrockを使用するメリット への直接リンク" translate="no">​</a></h2>
<p>Claude CodeをAmazon Bedrock経由で使用することには、以下のような利点があります。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>良い点</div><div class="admonitionContent_BuS1"><ul>
<li class=""><strong>従量課金制</strong>: トークン単位の課金でコストを細かく管理できる</li>
<li class=""><strong>AWS請求の一本化</strong>: AWSの既存の請求体系にClaude Codeの利用料金を統合できる</li>
<li class=""><strong>APIキー管理が不要</strong>: Anthropic APIキーの発行・管理が不要になる</li>
<li class=""><strong>IAMによるアクセス管理</strong>: AWSのIAMポリシーで利用権限を制御できる</li>
<li class=""><strong>エンタープライズ機能との連携</strong>: Amazon CloudWatchでのログ管理・分析など、AWSの各種サービスと組み合わせた運用が可能</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>注意点</div><div class="admonitionContent_BuS1"><ul>
<li class=""><strong>オンデマンド課金</strong>: Amazon Bedrockはリクエストごとに料金が発生するため、使用量に応じたコスト管理が必要</li>
<li class=""><strong>モデルごとの料金差</strong>: 使用するモデルによって料金が大きく異なり、上位モデルは高価になる場合がある</li>
<li class=""><strong>料金の事前確認</strong>: 利用開始前に<a href="https://aws.amazon.com/jp/bedrock/pricing/" target="_blank" rel="noopener noreferrer" class="">Amazon Bedrockの料金ページ</a>で最新の料金体系を確認することが推奨される</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="claude-codeのインストール">Claude Codeのインストール<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#claude-code%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" class="hash-link" aria-label="Claude Codeのインストール への直接リンク" title="Claude Codeのインストール への直接リンク" translate="no">​</a></h2>
<p>ターミナルで次のコマンドを実行してClaude Codeをインストールします。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">npm</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-g</span><span class="token plain"> @anthropic-ai/claude-code</span><br></span></code></pre></div></div>
<p>インストールが完了したら、次のコマンドでバージョン情報を確認します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">claude </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><br></span></code></pre></div></div>
<p>バージョン情報が出力されれば、インストールは正常に完了しています。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token number">2.1</span><span class="token plain">.63 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">Claude Code</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="環境変数の設定">環境変数の設定<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AE%E8%A8%AD%E5%AE%9A" class="hash-link" aria-label="環境変数の設定 への直接リンク" title="環境変数の設定 への直接リンク" translate="no">​</a></h2>
<p>Claude CodeでAmazon Bedrockを使用するには、いくつかの環境変数を設定する必要があります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="amazon-bedrockの有効化">Amazon Bedrockの有効化<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#amazon-bedrock%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96" class="hash-link" aria-label="Amazon Bedrockの有効化 への直接リンク" title="Amazon Bedrockの有効化 への直接リンク" translate="no">​</a></h3>
<p>Claude CodeからAmazon Bedrockを使用する設定を有効化します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">CLAUDE_CODE_USE_BEDROCK</span><span class="token operator">=</span><span class="token number">1</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="awsリージョンの設定">AWSリージョンの設定<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#aws%E3%83%AA%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E8%A8%AD%E5%AE%9A" class="hash-link" aria-label="AWSリージョンの設定 への直接リンク" title="AWSリージョンの設定 への直接リンク" translate="no">​</a></h3>
<p>Amazon Bedrockを使用するAWSリージョンを設定します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">AWS_REGION</span><span class="token operator">=</span><span class="token plain">ap-northeast-1</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="推論プロファイルidの設定">推論プロファイルIDの設定<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#%E6%8E%A8%E8%AB%96%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABid%E3%81%AE%E8%A8%AD%E5%AE%9A" class="hash-link" aria-label="推論プロファイルIDの設定 への直接リンク" title="推論プロファイルIDの設定 への直接リンク" translate="no">​</a></h3>
<p>Claude Codeで使用するモデルの推論プロファイルIDを設定します。推論プロファイルは、Amazon Bedrockで利用可能なモデルを識別するためのIDです。</p>
<p><code>ANTHROPIC_MODEL</code>にはメインで使用するモデル、<code>ANTHROPIC_SMALL_FAST_MODEL</code>には軽量・高速なモデルを指定します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ANTHROPIC_MODEL</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">'jp.anthropic.claude-sonnet-4-5-20250929-v1:0'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ANTHROPIC_SMALL_FAST_MODEL</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">'jp.anthropic.claude-haiku-4-5-20251001-v1:0'</span><br></span></code></pre></div></div>
<p>利用可能な推論プロファイルの一覧は、<a href="https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/inference-profiles-support.html" target="_blank" rel="noopener noreferrer" class="">Amazon Bedrockでサポートされている推論プロファイル</a>から確認できます。グローバル推論プロファイル（<code>global.</code>プレフィックス）はリージョンに依存せず使用でき、リージョン別推論プロファイル（<code>jp.</code>などのプレフィックス）は特定のリージョンに紐づいています。</p>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>推論プロファイルIDの更新について</div><div class="admonitionContent_BuS1"><p>推論プロファイルIDはClaude Codeのアップデートでは自動更新されません。Anthropicから新しいモデルがリリースされた場合は、環境変数を手動で更新する必要があります。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="awsプロファイルの指定任意">AWSプロファイルの指定（任意）<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#aws%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%8C%87%E5%AE%9A%E4%BB%BB%E6%84%8F" class="hash-link" aria-label="AWSプロファイルの指定（任意） への直接リンク" title="AWSプロファイルの指定（任意） への直接リンク" translate="no">​</a></h3>
<p>AWS CLIのデフォルトプロファイル以外を使用する場合は、<code>AWS_PROFILE</code>環境変数で対象のプロファイルを指定します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">AWS_PROFILE</span><span class="token operator">=</span><span class="token plain">bedrock-user</span><br></span></code></pre></div></div>
<p>AWS CLIのプロファイル設定については、<a class="" href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33">AWS CLIでIAMユーザーのプロファイルを設定する</a>で詳しく解説しています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="iamポリシーの設定">IAMポリシーの設定<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#iam%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9A" class="hash-link" aria-label="IAMポリシーの設定 への直接リンク" title="IAMポリシーの設定 への直接リンク" translate="no">​</a></h2>
<p>Claude CodeからAmazon Bedrockに接続するIAMユーザーには、以下のポリシーをアタッチする必要があります。</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">bedrock-claude-code-policy.json</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"Version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"2012-10-17"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"Statement"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Sid"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"AllowModelAndInferenceProfileAccess"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Effect"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Allow"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Action"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"bedrock:InvokeModel"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"bedrock:InvokeModelWithResponseStream"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"bedrock:ListInferenceProfiles"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Resource"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"arn:aws:bedrock:*:*:inference-profile/*"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"arn:aws:bedrock:*:*:application-inference-profile/*"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"arn:aws:bedrock:*:*:foundation-model/*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Sid"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"AllowMarketplaceSubscription"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Effect"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Allow"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Action"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"aws-marketplace:ViewSubscriptions"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token string" style="color:rgb(255, 121, 198)">"aws-marketplace:Subscribe"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Resource"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"*"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token property">"Condition"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token property">"StringEquals"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token property">"aws:CalledViaLast"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"bedrock.amazonaws.com"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre></div></div>
<p>このポリシーには2つのステートメントが含まれています。</p>
<table><thead><tr><th>ステートメント</th><th>目的</th><th>許可されるアクション</th></tr></thead><tbody><tr><td><strong>AllowModelAndInferenceProfileAccess</strong></td><td>モデルの呼び出しと推論プロファイルの取得</td><td><code>bedrock:InvokeModel</code>、<code>bedrock:InvokeModelWithResponseStream</code>、<code>bedrock:ListInferenceProfiles</code></td></tr><tr><td><strong>AllowMarketplaceSubscription</strong></td><td>AWS Marketplaceのサブスクリプション管理</td><td><code>aws-marketplace:ViewSubscriptions</code>、<code>aws-marketplace:Subscribe</code></td></tr></tbody></table>
<p><code>AllowMarketplaceSubscription</code>には<code>Condition</code>が設定されており、Amazon Bedrock経由での呼び出し時のみ有効になります。</p>
<p>IAMポリシーをアタッチしたIAMユーザーのプロファイルをAWS CLIで設定することで、Claude CodeはAWS認証情報を参照してAmazon Bedrockのモデルを呼び出します。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="claude-codeの起動">Claude Codeの起動<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#claude-code%E3%81%AE%E8%B5%B7%E5%8B%95" class="hash-link" aria-label="Claude Codeの起動 への直接リンク" title="Claude Codeの起動 への直接リンク" translate="no">​</a></h2>
<p>環境変数の設定とIAMポリシーの構成が完了したら、Claude Codeを起動します。任意のプロジェクトディレクトリで次のコマンドを実行します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">claude</span><br></span></code></pre></div></div>
<p>初回起動時はカレントディレクトリへのアクセス許可を求められます。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">────────────────────────────────────────────────────────────────────────────────</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> Accessing workspace:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> /xxx/yyy</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> Quick safety check: Is this a project you created or one you trust? (Like your</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  own code, a well-known open source project, or work from your team). If not,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> take a moment to review what's in this folder first.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> Claude Code'll be able to read, edit, and execute files here.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> Security guide</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ❯ 1. Yes, I trust this folder</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">   2. No, exit</span><br></span></code></pre></div></div>
<p>信頼できるディレクトリであれば「1. Yes, I trust this folder」を選択します。</p>
<p>許可すると、以下のようにClaude Codeが起動し、設定した推論プロファイルが反映されていることを確認できます。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ▐▛███▜▌   Claude Code v2.1.63</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">▝▜█████▛▘  global.anthropic.claude-opus-4-6-v1 · API Usage Billing</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  ▘▘ ▝▝    ~/xxx/yyy/zzz</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  Welcome to Opus 4.6</span><br></span></code></pre></div></div>
<p>2行目に表示されているモデル名が環境変数で設定した推論プロファイルIDと一致し、「API Usage Billing」と表示されていれば、Amazon Bedrock経由での接続が正常に行われています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="環境変数の永続化">環境変数の永続化<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AE%E6%B0%B8%E7%B6%9A%E5%8C%96" class="hash-link" aria-label="環境変数の永続化 への直接リンク" title="環境変数の永続化 への直接リンク" translate="no">​</a></h2>
<p>上記の環境変数はターミナルセッション終了時に失われるため、シェルの設定ファイルに記述して永続化することが推奨されます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">~/.zshrc</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Claude Code - Amazon Bedrock</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">CLAUDE_CODE_USE_BEDROCK</span><span class="token operator">=</span><span class="token number">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">AWS_REGION</span><span class="token operator">=</span><span class="token plain">ap-northeast-1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ANTHROPIC_MODEL</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">'jp.anthropic.claude-sonnet-4-5-20250929-v1:0'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ANTHROPIC_SMALL_FAST_MODEL</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">'jp.anthropic.claude-haiku-4-5-20251001-v1:0'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># export AWS_PROFILE=bedrock-user  # 必要に応じて有効化</span><br></span></code></pre></div></div>
<p>設定ファイルを編集した後、次のコマンドで変更を反映します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token builtin class-name" style="color:rgb(189, 147, 249)">source</span><span class="token plain"> ~/.zshrc</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/claude-code-bedrock-setup-guide-c3813c8b#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、Claude CodeをAmazon Bedrock経由で使用するためのセットアップ手順を解説しました。環境変数の設定（<code>CLAUDE_CODE_USE_BEDROCK</code>、<code>AWS_REGION</code>、推論プロファイルID）とIAMポリシーの構成を行うことで、AWSの請求体系とアクセス管理の仕組みを活用しながらClaude Codeを利用できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.anthropic.com/ja/docs/claude-code/overview" target="_blank" rel="noopener noreferrer" class="">Claude Code 公式ドキュメント</a></li>
<li class=""><a href="https://code.claude.com/docs/ja/amazon-bedrock" target="_blank" rel="noopener noreferrer" class="">Amazon Bedrock でのClaude Code利用</a></li>
<li class=""><a href="https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/inference-profiles-support.html" target="_blank" rel="noopener noreferrer" class="">Amazon Bedrockでサポートされている推論プロファイル</a></li>
<li class=""><a href="https://aws.amazon.com/jp/bedrock/pricing/" target="_blank" rel="noopener noreferrer" class="">Amazon Bedrock 料金</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="Amazon Bedrock" term="Amazon Bedrock"/>
        <category label="AI" term="AI"/>
        <category label="CLI" term="CLI"/>
        <category label="IAM" term="IAM"/>
        <category label="macOS" term="macOS"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Amazon Route53でドメイン登録未対応のTLDをDNSホスティングする - .devドメインの移行手順]]></title>
        <id>https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db</id>
        <link href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db"/>
        <updated>2026-03-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、Amazon Route53でドメイン登録がサポートされていないTLD（.devなど）のドメインを、Route53でDNSホスティングする方法について解説します。ドメインの登録（レジストラ）は移行元のプロバイダに残したまま、DNSの名前解決のみをRoute53に移行する手順を整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、Amazon Route53で<a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar-tld-list.html" target="_blank" rel="noopener noreferrer" class="">ドメイン登録がサポートされていないTLD</a>（<code>.dev</code>など）のドメインを、Route53でDNSホスティングする方法について解説します。ドメインの登録（レジストラ）は移行元のプロバイダに残したまま、DNSの名前解決のみをRoute53に移行する手順を整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">Route53でドメイン登録未対応のTLDを使用したい人</li>
<li class=""><code>.dev</code>ドメインのDNSをRoute53に移行したい人</li>
<li class="">CloudFrontでネイキッドドメイン（Apexドメイン）を使用したい人</li>
<li class="">既存のDNS設定をRoute53に移行する手順を知りたい人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="route53のドメイン登録とdnsホスティングの違い">Route53のドメイン登録とDNSホスティングの違い<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#route53%E3%81%AE%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E7%99%BB%E9%8C%B2%E3%81%A8dns%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AE%E9%81%95%E3%81%84" class="hash-link" aria-label="Route53のドメイン登録とDNSホスティングの違い への直接リンク" title="Route53のドメイン登録とDNSホスティングの違い への直接リンク" translate="no">​</a></h2>
<p>Amazon Route53には主に2つの機能があります。</p>
<table><thead><tr><th>機能</th><th>説明</th></tr></thead><tbody><tr><td><strong>ドメイン登録</strong>（レジストラ）</td><td>ドメインの取得・更新・移管を行う機能。<a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar-tld-list.html" target="_blank" rel="noopener noreferrer" class="">サポートされているTLD</a>に限りがある</td></tr><tr><td><strong>DNSホスティング</strong></td><td>ドメインのDNSレコードを管理し、名前解決を行う機能。<strong>任意のTLDのドメインで使用可能</strong></td></tr></tbody></table>
<p>Route53の公式ドキュメントにも、<a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar-tld-list.html" target="_blank" rel="noopener noreferrer" class="">ドメイン登録でサポートされていないTLDであっても、Route53をDNSサービスとして使用できる</a>ことが記載されています。</p>
<p>つまり、<code>.dev</code>のようにRoute53でドメイン登録ができないTLDであっても、パブリックホストゾーンを作成してDNSホスティングのみをRoute53で行うことが可能です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="route53でdnsホスティングが必要になるケース">Route53でDNSホスティングが必要になるケース<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#route53%E3%81%A7dns%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AB%E3%81%AA%E3%82%8B%E3%82%B1%E3%83%BC%E3%82%B9" class="hash-link" aria-label="Route53でDNSホスティングが必要になるケース への直接リンク" title="Route53でDNSホスティングが必要になるケース への直接リンク" translate="no">​</a></h2>
<p>Route53でのDNSホスティングが有効なケースとして、Amazon CloudFrontでのネイキッドドメイン（Apexドメイン）の使用があります。</p>
<p>DNS仕様上、ゾーンのApexにCNAMEレコードを設定することはできません。そのため、<code>example.dev</code>のようなネイキッドドメインでCloudFrontディストリビューションを使用する場合、Route53のALIASレコードを利用する方法が一般的です<sup><a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#user-content-fn-1-8135e4" id="user-content-fnref-1-8135e4" data-footnote-ref="true" aria-describedby="footnote-label" class="anchorTargetStickyNavbar_Vzrq">1</a></sup>。</p>
<div class="theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>作業前の注意</div><div class="admonitionContent_BuS1"><p>DNSレコードやネームサーバーの変更は、設定に誤りがあるとWebサイトへのアクセスやメールの受信ができなくなる可能性があります。作業を開始する前に、移行元プロバイダで設定されている<strong>すべてのDNSレコードとネームサーバー名のバックアップ</strong>を取得してから作業を進めることが推奨されます。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="移行の全体フロー">移行の全体フロー<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#%E7%A7%BB%E8%A1%8C%E3%81%AE%E5%85%A8%E4%BD%93%E3%83%95%E3%83%AD%E3%83%BC" class="hash-link" aria-label="移行の全体フロー への直接リンク" title="移行の全体フロー への直接リンク" translate="no">​</a></h2>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="手順1-移行元のdnsレコードをバックアップする">手順1: 移行元のDNSレコードをバックアップする<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#%E6%89%8B%E9%A0%861-%E7%A7%BB%E8%A1%8C%E5%85%83%E3%81%AEdns%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%99%E3%82%8B" class="hash-link" aria-label="手順1: 移行元のDNSレコードをバックアップする への直接リンク" title="手順1: 移行元のDNSレコードをバックアップする への直接リンク" translate="no">​</a></h2>
<p>移行元のドメイン管理プロバイダにログインし、現在設定されているDNSレコードとネームサーバー名をすべて控えます。</p>
<p>バックアップする項目は以下の通りです。</p>
<ul>
<li class="">すべてのDNSレコード（レコード名、レコードタイプ、値、TTL）</li>
<li class="">現在使用中のネームサーバー名</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="手順2-route53でパブリックホストゾーンを作成する">手順2: Route53でパブリックホストゾーンを作成する<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#%E6%89%8B%E9%A0%862-route53%E3%81%A7%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%9B%E3%82%B9%E3%83%88%E3%82%BE%E3%83%BC%E3%83%B3%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B" class="hash-link" aria-label="手順2: Route53でパブリックホストゾーンを作成する への直接リンク" title="手順2: Route53でパブリックホストゾーンを作成する への直接リンク" translate="no">​</a></h2>
<p>AWSマネジメントコンソールでRoute53の管理画面を開き、パブリックホストゾーンを作成します。ホストゾーン名には実際のドメイン名（例: <code>example.dev</code>）を入力します。</p>
<p>パブリックホストゾーンを作成すると、以下の2つのDNSレコードが自動で作成されます。</p>
<table><thead><tr><th>レコードタイプ</th><th>説明</th></tr></thead><tbody><tr><td><strong>NS（Name Server）</strong></td><td>このドメインのDNSクエリを処理するネームサーバーを示すレコード。Route53から割り当てられた4つのネームサーバーが設定される</td></tr><tr><td><strong>SOA（Start of Authority）</strong></td><td>ドメインゾーンの権威情報（プライマリネームサーバー、管理者情報、シリアル番号、リフレッシュ間隔など）を示すレコード</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>自動作成されたレコードについて</div><div class="admonitionContent_BuS1"><p>NSレコードとSOAレコードはホストゾーンの運用に不可欠なレコードです。これらを削除・変更するとドメインの名前解決が正常に機能しなくなるため、原則として変更は行いません。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="手順3-dnsレコードをroute53に移植する">手順3: DNSレコードをRoute53に移植する<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#%E6%89%8B%E9%A0%863-dns%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92route53%E3%81%AB%E7%A7%BB%E6%A4%8D%E3%81%99%E3%82%8B" class="hash-link" aria-label="手順3: DNSレコードをRoute53に移植する への直接リンク" title="手順3: DNSレコードをRoute53に移植する への直接リンク" translate="no">​</a></h2>
<p>移行元プロバイダで設定されているDNSレコードを、Route53のパブリックホストゾーンに移植します。レコード名、レコードタイプ、値を移行元と一致させます。</p>
<p>この作業を事前に行うことで、後のネームサーバー切り替え時にダウンタイムを発生させずに移行を進めることができます。</p>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>プロバイダ間の表記差異</div><div class="admonitionContent_BuS1"><p>移行元のプロバイダによっては、DNSレコードの設定画面の表記や入力形式が異なる場合があります。</p><ul>
<li class=""><strong>MXレコード</strong>: Route53では優先度と値を<code>10 smtp.example.com</code>の形式でまとめて入力する（プロバイダによっては優先度と値が別フィールドの場合がある）</li>
<li class=""><strong>レコード名の末尾のドット</strong>: Route53ではFQDNの末尾にドット（<code>.</code>）が付く場合がある</li>
<li class=""><strong>TTL</strong>: 移行元と同じTTL値を設定することが推奨される</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="手順4-ネームサーバーを変更する">手順4: ネームサーバーを変更する<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#%E6%89%8B%E9%A0%864-%E3%83%8D%E3%83%BC%E3%83%A0%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B" class="hash-link" aria-label="手順4: ネームサーバーを変更する への直接リンク" title="手順4: ネームサーバーを変更する への直接リンク" translate="no">​</a></h2>
<p>Route53のパブリックホストゾーンに表示されているNSレコードから、割り当てられた4つのネームサーバー名を確認します。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">ns-xxx.awsdns-yy.com</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">ns-xxx.awsdns-yy.net</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">ns-xxx.awsdns-yy.org</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">ns-xxx.awsdns-yy.co.uk</span><br></span></code></pre></div></div>
<p>この4つのネームサーバー名を、移行元プロバイダの管理画面でカスタムネームサーバーとして設定します。</p>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>ネームサーバー名の入力形式</div><div class="admonitionContent_BuS1"><p>Route53のNSレコードではネームサーバー名の末尾にドット（<code>.</code>）が表示されますが、移行元プロバイダに入力する際は末尾のドットを除いた値（例: <code>ns-xxx.awsdns-yy.com</code>）を使用します。プロバイダによっては末尾のドットを含むとエラーになる場合があります。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="手順5-dns伝播を確認する">手順5: DNS伝播を確認する<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#%E6%89%8B%E9%A0%865-dns%E4%BC%9D%E6%92%AD%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B" class="hash-link" aria-label="手順5: DNS伝播を確認する への直接リンク" title="手順5: DNS伝播を確認する への直接リンク" translate="no">​</a></h2>
<p>ネームサーバーの変更は、世界中のDNSリゾルバにキャッシュされた旧ネームサーバー情報が更新されるまでに最大48時間程度かかる場合があります。</p>
<p>次のコマンドで、ドメインに設定されているネームサーバーを確認できます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">nslookup</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-type</span><span class="token operator">=</span><span class="token plain">NS example.dev</span><br></span></code></pre></div></div>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">dig</span><span class="token plain"> example.dev NS</span><br></span></code></pre></div></div>
<p>特定のDNSサーバーを指定して確認する場合は、以下のようにします。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">dig</span><span class="token plain"> example.dev NS @8.8.8.8</span><br></span></code></pre></div></div>
<p>出力にRoute53のネームサーバー名（<code>ns-xxx.awsdns-yy.com</code>など）が表示されていれば、ネームサーバーの切り替えが反映されています。旧ネームサーバー名が表示される場合は、伝播が完了するまで待機します。</p>
<p>伝播の完了後、以下の項目を確認します。</p>
<ul>
<li class="">Webサイトが正常に表示されるか</li>
<li class="">メールの送受信が正常に行えるか（MXレコードを使用している場合）</li>
<li class="">その他のサブドメインやサービスが正常に動作しているか</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="route53の料金">Route53の料金<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#route53%E3%81%AE%E6%96%99%E9%87%91" class="hash-link" aria-label="Route53の料金 への直接リンク" title="Route53の料金 への直接リンク" translate="no">​</a></h2>
<p>Route53のDNSホスティングには料金が発生します。詳細は<a href="https://aws.amazon.com/jp/route53/pricing/" target="_blank" rel="noopener noreferrer" class="">Route53の料金ページ</a>を参照してください。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、Amazon Route53でドメイン登録がサポートされていないTLD（<code>.dev</code>など）のドメインを、Route53でDNSホスティングする方法を解説しました。Route53ではドメイン登録とDNSホスティングは独立した機能であり、ドメイン登録未対応のTLDであってもパブリックホストゾーンを作成してDNSの名前解決を行うことが可能です。移行時にはDNSレコードの事前移植とネームサーバーの切り替えを段階的に行うことで、ダウンタイムを最小限に抑えた移行が実現できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/" target="_blank" rel="noopener noreferrer" class="">Amazon Route53 公式ドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar-tld-list.html" target="_blank" rel="noopener noreferrer" class="">Route53でドメイン登録に対応しているTLD一覧</a></li>
<li class=""><a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/SOA-NSrecords.html" target="_blank" rel="noopener noreferrer" class="">Route53のNSレコードとSOAレコード</a></li>
<li class=""><a href="https://aws.amazon.com/jp/route53/pricing/" target="_blank" rel="noopener noreferrer" class="">Amazon Route53 料金</a></li>
</ul>
<!-- -->
<section data-footnotes="true" class="footnotes"><h2 class="anchor anchorTargetStickyNavbar_Vzrq sr-only" id="footnote-label">Footnotes<a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#footnote-label" class="hash-link" aria-label="Footnotes への直接リンク" title="Footnotes への直接リンク" translate="no">​</a></h2>
<ol>
<li class="anchorTargetStickyNavbar_Vzrq" id="user-content-fn-1-8135e4">
<p>Route53のALIASレコード以外にも、CNAME Flattening（ANAME）に対応したDNSプロバイダを使用する方法もあります。ただし、AWS環境で統一的に管理する場合はRoute53のALIASレコードが推奨されます。 <a href="https://blog.shinyakato.dev/blog/route53-unsupported-tld-dns-hosting-f50966db#user-content-fnref-1-8135e4" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="Amazon Route53" term="Amazon Route53"/>
        <category label="DNS" term="DNS"/>
        <category label="network" term="network"/>
        <category label="cloud" term="cloud"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AWS CLIでIAMユーザーのプロファイルを設定する - 認証情報の管理と操作方法]]></title>
        <id>https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33</id>
        <link href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33"/>
        <updated>2026-03-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWS CLIでIAMユーザーのプロファイルを設定する方法について解説します。以前の記事ではAWS CLIの導入方法を紹介しましたが、今回はAWS CLIを使用する際に必要となるIAMユーザーの認証情報の設定方法と操作方法について整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWS CLIでIAMユーザーのプロファイルを設定する方法について解説します。<a class="" href="https://blog.shinyakato.dev/blog/aws-cli-install-homebrew-bba87303">以前の記事</a>ではAWS CLIの導入方法を紹介しましたが、今回はAWS CLIを使用する際に必要となるIAMユーザーの認証情報の設定方法と操作方法について整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">AWS CLIでプロファイルを設定する方法を知りたい人</li>
<li class="">複数のIAMユーザーを使い分けたい人</li>
<li class="">AWS CLIの認証情報の管理方法について学びたい人</li>
<li class="">AWSの認証情報を安全に取り扱いたい人</li>
</ul></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>前提となる記事</div><div class="admonitionContent_BuS1"><p>この記事では、AWS CLIがインストール済みであることを前提としています。まだインストールしていない場合は、以下の記事を参照してください。</p><ul>
<li class=""><a class="" href="https://blog.shinyakato.dev/blog/aws-cli-install-homebrew-bba87303">HomebrewでAWS CLIをインストールする - AWSサービスをコマンドラインから操作する</a></li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プロファイルとは">プロファイルとは<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A8%E3%81%AF" class="hash-link" aria-label="プロファイルとは への直接リンク" title="プロファイルとは への直接リンク" translate="no">​</a></h2>
<p>プロファイルは、CLIやアプリケーションからAWSのサービスを利用する際に使用するIAMユーザーの認証情報を保管・使用するための仕組みです。プロファイルを使用することでIAMユーザーの認証情報をコードにハードコーディングする必要がなくなり、安全な開発と運用を行うことができます。</p>
<p>プロファイルはIAMユーザーに応じて複数作成でき、用途に合わせて任意に切り替えることが可能です。</p>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>認証情報の取り扱いについて</div><div class="admonitionContent_BuS1"><p>プロファイルの設定にはIAMユーザーの<strong>アクセスキー</strong>と<strong>シークレットアクセスキー</strong>が必要です。これらは認証情報であるため取り扱いに注意し、保管場所に気をつける必要があります。Bitwardenなどのパスワードマネージャーでの管理が推奨されます。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="前提条件">前提条件<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6" class="hash-link" aria-label="前提条件 への直接リンク" title="前提条件 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">AWS CLIがインストール済みであること</li>
<li class="">IAMユーザーが作成済みであること</li>
<li class="">IAMユーザーのアクセスキーとシークレットアクセスキーを取得済みであること</li>
</ul>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>IAMユーザーについて</div><div class="admonitionContent_BuS1"><p>AWS CLIを使用する際には、必要最小限の操作権限がアタッチされたIAMユーザーを使用することが推奨されます。IAMユーザーの作成方法については、<a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html" target="_blank" rel="noopener noreferrer" class="">AWS公式ドキュメント</a>を参照してください。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プロファイルの構造">プロファイルの構造<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%A7%8B%E9%80%A0" class="hash-link" aria-label="プロファイルの構造 への直接リンク" title="プロファイルの構造 への直接リンク" translate="no">​</a></h2>
<p>プロファイル情報は<code>~/.aws</code>ディレクトリに保存されます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">~/.aws/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── config        </span><span class="token comment" style="color:rgb(98, 114, 164)"># リージョンや出力形式の設定</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└── credentials   </span><span class="token comment" style="color:rgb(98, 114, 164)"># アクセスキーとシークレットアクセスキー</span><br></span></code></pre></div></div>
<p>この2つのファイルが、プロファイル作成時に指定した名前で関連付けられています。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="config">config<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#config" class="hash-link" aria-label="config への直接リンク" title="config への直接リンク" translate="no">​</a></h3>
<p><code>config</code>にはIAMユーザーが存在するリージョンの情報や、CLIの実行結果の出力形式が保存されています。</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">~/.aws/config</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">region = ap-northeast-1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">output = json</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[profile my-project]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">region = ap-northeast-1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">output = json</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="credentials">credentials<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#credentials" class="hash-link" aria-label="credentials への直接リンク" title="credentials への直接リンク" translate="no">​</a></h3>
<p><code>credentials</code>にはIAMユーザーのアクセスキーとシークレットアクセスキーのペアが保存されています。</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">~/.aws/credentials</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">[default]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws_access_key_id = xxx</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws_secret_access_key = yyy</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[my-project]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws_access_key_id = xxx</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws_secret_access_key = zzz</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>認証情報の保護</div><div class="admonitionContent_BuS1"><p><code>credentials</code>ファイルにはIAMユーザーの認証情報が平文で保存されています。このファイルをGitリポジトリにコミットしたり、他者と共有したりしないように注意が必要です。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="デフォルトプロファイルの作成">デフォルトプロファイルの作成<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90" class="hash-link" aria-label="デフォルトプロファイルの作成 への直接リンク" title="デフォルトプロファイルの作成 への直接リンク" translate="no">​</a></h2>
<p>デフォルトプロファイルは、特定のプロファイルを指定しない場合にすべてのCLI操作で使用される共通プロファイルです。デフォルトプロファイルは1つのみ作成可能で、2回目以降の実行では上書きされます。</p>
<p>以下のコマンドで対話形式で作成できます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws configure</span><br></span></code></pre></div></div>
<p>対話形式でIAMユーザーの認証情報を入力します。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">AWS Access Key ID [None]: IAMユーザーのアクセスキー</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">AWS Secret Access Key [None]: IAMユーザーのシークレットアクセスキー</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Default region name [None]: ap-northeast-1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Default output format [None]: json</span><br></span></code></pre></div></div>
<p>以下のコマンドでデフォルトプロファイルの設定値を確認できます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws configure list</span><br></span></code></pre></div></div>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">      Name                    Value             Type    Location</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      ----                    -----             ----    --------</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">   profile                &lt;not set&gt;             None    None</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">access_key     ******************* shared-credentials-file</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">secret_key     ******************* shared-credentials-file</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    region           ap-northeast-1      config-file    ~/.aws/config</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="名前付きプロファイルの作成">名前付きプロファイルの作成<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#%E5%90%8D%E5%89%8D%E4%BB%98%E3%81%8D%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90" class="hash-link" aria-label="名前付きプロファイルの作成 への直接リンク" title="名前付きプロファイルの作成 への直接リンク" translate="no">​</a></h2>
<p>デフォルトプロファイルは1つしか作成できないため、複数のIAMユーザーを使い分ける場合は不便です。名前付きプロファイルを作成することで、IAMユーザーの役割ごとにプロファイルを管理できます。</p>
<p>以下のコマンドで、<code>--profile</code>オプションに任意のプロファイル名を指定して作成します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws configure </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--profile</span><span class="token plain"> my-project</span><br></span></code></pre></div></div>
<p>デフォルトプロファイルと同様に、対話形式でIAMユーザーの認証情報を入力します。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">AWS Access Key ID [None]: IAMユーザーのアクセスキー</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">AWS Secret Access Key [None]: IAMユーザーのシークレットアクセスキー</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Default region name [None]: ap-northeast-1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Default output format [None]: json</span><br></span></code></pre></div></div>
<p>以下のコマンドで名前付きプロファイルの設定値を確認できます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws configure list </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--profile</span><span class="token plain"> my-project</span><br></span></code></pre></div></div>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">      Name                    Value             Type    Location</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      ----                    -----             ----    --------</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">   profile               my-project           manual    --profile</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">access_key     ******************* shared-credentials-file</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">secret_key     ******************* shared-credentials-file</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    region           ap-northeast-1      config-file    ~/.aws/config</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プロファイルの特定項目を更新">プロファイルの特定項目を更新<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%89%B9%E5%AE%9A%E9%A0%85%E7%9B%AE%E3%82%92%E6%9B%B4%E6%96%B0" class="hash-link" aria-label="プロファイルの特定項目を更新 への直接リンク" title="プロファイルの特定項目を更新 への直接リンク" translate="no">​</a></h2>
<p>プロファイルの設定値を更新する場合は、<code>~/.aws</code>配下のファイルを直接編集するのではなく、CLIから<code>aws configure set</code>コマンドで更新します。</p>
<p>デフォルトプロファイルの場合は以下の通りです。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws configure </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">set</span><span class="token plain"> region ap-northeast-1</span><br></span></code></pre></div></div>
<p>名前付きプロファイルの場合は<code>--profile</code>オプションを指定します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws configure </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">set</span><span class="token plain"> region ap-northeast-1 </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--profile</span><span class="token plain"> my-project</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="csv形式での一括インポート">CSV形式での一括インポート<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#csv%E5%BD%A2%E5%BC%8F%E3%81%A7%E3%81%AE%E4%B8%80%E6%8B%AC%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88" class="hash-link" aria-label="CSV形式での一括インポート への直接リンク" title="CSV形式での一括インポート への直接リンク" translate="no">​</a></h2>
<p>AWSマネジメントコンソールからダウンロードしたCSV形式のIAM認証情報を、以下のコマンドで一括インポートできます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">aws configure </span><span class="token function" style="color:rgb(80, 250, 123)">import</span><span class="token plain"> </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--csv</span><span class="token plain"> file://credentials.csv</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>CSVファイルの形式</div><div class="admonitionContent_BuS1"><p>インポートするCSVファイルは、IAMユーザー作成時にダウンロードできるアクセスキーのCSVファイルの形式に準拠している必要があります。詳細は<a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods" target="_blank" rel="noopener noreferrer" class="">AWS公式ドキュメント</a>を参照してください。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/aws-cli-profile-setup-guide-de29cb33#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、AWS CLIでIAMユーザーのプロファイルを設定する方法について解説しました。プロファイルは認証情報をコードから分離して管理するための仕組みであり、デフォルトプロファイルと名前付きプロファイルを使い分けることで、複数のIAMユーザーを用途に応じて切り替えることが可能です。<code>config</code>と<code>credentials</code>の2つのファイルで構成され、CLIコマンドを通じて安全に管理できます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html" target="_blank" rel="noopener noreferrer" class="">AWS CLI の設定と認証情報ファイルの設定</a></li>
<li class=""><a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html" target="_blank" rel="noopener noreferrer" class="">IAM ユーザーの作成</a></li>
<li class=""><a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html" target="_blank" rel="noopener noreferrer" class="">AWS CLI の名前付きプロファイル</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="CLI" term="CLI"/>
        <category label="IAM" term="IAM"/>
        <category label="security" term="security"/>
        <category label="macOS" term="macOS"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[クラウドにおけるElasticとスケーリングの基礎 - 垂直スケーリングと水平スケーリング]]></title>
        <id>https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd</id>
        <link href="https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd"/>
        <updated>2026-03-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、Amazon EC2やElastic Load Balancingのサービス名にも使われている「Elastic（伸縮性）」の概念と、クラウドにおけるスケーリングの仕組みについて整理します。AWSに限らず、クラウドコンピューティングの根幹となる考え方です。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、<a href="https://aws.amazon.com/ec2/" target="_blank" rel="noopener noreferrer" class="">Amazon EC2</a>や<a href="https://aws.amazon.com/elasticloadbalancing/" target="_blank" rel="noopener noreferrer" class="">Elastic Load Balancing</a>のサービス名にも使われている「Elastic（伸縮性）」の概念と、クラウドにおけるスケーリングの仕組みについて整理します。AWSに限らず、クラウドコンピューティングの根幹となる考え方です。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">クラウドにおけるElasticの概念を理解したい人</li>
<li class="">垂直スケーリングと水平スケーリングの違いを知りたい人</li>
<li class="">Amazon EC2のオートスケーリングの仕組みに興味がある人</li>
<li class="">AWSのインフラ構成を学び始めた人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="elasticとは">Elasticとは<a href="https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd#elastic%E3%81%A8%E3%81%AF" class="hash-link" aria-label="Elasticとは への直接リンク" title="Elasticとは への直接リンク" translate="no">​</a></h2>
<p>Elasticは「伸縮性」を意味する言葉で、クラウドコンピューティングにおいてはリソースを需要に応じて柔軟に拡大・縮小できる特性を表します。Amazon EC2の「E」（Elastic Compute Cloud）やElastic Load Balancingの「Elastic」は、この特性に由来しています。</p>
<p>Elasticはスケーリングを包括する概念であり、Elasticという特性の下でスケーリングが実行されます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="スケーリングとは">スケーリングとは<a href="https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd#%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%A8%E3%81%AF" class="hash-link" aria-label="スケーリングとは への直接リンク" title="スケーリングとは への直接リンク" translate="no">​</a></h2>
<p>スケーリングとは、サービスの需要に応じてコンピューティングリソースの規模を調整することです。需要が増加した場合にはメモリの増強やノード数の追加を行い、需要が減少した場合には不要なリソースを削減します。</p>
<p>オンプレミス環境ではこれらのスケーリングをすべて手動で行う必要がありますが、EC2のようなクラウドの仮想サーバーには<a href="https://aws.amazon.com/autoscaling/" target="_blank" rel="noopener noreferrer" class="">オートスケーリング</a>の仕組みが組み込まれており、需要に応じて自動的にスケーリングが実行されます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="elasticとスケーリングの関係">Elasticとスケーリングの関係<a href="https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd#elastic%E3%81%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E9%96%A2%E4%BF%82" class="hash-link" aria-label="Elasticとスケーリングの関係 への直接リンク" title="Elasticとスケーリングの関係 への直接リンク" translate="no">​</a></h2>
<p>Elasticの概念とスケーリングの種類の関係を以下の図に示します。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="スケーリングの種類">スケーリングの種類<a href="https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd#%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E7%A8%AE%E9%A1%9E" class="hash-link" aria-label="スケーリングの種類 への直接リンク" title="スケーリングの種類 への直接リンク" translate="no">​</a></h2>
<p>スケーリングには大きく分けて<strong>垂直スケーリング</strong>と<strong>水平スケーリング</strong>の2種類があります。</p>
<table><thead><tr><th>種類</th><th>操作</th><th>内容</th><th>EC2でのオートスケーリング</th></tr></thead><tbody><tr><td><strong>垂直スケーリング</strong></td><td>スケールアップ / スケールダウン</td><td>サーバー1台のスペックを変更</td><td>対象外（手動で実施）</td></tr><tr><td><strong>水平スケーリング</strong></td><td>スケールアウト / スケールイン</td><td>サーバーの台数を増減</td><td>対象（自動で実施）</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="垂直スケーリングスケールアップ--スケールダウン">垂直スケーリング（スケールアップ / スケールダウン）<a href="https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd#%E5%9E%82%E7%9B%B4%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97--%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%83%80%E3%82%A6%E3%83%B3" class="hash-link" aria-label="垂直スケーリング（スケールアップ / スケールダウン） への直接リンク" title="垂直スケーリング（スケールアップ / スケールダウン） への直接リンク" translate="no">​</a></h3>
<p>垂直スケーリングは、サーバーのCPU、メモリ、ストレージなどのスペックを調整する方法です。</p>
<!-- -->
<p>スケールアップでは増強した分だけサーバーの処理能力が向上します。しかし、サーバー1台あたりのリソース増強には物理的な限界があるため、大規模な需要の増加には対応しきれない場合があります。そのような場合は、水平スケーリングが重要になります。</p>
<p>EC2におけるオートスケーリングでは、垂直スケーリングは自動化の対象外です。ユーザーが必要に応じて<a href="https://aws.amazon.com/ec2/instance-types/" target="_blank" rel="noopener noreferrer" class="">EC2インスタンスタイプ</a>を変更することで対応します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="水平スケーリングスケールアウト--スケールイン">水平スケーリング（スケールアウト / スケールイン）<a href="https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd#%E6%B0%B4%E5%B9%B3%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%82%A2%E3%82%A6%E3%83%88--%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%82%A4%E3%83%B3" class="hash-link" aria-label="水平スケーリング（スケールアウト / スケールイン） への直接リンク" title="水平スケーリング（スケールアウト / スケールイン） への直接リンク" translate="no">​</a></h3>
<p>水平スケーリングは、需要の増減に応じてEC2インスタンスの稼働数を調整する方法です。EC2インスタンスをノードとして捉え、ノード数を増減させるとも表現できます。</p>
<!-- -->
<p>水平スケーリングは<a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html" target="_blank" rel="noopener noreferrer" class="">EC2 Auto Scaling</a>による自動化の対象です。例えば、稼働中のEC2インスタンスに急激な需要の増加があった場合、デフォルトまたはユーザーが事前に設定した条件に基づいて、自動的に必要な数のEC2インスタンスが追加・起動されます。これにより、ECサイトの繁忙期のような急激なトラフィック増加にも対応できます。逆に需要が減少した場合は、不要になったEC2インスタンスが自動的に停止されます。</p>
<p>こうしたEC2インスタンスの増減に伴うトラフィックを適切に分散し最適化するために、<a href="https://aws.amazon.com/elasticloadbalancing/" target="_blank" rel="noopener noreferrer" class="">Elastic Load Balancing（ELB）</a>が使用されます。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>垂直スケーリングと水平スケーリングの使い分け</div><div class="admonitionContent_BuS1"><p>垂直スケーリングは手軽に対応できる反面、1台のサーバーの性能には上限があります。一方、水平スケーリングは台数の追加で対応するため、理論上の上限が高く大規模なトラフィック増加にも対応可能です。クラウド環境では、オートスケーリングによって自動化できる水平スケーリングが主要なスケーリング戦略として採用されます。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/elastic-scaling-cloud-guide-d51d1afd#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、クラウドコンピューティングにおけるElastic（伸縮性）の概念と、スケーリングの2つの種類について整理しました。Elasticは需要に応じてリソースを柔軟に拡大・縮小できる特性であり、その下で垂直スケーリング（スペックの変更）と水平スケーリング（台数の増減）が実行されます。EC2のオートスケーリングでは水平スケーリングが自動化の対象であり、ELBと連携することでトラフィックの分散と最適化が実現されます。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://aws.amazon.com/ec2/" target="_blank" rel="noopener noreferrer" class="">Amazon EC2</a></li>
<li class=""><a href="https://aws.amazon.com/elasticloadbalancing/" target="_blank" rel="noopener noreferrer" class="">Elastic Load Balancing</a></li>
<li class=""><a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html" target="_blank" rel="noopener noreferrer" class="">Amazon EC2 Auto Scaling</a></li>
<li class=""><a href="https://aws.amazon.com/ec2/instance-types/" target="_blank" rel="noopener noreferrer" class="">Amazon EC2 Instance Types</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="Amazon EC2" term="Amazon EC2"/>
        <category label="Elastic Load Balancing" term="Elastic Load Balancing"/>
        <category label="cloud" term="cloud"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Elastic Load Balancingの仕組み - Amazon EC2と連携したトラフィック分散]]></title>
        <id>https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d</id>
        <link href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d"/>
        <updated>2026-02-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[この記事では、AWSのElastic Load Balancing（ELB）について解説します。Amazon EC2を学んでいると必ず登場するサービスですが、EC2そのものに比べると解説される機会が少ない印象があります。ELBの基本的な仕組み、ロードバランサーの種類、ルーティングアルゴリズム、そしてEC2 Auto Scalingとの連携について整理します。]]></summary>
        <content type="html"><![CDATA[<p>この記事では、AWSの<a href="https://aws.amazon.com/elasticloadbalancing/" target="_blank" rel="noopener noreferrer" class="">Elastic Load Balancing（ELB）</a>について解説します。Amazon EC2を学んでいると必ず登場するサービスですが、EC2そのものに比べると解説される機会が少ない印象があります。ELBの基本的な仕組み、ロードバランサーの種類、ルーティングアルゴリズム、そしてEC2 Auto Scalingとの連携について整理します。</p>
<!-- -->
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>この記事はこんな人にオススメ</div><div class="admonitionContent_BuS1"><ul>
<li class="">Amazon EC2を学んでいてELBの役割を理解したい人</li>
<li class="">ロードバランサーの基本的な仕組みに興味がある人</li>
<li class="">EC2 Auto Scalingとトラフィック分散の関係を知りたい人</li>
<li class="">AWSのインフラ構成を学び始めた人</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="elastic-load-balancingelbとは">Elastic Load Balancing（ELB）とは<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#elastic-load-balancingelb%E3%81%A8%E3%81%AF" class="hash-link" aria-label="Elastic Load Balancing（ELB）とは への直接リンク" title="Elastic Load Balancing（ELB）とは への直接リンク" translate="no">​</a></h2>
<p>Elastic Load Balancing（ELB）は、受信したアプリケーショントラフィックを複数のターゲット（EC2インスタンス、コンテナ、IPアドレスなど）に自動的に分散する<a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html" target="_blank" rel="noopener noreferrer" class="">AWSのロードバランシングサービス</a>です。1つまたは複数のアベイラビリティゾーン（AZ）にまたがってトラフィックを分散し、アプリケーションの可用性と耐障害性を向上させます。</p>
<p>ELBの主な役割は以下の通りです。</p>
<ul>
<li class=""><strong>トラフィック分散</strong>: 受信リクエストを複数のターゲットに均等に分配し、特定のインスタンスへの負荷集中を防ぐ</li>
<li class=""><strong>ヘルスチェック</strong>: ターゲットの稼働状態を定期的に監視し、正常なターゲットにのみトラフィックをルーティングする</li>
<li class=""><strong>SSL/TLS終端</strong>: <a href="https://aws.amazon.com/certificate-manager/" target="_blank" rel="noopener noreferrer" class="">AWS Certificate Manager（ACM）</a>と連携し、HTTPS接続の暗号化・復号処理をロードバランサー側で実行する</li>
<li class=""><strong>高可用性</strong>: 複数のAZにまたがる構成により、特定のAZに障害が発生した場合でも他のAZにトラフィックを振り分ける</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ec2と組み合わせるメリット">EC2と組み合わせるメリット<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#ec2%E3%81%A8%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88" class="hash-link" aria-label="EC2と組み合わせるメリット への直接リンク" title="EC2と組み合わせるメリット への直接リンク" translate="no">​</a></h2>
<p>Amazon EC2を使用したシステムでは、ELBを組み合わせることでコンピューティングリソースを効率的に活用できます。</p>
<p>例えば、時間帯によって混雑具合が異なるレストランの予約システムを考えます。このシステムではAmazon EC2上でバックエンドサーバーを運用し、フロントエンドとバックエンドの間にELBを配置しています。</p>
<!-- -->
<p>昼の時間帯は他の時間帯よりもアクセスが集中するため、EC2 Auto Scalingによってインスタンス数が増加します。このとき、ELBはオートスケールで追加されたインスタンスを自動的にルーティング対象に組み込み、トラフィックを最適に分散します。</p>
<!-- -->
<p>ELBがない場合、オートスケールで追加されたEC2インスタンスにトラフィックが適切に振り分けられず、新しいインスタンスがアイドル状態のまま放置されたり、既存のインスタンスが過負荷状態になる可能性があります。ELBはこの問題を解決し、フロントエンド層とバックエンド層を疎結合に保ちながら、トラフィックの同期を最適化します。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>EC2 Auto Scalingとの自動連携</div><div class="admonitionContent_BuS1"><p><a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html" target="_blank" rel="noopener noreferrer" class="">AWS公式ドキュメント</a>によると、Auto Scalingによって起動されたインスタンスはロードバランサーに<strong>自動的に登録</strong>され、終了されたインスタンスは<strong>自動的に登録解除</strong>されます。手動でのインスタンス登録・解除は不要です。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ロードバランサーの種類">ロードバランサーの種類<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#%E3%83%AD%E3%83%BC%E3%83%89%E3%83%90%E3%83%A9%E3%83%B3%E3%82%B5%E3%83%BC%E3%81%AE%E7%A8%AE%E9%A1%9E" class="hash-link" aria-label="ロードバランサーの種類 への直接リンク" title="ロードバランサーの種類 への直接リンク" translate="no">​</a></h2>
<p>ELBには4種類のロードバランサーがあり、ユースケースに応じて選択します。</p>
<table><thead><tr><th>種類</th><th>レイヤー</th><th>主なユースケース</th><th>対応プロトコル</th></tr></thead><tbody><tr><td><strong><a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/application/" target="_blank" rel="noopener noreferrer" class="">Application Load Balancer（ALB）</a></strong></td><td>L7（アプリケーション層）</td><td>HTTP/HTTPSベースのWebアプリケーション</td><td>HTTP, HTTPS</td></tr><tr><td><strong><a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/" target="_blank" rel="noopener noreferrer" class="">Network Load Balancer（NLB）</a></strong></td><td>L4（トランスポート層）</td><td>高パフォーマンスが求められるTCP/UDP通信</td><td>TCP, UDP, TLS</td></tr><tr><td><strong><a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/" target="_blank" rel="noopener noreferrer" class="">Gateway Load Balancer（GLB）</a></strong></td><td>L3（ネットワーク層）</td><td>サードパーティ製仮想アプライアンスの展開</td><td>IP</td></tr><tr><td><strong><a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/" target="_blank" rel="noopener noreferrer" class="">Classic Load Balancer（CLB）</a></strong></td><td>L4/L7</td><td>レガシーワークロード（前世代）</td><td>HTTP, HTTPS, TCP, SSL</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Classic Load Balancerについて</div><div class="admonitionContent_BuS1"><p>Classic Load Balancer（CLB）は前世代のロードバランサーです。AWSはCLBから現行世代のロードバランサー（ALB、NLB、GLB）への<a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/migrate-classic-load-balancer.html" target="_blank" rel="noopener noreferrer" class="">移行を推奨</a>しています。新規構築ではALBまたはNLBの使用を検討できます。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="albとnlbの使い分け">ALBとNLBの使い分け<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#alb%E3%81%A8nlb%E3%81%AE%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91" class="hash-link" aria-label="ALBとNLBの使い分け への直接リンク" title="ALBとNLBの使い分け への直接リンク" translate="no">​</a></h3>
<p>一般的なWebアプリケーションでは<strong>ALB</strong>が適しています。ALBはHTTPヘッダー、パスパターン、ホスト名などに基づく高度なルーティングルールを設定でき、マイクロサービスやコンテナベースのアプリケーションに対応しています。</p>
<p>一方、ゲームサーバーやIoTデバイスとの通信のように、低レイテンシかつ高スループットが求められるケースでは<strong>NLB</strong>が有効です。NLBは毎秒数百万リクエストの処理に対応し、固定IPアドレスの割り当ても可能です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ルーティングアルゴリズム">ルーティングアルゴリズム<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0" class="hash-link" aria-label="ルーティングアルゴリズム への直接リンク" title="ルーティングアルゴリズム への直接リンク" translate="no">​</a></h2>
<p>ELBのトラフィック分散は、ロードバランサーの種類ごとに異なるルーティングアルゴリズムで動作します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="albのルーティング">ALBのルーティング<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#alb%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0" class="hash-link" aria-label="ALBのルーティング への直接リンク" title="ALBのルーティング への直接リンク" translate="no">​</a></h3>
<p>ALBでは、以下のルーティングアルゴリズムが利用できます。</p>
<table><thead><tr><th>アルゴリズム</th><th>説明</th></tr></thead><tbody><tr><td><strong>ラウンドロビン</strong>（デフォルト）</td><td>登録されたターゲットに順番にリクエストを振り分ける</td></tr><tr><td><strong>最小未処理リクエスト</strong></td><td>処理中のリクエスト数が最も少ないターゲットにルーティングする</td></tr></tbody></table>
<p>ラウンドロビンはリクエストを均等に分配するシンプルな方式です。ターゲットの処理能力が均一な場合に有効です。一方、最小未処理リクエスト（Least Outstanding Requests）は、各ターゲットの負荷状況を考慮して振り分けるため、処理時間にばらつきがあるアプリケーションで効果的です。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="nlbのルーティング">NLBのルーティング<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#nlb%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0" class="hash-link" aria-label="NLBのルーティング への直接リンク" title="NLBのルーティング への直接リンク" translate="no">​</a></h3>
<p>NLBでは<strong>フローハッシュアルゴリズム</strong>を使用します。プロトコル、送信元/送信先IPアドレス、送信元/送信先ポート、TCPシーケンス番号をもとにハッシュ値を算出し、ターゲットを決定します。同一の接続元からのリクエストは同じターゲットにルーティングされるため、セッションの一貫性を保つことができます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="clbのルーティング">CLBのルーティング<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#clb%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0" class="hash-link" aria-label="CLBのルーティング への直接リンク" title="CLBのルーティング への直接リンク" translate="no">​</a></h3>
<p>CLBでは、プロトコルに応じて異なるアルゴリズムが適用されます。</p>
<ul>
<li class=""><strong>HTTP/HTTPS</strong>: ラウンドロビン</li>
<li class=""><strong>TCP</strong>: 最小接続数（Least Connections）</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="elbの主要コンポーネント">ELBの主要コンポーネント<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#elb%E3%81%AE%E4%B8%BB%E8%A6%81%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88" class="hash-link" aria-label="ELBの主要コンポーネント への直接リンク" title="ELBの主要コンポーネント への直接リンク" translate="no">​</a></h2>
<p>ELBは以下の3つの主要コンポーネントで構成されています。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="リスナー">リスナー<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#%E3%83%AA%E3%82%B9%E3%83%8A%E3%83%BC" class="hash-link" aria-label="リスナー への直接リンク" title="リスナー への直接リンク" translate="no">​</a></h3>
<p>リスナーは、設定されたプロトコルとポートで接続リクエストを受け付けるプロセスです。例えば、ポート443でHTTPSリクエストを受け付け、定義されたルールに基づいてターゲットグループにルーティングします。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ターゲットグループ">ターゲットグループ<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#%E3%82%BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97" class="hash-link" aria-label="ターゲットグループ への直接リンク" title="ターゲットグループ への直接リンク" translate="no">​</a></h3>
<p>ターゲットグループは、リクエストのルーティング先となるターゲット（EC2インスタンス、コンテナ、IPアドレスなど）の論理的なグループです。ルーティングアルゴリズムやヘルスチェックはターゲットグループ単位で設定します。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ヘルスチェック">ヘルスチェック<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#%E3%83%98%E3%83%AB%E3%82%B9%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF" class="hash-link" aria-label="ヘルスチェック への直接リンク" title="ヘルスチェック への直接リンク" translate="no">​</a></h3>
<p>ヘルスチェックは、ターゲットの稼働状態を定期的に確認する仕組みです。HTTP GETリクエストやTCPの接続確認などで応答をチェックし、正常なターゲットにのみトラフィックをルーティングします。異常と判定されたターゲットはルーティング対象から自動的に除外されます。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="まとめ">まとめ<a href="https://blog.shinyakato.dev/blog/elb-ec2-load-balancing-guide-d716fa3d#%E3%81%BE%E3%81%A8%E3%82%81" class="hash-link" aria-label="まとめ への直接リンク" title="まとめ への直接リンク" translate="no">​</a></h2>
<p>この記事では、AWSのElastic Load Balancing（ELB）について、基本的な仕組みからロードバランサーの種類、ルーティングアルゴリズム、EC2 Auto Scalingとの連携までを解説しました。ELBはEC2ベースのシステムにおいてトラフィックの最適な分散を実現し、アプリケーションの可用性とリソース効率の向上に寄与するサービスです。ALB、NLB、GLBの3種類の現行ロードバランサーから、ユースケースに応じた選択が可能です。</p>
<hr>
<p><strong>参考リンク</strong>:</p>
<ul>
<li class=""><a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html" target="_blank" rel="noopener noreferrer" class="">Elastic Load Balancing公式ドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/application/" target="_blank" rel="noopener noreferrer" class="">Application Load Balancerドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/" target="_blank" rel="noopener noreferrer" class="">Network Load Balancerドキュメント</a></li>
<li class=""><a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html" target="_blank" rel="noopener noreferrer" class="">EC2 Auto Scaling</a></li>
</ul>]]></content>
        <author>
            <name>Shinya Kato</name>
            <uri>https://github.com/myConsciousness</uri>
        </author>
        <category label="AWS" term="AWS"/>
        <category label="Elastic Load Balancing" term="Elastic Load Balancing"/>
        <category label="Amazon EC2" term="Amazon EC2"/>
        <category label="cloud" term="cloud"/>
    </entry>
</feed>