<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>aws &#8211; polepolelife</title>
	<atom:link href="https://polepolelife.com/category/aws/feed/" rel="self" type="application/rss+xml" />
	<link>https://polepolelife.com</link>
	<description>お勉強・読書などの情報をお送りします</description>
	<lastBuildDate>Tue, 21 Jul 2026 04:24:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.6</generator>
	<item>
		<title>【実質0円】WordPressへの攻撃をSlackに自動通知！SQS＋Lambdaで学ぶ疎結合アーキテクチャ</title>
		<link>https://polepolelife.com/wordpress-sqs-slack-detect-attacks/</link>
					<comments>https://polepolelife.com/wordpress-sqs-slack-detect-attacks/#respond</comments>
		
		<dc:creator><![CDATA[david daichan]]></dc:creator>
		<pubDate>Wed, 18 Feb 2026 21:53:13 +0000</pubDate>
				<category><![CDATA[aws]]></category>
		<guid isPermaLink="false">https://polepolelife.com/?p=987</guid>

					<description><![CDATA[はじめに 普段の開発や運用でメールボックスを常に監視するのは大変ですよね。そこで今回は、エンジニアの必須ツールである**「Slack」にアラートを直接飛ばす仕組み**にアップグレードします！ ただ通知先を変えるだけではありません。今回はAWSアーキテクチャの醍醐味である**「SQS（待ち行列）」と「AWS Lambda（サーバーレスプログラム）」**を間に挟みます。 もし世界中から同時にサイバー攻撃を受けても、システムがパンクすることなく確実に通知を届けてくれる「疎結合（そけつごう）アーキテクチャ」を、実質0円で体験してみましょう！ 今回の完成イメージ Slackで「通知受け取り用のURL」を発行する まずは、Slack側に「ここ宛にメッセージを送ってね」という専用の窓口（Webhook URL）を作ります。 通知を飛ばしたいチャンネル（例：#general や #alert など）を選んで「許可する」を押します。 Webhook URL （https://hooks.slack.com/services/...）が発行されるので、「Copy」ボタンを押してメモ帳などに控えておいてください。 SNSトピック（通知ハブ）を作成する まずは、CloudWatchからの警報を受け取る「ハブ」を作成します。]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">はじめに</h2>



<p>普段の開発や運用でメールボックスを常に監視するのは大変ですよね。そこで今回は、エンジニアの必須ツールである**「Slack」にアラートを直接飛ばす仕組み**にアップグレードします！</p>



<p>ただ通知先を変えるだけではありません。今回はAWSアーキテクチャの醍醐味である**「SQS（待ち行列）」<strong>と</strong>「AWS Lambda（サーバーレスプログラム）」**を間に挟みます。 もし世界中から同時にサイバー攻撃を受けても、システムがパンクすることなく確実に通知を届けてくれる「疎結合（そけつごう）アーキテクチャ」を、実質0円で体験してみましょう！</p>



<h2 class="wp-block-heading">今回の完成イメージ</h2>



<ol start="1" class="wp-block-list">
<li>CloudWatchが攻撃を検知し、SNS（通知ハブ）へ発報。</li>



<li>SNSが**「SQS（キュー）」**にメッセージをポンッと入れる。</li>



<li>SQSにデータが入ったのをキッカケに、**「Lambda（Pythonプログラム）」**が自動起動。</li>



<li>LambdaがSlackに「<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f6a8.png" alt="🚨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 攻撃検知！」とメッセージを送信！</li>
</ol>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1024" height="559" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/detectattack.jpg" alt="" class="wp-image-1004" srcset="https://polepolelife.com/wp-content/uploads/2026/02/detectattack.jpg 1024w, https://polepolelife.com/wp-content/uploads/2026/02/detectattack-300x164.jpg 300w, https://polepolelife.com/wp-content/uploads/2026/02/detectattack-768x419.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Slackで「通知受け取り用のURL」を発行する</h2>



<p>まずは、Slack側に「ここ宛にメッセージを送ってね」という専用の窓口（Webhook URL）を作ります。</p>



<ol start="1" class="wp-block-list">
<li>パソコンのブラウザで <a href="" target="_blank" rel="noreferrer noopener">Slack API の管理画面 (https://api.slack.com/apps)</a> にアクセスし、右上の <strong>「Create New App」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="307" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-159-1024x307.png" alt="" class="wp-image-1033" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-159-1024x307.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-159-300x90.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-159-768x231.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-159-1536x461.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-159-2048x615.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>「From scratch」</strong> を選びます。</li>
</ol>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="992" height="549" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-160.png" alt="" class="wp-image-1034" style="width:442px;height:auto" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-160.png 992w, https://polepolelife.com/wp-content/uploads/2026/02/image-160-300x166.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-160-768x425.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>App Name</strong> に <code>WP-Security-Bot</code> など好きな名前を入力し、通知を送りたいワークスペースを選択して <strong>「Create App」</strong> を押します。</li>
</ol>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="984" height="1012" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-161.png" alt="" class="wp-image-1035" style="width:342px;height:auto" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-161.png 984w, https://polepolelife.com/wp-content/uploads/2026/02/image-161-292x300.png 292w, https://polepolelife.com/wp-content/uploads/2026/02/image-161-768x790.png 768w" sizes="(max-width: 984px) 100vw, 984px" /></figure>



<ol start="1" class="wp-block-list">
<li>左メニューから <strong>「Incoming Webhooks」</strong> をクリックし、右上のスイッチを <strong>「On」</strong> にします。</li>
</ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="596" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-162-1024x596.png" alt="" class="wp-image-1037" style="width:621px;height:auto" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-162-1024x596.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-162-300x175.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-162-768x447.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-162-1536x894.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-162.png 1647w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>画面下のほうにある <strong>「Add New Webhook to Workspace」</strong> をクリックします。</li>
</ol>



<p>通知を飛ばしたいチャンネル（例：<code>#general</code> や <code>#alert</code> など）を選んで「許可する」を押します。</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="536" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-163-1024x536.png" alt="" class="wp-image-1038" style="width:618px;height:auto" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-163-1024x536.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-163-300x157.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-163-768x402.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-163-1536x804.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-163.png 1747w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Webhook URL</strong> （<code>https://hooks.slack.com/services/...</code>）が発行されるので、<strong>「Copy」ボタンを押してメモ帳などに控えておいてください。</strong></p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="302" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-165-1024x302.png" alt="" class="wp-image-1042" style="width:439px;height:auto" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-165-1024x302.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-165-300x88.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-165-768x226.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-165.png 1083w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">SNSトピック（通知ハブ）を作成する</h3>



<p>まずは、CloudWatchからの警報を受け取る「ハブ」を作成します。</p>



<ol start="1" class="wp-block-list">
<li>AWSマネジメントコンソールで <strong>「SNS」</strong> と検索し、「Amazon SNS」を開きます。」</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="308" height="158" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-166.png" alt="" class="wp-image-1045" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-166.png 308w, https://polepolelife.com/wp-content/uploads/2026/02/image-166-300x154.png 300w" sizes="(max-width: 308px) 100vw, 308px" /></figure>



<ol start="1" class="wp-block-list">
<li>左側のメニューから <strong>「トピック」</strong> を選び、右上の <strong>「トピックの作成」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="536" height="121" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-167.png" alt="" class="wp-image-1046" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-167.png 536w, https://polepolelife.com/wp-content/uploads/2026/02/image-167-300x68.png 300w" sizes="(max-width: 536px) 100vw, 536px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>タイプ:</strong> 必ず <strong>「スタンダード」</strong> を選択します。（※FIFOを選ぶとCloudWatchから直接送れなくなります）</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="170" height="156" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-168.png" alt="" class="wp-image-1047"/></figure>



<p>画面一番下の <strong>「トピックの作成」</strong> をクリックします。</p>



<ol start="1" class="wp-block-list"></ol>



<h3 class="wp-block-heading">メトリクスフィルター（攻撃のカウント器）を作成する</h3>



<p>次に、Lightsailから送られてきているアクセスログの中から、「攻撃とみなす特定の文字（例：wp-login.php）」を見つけ出してカウントする設定を行います。</p>



<ol start="1" class="wp-block-list">
<li>AWSコンソールで <strong>「CloudWatch」</strong> を開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="461" height="144" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-169.png" alt="" class="wp-image-1049" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-169.png 461w, https://polepolelife.com/wp-content/uploads/2026/02/image-169-300x94.png 300w" sizes="(max-width: 461px) 100vw, 461px" /></figure>



<p>左メニューの「ログ」から <strong>「ロググループ」</strong> を選び、Lightsailのアクセスログ（例：<code>lightsail-wp-access-log</code>）をクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="584" height="177" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-170.png" alt="" class="wp-image-1052" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-170.png 584w, https://polepolelife.com/wp-content/uploads/2026/02/image-170-300x91.png 300w" sizes="(max-width: 584px) 100vw, 584px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>「メトリクスフィルター」</strong> タブを開き、<strong>「メトリクスフィルターを作成」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="225" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-171-1024x225.png" alt="" class="wp-image-1054" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-171-1024x225.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-171-300x66.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-171-768x168.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-171.png 1350w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>フィルターパターン:</strong> ログの中から探したいキーワードを入力します。
<ul class="wp-block-list">
<li>例：<code>"wp-admin"</code> （※ダブルクォーテーションで囲むと確実です）</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="879" height="259" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-172.png" alt="" class="wp-image-1055" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-172.png 879w, https://polepolelife.com/wp-content/uploads/2026/02/image-172-300x88.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-172-768x226.png 768w" sizes="(max-width: 879px) 100vw, 879px" /></figure>



<p>できる限り、ログの中からパターンをテストすることをおすすめします</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="734" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-173-1024x734.png" alt="" class="wp-image-1056" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-173-1024x734.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-173-300x215.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-173-768x551.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-173.png 1054w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>「次へ」をクリックし、フィルターの詳細を以下のように設定します。
<ul class="wp-block-list">
<li><strong>フィルター名:</strong> <code>Detect-WP-Login-Attack</code></li>



<li><strong>メトリクス名前空間:</strong> <code>WordPressSecurity</code> （※新しいカテゴリ名を作ります）</li>



<li><strong>メトリクス名:</strong> <code>LoginAccessCount</code></li>



<li><strong>メトリクス値:</strong> <code>1</code> （※キーワードを1回見つけるごとに「1」カウントするという意味です）</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="374" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-174-1024x374.png" alt="" class="wp-image-1057" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-174-1024x374.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-174-300x109.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-174-768x280.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-174-1536x560.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-174-2048x747.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>「メトリクスフィルターを作成」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="465" height="88" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-175.png" alt="" class="wp-image-1058" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-175.png 465w, https://polepolelife.com/wp-content/uploads/2026/02/image-175-300x57.png 300w" sizes="(max-width: 465px) 100vw, 465px" /></figure>



<h3 class="wp-block-heading">CloudWatchアラーム（警報装置）を作成する</h3>



<p>最後に、ステップ2で作ったカウント器が「規定の回数」を超えたら、ステップ1で作ったSNSに発報する設定を行います。ここが一番繋ぎ忘れがちなポイントです！</p>



<ol start="1" class="wp-block-list">
<li>いま作成したメトリクスフィルターの画面右上に表示される、<strong>「アラームを作成」</strong> というボタンをクリックします。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="160" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-176-1024x160.png" alt="" class="wp-image-1059" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-176-1024x160.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-176-300x47.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-176-768x120.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-176-1536x240.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-176-2048x320.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>【メトリクスと条件の指定】</strong>
<ul class="wp-block-list">
<li><strong>統計:</strong> <code>合計 (Sum)</code> に変更します。</li>



<li><strong>期間:</strong> <code>1分</code> または <code>5分</code> に設定します。（テスト時は1分がおすすめです）</li>



<li><strong>条件:</strong> <code>静的 (Static)</code> ＞ <code>以上 (Greater/Equal)</code> を選びます。</li>



<li><strong>しきい値:</strong> <code>5</code> と入力します。（※「1分間に5回アクセスがあったら」という意味になります）</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="404" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-177-1024x404.png" alt="" class="wp-image-1060" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-177-1024x404.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-177-300x118.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-177-768x303.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-177.png 1368w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>【アクションの設定（超重要！）】</strong>
<ul class="wp-block-list">
<li><strong>アラーム状態トリガー:</strong> <code>アラーム状態</code> のままにします。</li>



<li><strong>通知の送信先:</strong> <code>既存のSNSトピックを選択</code> を選びます。</li>



<li>その下の「通知の送信先」の検索窓をクリックし、ステップ1で作った <strong><code>wp-attack-alert-topic</code></strong> を選択します！</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="404" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-178-1024x404.png" alt="" class="wp-image-1061" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-178-1024x404.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-178-300x118.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-178-768x303.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-178.png 1428w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>「次へ」をクリックします。</li>



<li><strong>【名前と説明の追加】</strong>
<ul class="wp-block-list">
<li><strong>アラーム名:</strong> <code>WP-Login-Attack-Alarm</code> などと入力し、「次へ」をクリックします。</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="443" height="175" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-179.png" alt="" class="wp-image-1062" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-179.png 443w, https://polepolelife.com/wp-content/uploads/2026/02/image-179-300x119.png 300w" sizes="(max-width: 443px) 100vw, 443px" /></figure>



<ol start="1" class="wp-block-list">
<li>最後に設定内容を確認し、画面一番下の <strong>「アラームの作成」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="368" height="88" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-180.png" alt="" class="wp-image-1063" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-180.png 368w, https://polepolelife.com/wp-content/uploads/2026/02/image-180-300x72.png 300w" sizes="(max-width: 368px) 100vw, 368px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 動作確認（テスト）のやり方</h3>



<p>ここまで設定できたら、CloudWatchとSNSが本当に繋がっているかテストしてみましょう。</p>



<ol start="1" class="wp-block-list">
<li>ご自身のWordPressのログインURL（例：<code>https://polepolelife.com/wp-login.php</code>）をブラウザで開きます。</li>



<li><strong>F5キー（更新）を5〜6回ほど、パパパッと連打</strong>します。</li>



<li>CloudWatchの「すべてのアラーム」画面を開いて数分待ちます。</li>



<li>アラームの状態が緑色の「OK」から、<strong>赤色の「アラーム状態」</strong> に変われば大成功です！</li>
</ol>



<p>アラーム状態になった瞬間、設定したSNSトピックに向けて裏側でメッセージが飛んでいます。このSNSにSQSを連携（サブスクライブ）させておけば、見事なピタゴラスイッチの完成です。</p>



<p></p>



<h2 class="wp-block-heading">メッセージの待合室「SQS」を作成する</h2>



<p>大量の通知が来てもパンクしないように、メッセージを一時的に貯めておく「キュー（SQS）」を作ります。</p>



<ol start="1" class="wp-block-list">
<li>AWSマネジメントコンソールで <strong>「SQS」</strong> と検索し、「Simple Queue Service」を開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="383" height="118" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-140.png" alt="" class="wp-image-1012" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-140.png 383w, https://polepolelife.com/wp-content/uploads/2026/02/image-140-300x92.png 300w" sizes="(max-width: 383px) 100vw, 383px" /></figure>



<ol start="1" class="wp-block-list">
<li>右上の <strong>「キューを作成」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="387" height="223" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-141.png" alt="" class="wp-image-1013" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-141.png 387w, https://polepolelife.com/wp-content/uploads/2026/02/image-141-300x173.png 300w" sizes="(max-width: 387px) 100vw, 387px" /></figure>



<p>タイプは <strong>「標準」</strong> のままでOKです。</p>



<p><strong>名前</strong> に <code>wp-alert-queue</code> と入力します。</p>



<p>その他の設定はすべて初期状態のままで、一番下の <strong>「キューの作成」</strong> をクリックします。</p>



<ol start="1" class="wp-block-list"></ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="372" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-142-1024x372.png" alt="" class="wp-image-1014" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-142-1024x372.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-142-300x109.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-142-768x279.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-142.png 1231w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 超重要：SNS（第3回で作ったアラーム）とSQSを繋ぐ</h3>



<p>いま作ったSQSの画面に「SNS サブスクリプション」というタブがあります。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="544" height="414" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-143.png" alt="" class="wp-image-1015" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-143.png 544w, https://polepolelife.com/wp-content/uploads/2026/02/image-143-300x228.png 300w" sizes="(max-width: 544px) 100vw, 544px" /></figure>



<p><strong>「Amazon SNS トピックをサブスクライブ」</strong> をクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="612" height="117" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-144.png" alt="" class="wp-image-1016" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-144.png 612w, https://polepolelife.com/wp-content/uploads/2026/02/image-144-300x57.png 300w" sizes="(max-width: 612px) 100vw, 612px" /></figure>



<p>SNSトピック（例：<code>wp-alert-topic</code>）を選んで「保存」を押します。 <em>(※これだけで、CloudWatchのアラームが鳴ると、自動的にこのSQSにメッセージが届くようになります！)</em>  SNSトピックなかったら作っておいてください</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="253" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-145-1024x253.png" alt="" class="wp-image-1017" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-145-1024x253.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-145-300x74.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-145-768x190.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-145.png 1304w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>設定終了したら保存します</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">自動実行プログラム「AWS Lambda」を作成する</h2>



<p>SQSにメッセージが届いたら、それを拾ってSlackに転送するPythonプログラムを作ります。</p>



<ol start="1" class="wp-block-list">
<li>AWSの検索バーで <strong>「Lambda」</strong> と検索して開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="430" height="144" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-146.png" alt="" class="wp-image-1018" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-146.png 430w, https://polepolelife.com/wp-content/uploads/2026/02/image-146-300x100.png 300w" sizes="(max-width: 430px) 100vw, 430px" /></figure>



<ol start="1" class="wp-block-list">
<li>右上の <strong>「関数の作成」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="363" height="228" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-147.png" alt="" class="wp-image-1019" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-147.png 363w, https://polepolelife.com/wp-content/uploads/2026/02/image-147-300x188.png 300w" sizes="(max-width: 363px) 100vw, 363px" /></figure>



<p></p>



<ol start="1" class="wp-block-list">
<li>以下のように設定します。
<ul class="wp-block-list">
<li><strong>関数名:</strong> <code>NotifyToSlack</code>PolePole</li>



<li><strong>ランタイム:</strong> <code>Python 3.12</code> （または最新のPython）</li>



<li><strong>アーキテクチャ:</strong> <code>x86_64</code></li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="537" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-148-1024x537.png" alt="" class="wp-image-1020" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-148-1024x537.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-148-300x157.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-148-768x403.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-148.png 1136w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>右下の <strong>「関数の作成」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="249" height="65" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-149.png" alt="" class="wp-image-1021"/></figure>



<h3 class="wp-block-heading">環境変数（Slack URL）の設定</h3>



<p>コードの中に直接URLを書くのはセキュリティ上良くないため、環境変数に登録します。</p>



<ol start="1" class="wp-block-list">
<li>Lambdaの画面中段にある <strong>「設定」</strong> タブ ＞ 左側の <strong>「環境変数」</strong> ＞ <strong>「編集」</strong> をクリック。</li>



<li><strong>「環境変数の追加」</strong> を押し、以下を入力して保存します。
<ul class="wp-block-list">
<li>キー：<code>SLACK_WEBHOOK_URL</code></li>



<li>値：SlackのWebhook URL</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="231" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-150-1024x231.png" alt="" class="wp-image-1022" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-150-1024x231.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-150-300x68.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-150-768x173.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-150-1536x347.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-150.png 1665w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Pythonコードの貼り付け</h3>



<p><strong>「コード」</strong> タブに戻り、元々書かれているコードをすべて消して、以下のコードを貼り付けます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>import json
import urllib.request
import os
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

SLACK_WEBHOOK_URL = os.environ&#91;'SLACK_WEBHOOK_URL'&#93;

def lambda_handler(event, context):
    try:
        # SQSから送られてきたメッセージを処理
        for record in event&#91;'Records'&#93;:
            # SNSからSQSに渡された中身（body）を取り出す
            sns_message = json.loads(record&#91;'body'&#93;)
            alarm_info = json.loads(sns_message&#91;'Message'&#93;)
            
            # アラームの名前や理由を取得
            alarm_name = alarm_info.get('AlarmName', '不明なアラーム')
            alarm_desc = alarm_info.get('NewStateReason', '詳細なし')
            
            # Slackに送るメッセージのデザイン
            slack_payload = {
                "text": f"<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f6a8.png" alt="🚨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> *WordPress セキュリティ警告*\n*アラーム名:* {alarm_name}\n*詳細:* {alarm_desc}\n至急、AWS CloudWatchを確認してください！",
                "icon_emoji": ":rotating_light:"
            }
            
            # Slackへ送信
            req = urllib.request.Request(
                SLACK_WEBHOOK_URL, 
                data=json.dumps(slack_payload).encode('utf-8'), 
                headers={'Content-Type': 'application/json'}
            )
            urllib.request.urlopen(req)
            logger.info("Slack通知に成功しました。")

        return {'statusCode': 200, 'body': 'Success'}

    except Exception as e:
        logger.error(f"エラーが発生しました: {e}")
        return {'statusCode': 500, 'body': 'Error'}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">json</span></span>
<span class="line"><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">urllib</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">request</span></span>
<span class="line"><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">os</span></span>
<span class="line"><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">logging</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">logger</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">logging</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">getLogger</span><span style="color: #D8DEE9FF">()</span></span>
<span class="line"><span style="color: #8FBCBB">logger</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">setLevel</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">logging</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">INFO</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">SLACK_WEBHOOK_URL</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">os</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">environ</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">SLACK_WEBHOOK_URL</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">def</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">lambda_handler</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">event</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">context</span><span style="color: #D8DEE9FF">):</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">try</span><span style="color: #D8DEE9FF">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">        # </span><span style="color: #8FBCBB">SQSから送られてきたメッセージを処理</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">record</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">event</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">Records</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;:</span></span>
<span class="line"><span style="color: #D8DEE9FF">            # </span><span style="color: #8FBCBB">SNSからSQSに渡された中身</span><span style="color: #D8DEE9FF">（</span><span style="color: #8FBCBB">body</span><span style="color: #D8DEE9FF">）</span><span style="color: #8FBCBB">を取り出す</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">sns_message</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">json</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">loads</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">record</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">body</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;)</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">alarm_info</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">json</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">loads</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">sns_message</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">Message</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;)</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span></span>
<span class="line"><span style="color: #D8DEE9FF">            # </span><span style="color: #8FBCBB">アラームの名前や理由を取得</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">alarm_name</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">alarm_info</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">get</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">AlarmName</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">不明なアラーム</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">alarm_desc</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">alarm_info</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">get</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">NewStateReason</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">詳細なし</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span></span>
<span class="line"><span style="color: #D8DEE9FF">            # </span><span style="color: #8FBCBB">Slackに送るメッセージのデザイン</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">slack_payload</span><span style="color: #D8DEE9FF"> = </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">                &quot;</span><span style="color: #8FBCBB">text</span><span style="color: #D8DEE9FF">&quot;: </span><span style="color: #8FBCBB">f</span><span style="color: #D8DEE9FF">&quot;&#x1f6a8; </span><span style="color: #81A1C1">*</span><span style="color: #8FBCBB">WordPress</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">セキュリティ警告</span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF">\</span><span style="color: #8FBCBB">n</span><span style="color: #81A1C1">*</span><span style="color: #8FBCBB">アラーム名</span><span style="color: #D8DEE9FF">:</span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> {</span><span style="color: #8FBCBB">alarm_name</span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF">\</span><span style="color: #8FBCBB">n</span><span style="color: #81A1C1">*</span><span style="color: #8FBCBB">詳細</span><span style="color: #D8DEE9FF">:</span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #8FBCBB">alarm_desc</span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF">\</span><span style="color: #8FBCBB">n至急</span><span style="color: #D8DEE9FF">、</span><span style="color: #8FBCBB">AWS</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">CloudWatchを確認してください</span><span style="color: #D8DEE9FF">！</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">icon_emoji</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">: </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">:rotating_light:</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            }</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span></span>
<span class="line"><span style="color: #D8DEE9FF">            # </span><span style="color: #8FBCBB">Slackへ送信</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">req</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">urllib</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">request</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">Request</span><span style="color: #D8DEE9FF">(</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">SLACK_WEBHOOK_URL</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">data</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">json</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">dumps</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">slack_payload</span><span style="color: #D8DEE9FF">).</span><span style="color: #8FBCBB">encode</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">utf-8</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #8FBCBB">headers</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">&#39;</span><span style="color: #8FBCBB">Content</span><span style="color: #D8DEE9FF">-</span><span style="color: #8FBCBB">Type</span><span style="color: #D8DEE9FF">&#39;: &#39;</span><span style="color: #8FBCBB">application</span><span style="color: #D8DEE9FF">/</span><span style="color: #8FBCBB">json</span><span style="color: #D8DEE9FF">&#39;</span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">            )</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">urllib</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">request</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">urlopen</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">req</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #8FBCBB">logger</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">info</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Slack通知に成功しました。</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">&#39;</span><span style="color: #8FBCBB">statusCode</span><span style="color: #D8DEE9FF">&#39;: 200</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> &#39;</span><span style="color: #8FBCBB">body</span><span style="color: #D8DEE9FF">&#39;: &#39;</span><span style="color: #8FBCBB">Success</span><span style="color: #D8DEE9FF">&#39;</span><span style="color: #ECEFF4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">except</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Exception</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">as</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">e</span><span style="color: #D8DEE9FF">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">logger</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">error</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">f</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">エラーが発生しました: {e}</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #8FBCBB">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">&#39;</span><span style="color: #8FBCBB">statusCode</span><span style="color: #D8DEE9FF">&#39;: 500</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> &#39;</span><span style="color: #8FBCBB">body</span><span style="color: #D8DEE9FF">&#39;: &#39;</span><span style="color: #8FBCBB">Error</span><span style="color: #D8DEE9FF">&#39;</span><span style="color: #ECEFF4">}</span></span>
<span class="line"></span></code></pre></div>



<p>貼り付けたら、ファイル上部の <strong>「Deploy」</strong> ボタンを押してコードを保存します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="612" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-151-1024x612.png" alt="" class="wp-image-1024" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-151-1024x612.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-151-300x179.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-151-768x459.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-151.png 1141w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<ol start="2" class="wp-block-list">
<li></li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Lambdaに「SQSを読み取る権限」を渡す</h2>



<p>LambdaがSQSの中身を見るためには「許可証（IAMロール）」が必要です。</p>



<ol start="1" class="wp-block-list">
<li>Lambdaの <strong>「設定」</strong> タブ ＞ 左側の <strong>「アクセス権限」</strong> を開きます。</li>



<li>実行ロールの青いリンク（<code>NotifyToSlack-role-xxxx</code> のような名前）をクリックすると、IAMの画面が開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="691" height="222" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-152.png" alt="" class="wp-image-1025" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-152.png 691w, https://polepolelife.com/wp-content/uploads/2026/02/image-152-300x96.png 300w" sizes="(max-width: 691px) 100vw, 691px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>「許可を追加」</strong> ＞</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="159" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-153-1024x159.png" alt="" class="wp-image-1026" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-153-1024x159.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-153-300x46.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-153-768x119.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-153.png 1381w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p> <strong>「ポリシーをアタッチ」</strong> をクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="427" height="185" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-154.png" alt="" class="wp-image-1027" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-154.png 427w, https://polepolelife.com/wp-content/uploads/2026/02/image-154-300x130.png 300w" sizes="(max-width: 427px) 100vw, 427px" /></figure>



<ol start="1" class="wp-block-list">
<li>検索窓で <code>AWSLambdaSQSQueueExecutionRole</code> と検索し、チェックを入れて <strong>「許可を追加」</strong> を押します。 <em>(※これでLambdaがSQSを読み取れるようになりました！)</em></li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="224" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-155-1024x224.png" alt="" class="wp-image-1028" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-155-1024x224.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-155-300x66.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-155-768x168.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-155-1536x336.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-155.png 1847w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">SQSとLambdaを合体させる！</h2>



<p>最後の仕上げです。「SQSにデータが入ったらLambdaを動かす」というトリガーを設定します。</p>



<ol start="1" class="wp-block-list">
<li>Lambdaの画面に戻り、上部の <strong>「＋ トリガーを追加」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="740" height="324" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-156.png" alt="" class="wp-image-1029" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-156.png 740w, https://polepolelife.com/wp-content/uploads/2026/02/image-156-300x131.png 300w" sizes="(max-width: 740px) 100vw, 740px" /></figure>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="220" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-157-1024x220.png" alt="" class="wp-image-1030" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-157-1024x220.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-157-300x64.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-157-768x165.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-157.png 1210w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>SQSキューの入力欄をクリックし、ステップ2で作った <code>wp-alert-queue</code> を選びます。</p>



<p>右下の <strong>「追加」</strong> をクリックします</p>



<figure class="wp-block-image size-full"><img decoding="async" width="246" height="60" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-158.png" alt="" class="wp-image-1031"/></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">完了！実際に攻撃テストをしてみよう</h2>



<p>お疲れ様でした！これでAWS内の美しい連携システムが完成しました。 実際に動くかテストしてみましょう。</p>



<p><strong>【テストの手順】</strong></p>



<ol start="1" class="wp-block-list">
<li>自分のブログのログイン画面（<code>https://あなたのドメイン/wp-login.php</code>）をブラウザで開きます。</li>



<li><strong>F5キー（更新）を5〜6回ほど、連続して連打</strong>します。</li>



<li>そのまま5分ほど待ちます。</li>
</ol>



<p>設定したSlackのチャンネルに、<strong>「<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f6a8.png" alt="🚨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> WordPress セキュリティ警告」</strong> というメッセージがピコン！と通知されれば大成功です！！</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="150" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-188-1024x150.png" alt="" class="wp-image-1074" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-188-1024x150.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-188-300x44.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-188-768x113.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-188-1536x225.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-188.png 1882w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">まとめ</h3>



<p>今回は、直接Lambdaを動かすのではなく、あえて間に「SQS」を挟みました。 これにより、仮に何万回という凄まじい攻撃を受けてアラームが鳴りやまない状態になっても、SQSがバッファ（緩衝材）となり、システムを落とすことなく順番に処理してくれます。</p>



<p>これぞクラウドの醍醐味！実質0円でこのエンタープライズ品質のシステムが組めるのは本当に楽しいですね。 次回はいよいよ、この通知システムをさらに進化させ、**「攻撃者のIPアドレスをCloudflareのWAFで全自動ブロックする仕組み」**に挑戦します！</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpolepolelife.com%2Fwordpress-sqs-slack-detect-attacks%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91WordPress%E3%81%B8%E3%81%AE%E6%94%BB%E6%92%83%E3%82%92Slack%E3%81%AB%E8%87%AA%E5%8B%95%E9%80%9A%E7%9F%A5%EF%BC%81SQS%EF%BC%8BLambda%E3%81%A7%E5%AD%A6%E3%81%B6%E7%96%8E%E7%B5%90%E5%90%88%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fpolepolelife.com%2Fwordpress-sqs-slack-detect-attacks%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91WordPress%E3%81%B8%E3%81%AE%E6%94%BB%E6%92%83%E3%82%92Slack%E3%81%AB%E8%87%AA%E5%8B%95%E9%80%9A%E7%9F%A5%EF%BC%81SQS%EF%BC%8BLambda%E3%81%A7%E5%AD%A6%E3%81%B6%E7%96%8E%E7%B5%90%E5%90%88%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpolepolelife.com%2Fwordpress-sqs-slack-detect-attacks%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91WordPress%E3%81%B8%E3%81%AE%E6%94%BB%E6%92%83%E3%82%92Slack%E3%81%AB%E8%87%AA%E5%8B%95%E9%80%9A%E7%9F%A5%EF%BC%81SQS%EF%BC%8BLambda%E3%81%A7%E5%AD%A6%E3%81%B6%E7%96%8E%E7%B5%90%E5%90%88%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpolepolelife.com%2Fwordpress-sqs-slack-detect-attacks%2F&#038;title=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91WordPress%E3%81%B8%E3%81%AE%E6%94%BB%E6%92%83%E3%82%92Slack%E3%81%AB%E8%87%AA%E5%8B%95%E9%80%9A%E7%9F%A5%EF%BC%81SQS%EF%BC%8BLambda%E3%81%A7%E5%AD%A6%E3%81%B6%E7%96%8E%E7%B5%90%E5%90%88%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3" data-a2a-url="https://polepolelife.com/wordpress-sqs-slack-detect-attacks/" data-a2a-title="【実質0円】WordPressへの攻撃をSlackに自動通知！SQS＋Lambdaで学ぶ疎結合アーキテクチャ"></a></p>]]></content:encoded>
					
					<wfw:commentRss>https://polepolelife.com/wordpress-sqs-slack-detect-attacks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【月額0円で運用可能】自作ログ分析基盤のコストパフォーマンス検証＆AthenaでSQL分析！</title>
		<link>https://polepolelife.com/athenasqlanalysisaws/</link>
					<comments>https://polepolelife.com/athenasqlanalysisaws/#respond</comments>
		
		<dc:creator><![CDATA[david daichan]]></dc:creator>
		<pubDate>Wed, 18 Feb 2026 00:33:57 +0000</pubDate>
				<category><![CDATA[aws]]></category>
		<guid isPermaLink="false">https://polepolelife.com/?p=965</guid>

					<description><![CDATA[はじめに LightsailのWordPressから始まり、CloudWatchでのログ集約、FirehoseとS3を使った永久保存、そしてログイン画面への攻撃検知アラームと、これまで3回にわたってAWSの本格的な「ログ分析・監視基盤」を自作してきました。 「AWSでこれだけ色々なサービスを組み合わせたら、毎月数千円くらい請求が来るのでは…？」と不安に思うかもしれません。 しかし結論から言うと、月間数万PV以下の個人ブログであれば、この超本格的なデータパイプラインは**「月額ほぼ0円」**で運用可能です！今回はその驚きのコスト内訳と、S3に保存したログを「Amazon Athena」を使って一瞬で分析する方法をご紹介します。 なぜ0円？自作ログ基盤のコストパフォーマンス検証 今回のシステムで使っているAWSサービス群の「料金の仕組み」と、月間数千PVのブログを想定した「実際の請求額」をまとめました。（※東京リージョンの料金です） 使っているAWSサービス 料金の仕組み（課金ポイント） 今回の想定コスト CloudWatch Logs データの収集量と保存量 0円（毎月5GBまで永久無料枠） Data Firehose 処理したデータ量 0円（1GBあたり約5円。数MBなら0円）]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">はじめに</h2>



<p>LightsailのWordPressから始まり、CloudWatchでのログ集約、FirehoseとS3を使った永久保存、そしてログイン画面への攻撃検知アラームと、これまで3回にわたってAWSの本格的な「ログ分析・監視基盤」を自作してきました。</p>



<p>「AWSでこれだけ色々なサービスを組み合わせたら、毎月数千円くらい請求が来るのでは…？」と不安に思うかもしれません。</p>



<p>しかし結論から言うと、月間数万PV以下の個人ブログであれば、この超本格的なデータパイプラインは**「月額ほぼ0円」**で運用可能です！今回はその驚きのコスト内訳と、S3に保存したログを「Amazon Athena」を使って一瞬で分析する方法をご紹介します。</p>



<h2 class="wp-block-heading">なぜ0円？自作ログ基盤のコストパフォーマンス検証</h2>



<p>今回のシステムで使っているAWSサービス群の「料金の仕組み」と、月間数千PVのブログを想定した「実際の請求額」をまとめました。（※東京リージョンの料金です）</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>使っているAWSサービス</strong></td><td><strong>料金の仕組み（課金ポイント）</strong></td><td><strong>今回の想定コスト</strong></td></tr></thead><tbody><tr><td><strong>CloudWatch Logs</strong></td><td>データの収集量と保存量</td><td><strong>0円</strong>（毎月5GBまで永久無料枠）</td></tr><tr><td><strong>Data Firehose</strong></td><td>処理したデータ量</td><td><strong>0円</strong>（1GBあたり約5円。数MBなら0円）</td></tr><tr><td><strong>Amazon S3</strong></td><td>保存したデータ容量</td><td><strong>0円</strong>（1GBあたり約3.8円。数MBなら0円）</td></tr><tr><td><strong>CloudWatch アラーム</strong></td><td>アラームの設置数</td><td><strong>0円</strong>（毎月10個まで永久無料枠）</td></tr><tr><td><strong>Amazon SNS (メール)</strong></td><td>メールの送信回数</td><td><strong>0円</strong>（毎月1000件まで永久無料枠）</td></tr><tr><td><strong>Amazon Athena</strong></td><td>検索（スキャン）したデータ量</td><td><strong>0円</strong>（1TBあたり約750円。数MBなら0円）</td></tr></tbody></table></figure>



<p>ご覧の通り、AWSには「Always Free（永久無料枠）」が豊富に用意されており、さらに従量課金のサービス（S3やFirehoseなど）も、個人ブログのデータ量（月に数MB〜数十MB程度）であれば**「1円未満のため請求なし（$0.00）」**となります。</p>



<p>サーバーの負荷を一切上げずに、これだけのエンタープライズ級の環境を無料で維持できるのが、自作の最大のメリットです！</p>



<h2 class="wp-block-heading">全体像</h2>



<p>簡単にではありますが、下記の図で全体像がわかると思います</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="423" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-114-1024x423.jpg" alt="" class="wp-image-970" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-114-1024x423.jpg 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-114-300x124.jpg 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-114-768x317.jpg 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-114-1536x635.jpg 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-114.jpg 1793w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>lightsail のログをcloudwatch で吐き出して、Firehorse経由でS３におくり、Athena で分析という形です。SNSの通知はオプションですのでまたの機会があれば、別の記事で書こうと思います</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Amazon AthenaでS3のログをSQL分析してみよう！</h2>



<p>S3にログを永久保存できたのは良いですが、S3の画面から直接ファイルの中身を見ることはできません。（ダウンロードして解凍する必要があります）</p>



<p>そこで活躍するのが**「Amazon Athena（アテナ）」**です。Athenaを使えば、S3に置いてある大量のログファイルに対して、データベースを構築することなく直接「SQL」を打ち込んで検索・分析ができます。</p>



<h3 class="wp-block-heading">ステップ1：Athenaの「結果保存用フォルダ」を作る</h3>



<p>Athenaを使うには、まず「検索結果を一時的に保存するS3フォルダ」を指定する必要があります。</p>



<ol start="1" class="wp-block-list">
<li>AWSマネジメントコンソールで**「S3」**を開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="251" height="132" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-114.png" alt="" class="wp-image-972"/></figure>



<ol start="1" class="wp-block-list">
<li>前回作ったバケット（例：<strong>polepolelife-logs</strong>）を開きます。</li>
</ol>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1022" height="611" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-115.png" alt="" class="wp-image-973" style="width:525px;height:auto" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-115.png 1022w, https://polepolelife.com/wp-content/uploads/2026/02/image-115-300x179.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-115-768x459.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></figure>



<ol start="1" class="wp-block-list">
<li>**「フォルダの作成」**をクリックし、名前に <code>athena-results</code> と入力して作成します。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="476" height="113" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-116.png" alt="" class="wp-image-974" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-116.png 476w, https://polepolelife.com/wp-content/uploads/2026/02/image-116-300x71.png 300w" sizes="(max-width: 476px) 100vw, 476px" /></figure>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="767" height="545" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-117.png" alt="" class="wp-image-975" style="width:355px;height:auto" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-117.png 767w, https://polepolelife.com/wp-content/uploads/2026/02/image-117-300x213.png 300w" sizes="(max-width: 767px) 100vw, 767px" /></figure>



<p>フォルダを作成します</p>



<figure class="wp-block-image size-full"><img decoding="async" width="410" height="105" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-118.png" alt="" class="wp-image-976" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-118.png 410w, https://polepolelife.com/wp-content/uploads/2026/02/image-118-300x77.png 300w" sizes="(max-width: 410px) 100vw, 410px" /></figure>



<h3 class="wp-block-heading">ステップ2：Athenaを開いて初期設定をする</h3>



<ol start="1" class="wp-block-list">
<li>検索バーで**「Athena」**と検索して開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="603" height="124" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-120.png" alt="" class="wp-image-978" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-120.png 603w, https://polepolelife.com/wp-content/uploads/2026/02/image-120-300x62.png 300w" sizes="(max-width: 603px) 100vw, 603px" /></figure>



<ol start="1" class="wp-block-list">
<li>左メニューの「クエリエディタ」を開きます。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="197" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-119-1024x197.png" alt="" class="wp-image-977" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-119-1024x197.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-119-300x58.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-119-768x148.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-119.png 1264w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>画面の上部に「クエリ結果の場所を設定してください」という青い警告文が出るので、**「設定を編集」**をクリックします。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="52" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-121-1024x52.png" alt="" class="wp-image-979" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-121-1024x52.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-121-300x15.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-121-768x39.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-121-1536x79.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-121-2048x105.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>クエリ設定のタブで　<strong>クエリ結果の場所と暗号化を管理する</strong>　があるので、そこでBrowse S3 を押して先程のS3のロケーションをクエリ結果として指定します</p>



<ol start="1" class="wp-block-list"></ol>



<p>下記の画面で「管理」をクリック</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="302" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-122-1024x302.png" alt="" class="wp-image-980" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-122-1024x302.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-122-300x88.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-122-768x226.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-122.png 1497w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Browse S3　で検索結果の場所を指定する</p>



<figure class="wp-block-image size-full"><img decoding="async" width="882" height="481" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-124.png" alt="" class="wp-image-982" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-124.png 882w, https://polepolelife.com/wp-content/uploads/2026/02/image-124-300x164.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-124-768x419.png 768w" sizes="(max-width: 882px) 100vw, 882px" /></figure>



<p>先程作成した　Athena-result　を指定します</p>



<figure class="wp-block-image size-full"><img decoding="async" width="607" height="457" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-123.png" alt="" class="wp-image-981" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-123.png 607w, https://polepolelife.com/wp-content/uploads/2026/02/image-123-300x226.png 300w" sizes="(max-width: 607px) 100vw, 607px" /></figure>



<h3 class="wp-block-heading">ログを読み込む「テーブル（表）」を作成する</h3>



<p>S3にあるテキストデータをAthenaに「これはアクセスログだよ」と認識させるための設定（テーブル作成）を行います。</p>



<p>クエリエディタの広くて白い入力欄に、以下のSQL文をすべてコピーして貼り付け、右上の**「実行」**ボタンを押してください。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>CREATE EXTERNAL TABLE IF NOT EXISTS wp_access_logs (
  client_ip string,
  client_id string,
  user_id string,
  request_date string,
  request string,
  status_code string,
  object_size string,
  referer string,
  user_agent string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  "input.regex" = "^(&#91;^ &#93;+) (&#91;^ &#93;+) (&#91;^ &#93;+) \\[(&#91;^\\&#93;]+)\\] \"(&#91;^\"&#93;+)\" (&#91;0-9&#93;+) (&#91;0-9&#93;+|-) \"(&#91;^\"&#93;*)\" \"(&#91;^\"&#93;*)\".*"
)
LOCATION 's3://polepolelife-logs/ athena-results/';
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">CREATE</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">EXTERNAL</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">TABLE</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">IF</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">NOT</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">EXISTS</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">wp_access_logs</span><span style="color: #D8DEE9FF"> (</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">client_ip</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">client_id</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">user_id</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">request_date</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">request</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">status_code</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">object_size</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">referer</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">user_agent</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">string</span></span>
<span class="line"><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">ROW</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">FORMAT</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">SERDE</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">org.apache.hadoop.hive.serde2.RegexSerDe</span><span style="color: #ECEFF4">&#39;</span></span>
<span class="line"><span style="color: #D8DEE9">WITH</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">SERDEPROPERTIES</span><span style="color: #D8DEE9FF"> (</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">input.regex</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">^(&#91;^ &#93;+) (&#91;^ &#93;+) (&#91;^ &#93;+) </span><span style="color: #EBCB8B">\\</span><span style="color: #A3BE8C">[(&#91;^</span><span style="color: #EBCB8B">\\</span><span style="color: #A3BE8C">&#93;]+)</span><span style="color: #EBCB8B">\\</span><span style="color: #A3BE8C">] </span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C">(&#91;^</span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C">&#93;+)</span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C"> (&#91;0-9&#93;+) (&#91;0-9&#93;+|-) </span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C">(&#91;^</span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C">&#93;*)</span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C"> </span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C">(&#91;^</span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C">&#93;*)</span><span style="color: #EBCB8B">\&quot;</span><span style="color: #A3BE8C">.*</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">LOCATION</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">s3://polepolelife-logs/ athena-results/</span><span style="color: #ECEFF4">&#39;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span></code></pre></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="566" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-125-1024x566.png" alt="" class="wp-image-983" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-125-1024x566.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-125-300x166.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-125-768x425.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-125.png 1478w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>※注意：一番最後の <code>LOCATION</code> の部分は、前回自分が作ったS3のパスに書き換えてください。</strong></p>



<p>例：<code>s3://yourblog-logs-2026/</code> （必ず最後に <code>/</code> をつけてください）</p>



<p>左側の「テーブル」という欄に <code>wp_access_logs</code> が表示されれば準備完了です！</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="385" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-126-1024x385.png" alt="" class="wp-image-984" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-126-1024x385.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-126-300x113.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-126-768x289.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-126.png 1446w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Firehoseの設定変更</h2>



<p>CloudWatch Logsは、データをFirehoseに渡す際、通信量を節約するために**「全体をGZIPでガチガチに圧縮した上で、AWS特有の複雑なJSON形式で包んで」**送っています。</p>



<p>そのため、今のS3には「WordPressの綺麗なアクセスログ」ではなく、「解凍できない謎の暗号データ（バイナリ）」が保存されてしまっています。Athenaはそれをテキストとして読もうとして「なんだこれ？読めないから結果0件にしとこう」と無視してしまっている状態です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Firehoseの「自動解凍＆抽出機能」をオンにする！</h3>



<p>わざわざAthena側で難しいSQL（UNNESTなど）をこねくり回す必要はありません。AWSが最近追加した<strong>神機能</strong>を使って、Firehoseに「S3に保存する前に解凍して、中身のログだけを綺麗に取り出して！」と指示するだけで解決します。</p>



<h4 class="wp-block-heading">Firehoseの設定を変更する</h4>



<ol start="1" class="wp-block-list">
<li>AWSマネジメントコンソールで <strong>「Data Firehose」</strong> を開きます</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="206" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-127-1024x206.png" alt="" class="wp-image-990" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-127-1024x206.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-127-300x60.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-127-768x154.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-127.png 1110w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>対象のストリーム（<code>wp-log-delivery-stream</code>）をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="565" height="218" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-128.png" alt="" class="wp-image-991" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-128.png 565w, https://polepolelife.com/wp-content/uploads/2026/02/image-128-300x116.png 300w" sizes="(max-width: 565px) 100vw, 565px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>「設定 (Configuration)」</strong> タブを開きます。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="290" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-129-1024x290.png" alt="" class="wp-image-992" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-129-1024x290.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-129-300x85.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-129-768x218.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-129.png 1079w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>下にスクロールし <strong>「レコードの変換と形式変換 (Transform and convert records)」</strong> の右上にある <strong>「編集」</strong> をクリックします。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="146" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-130-1024x146.png" alt="" class="wp-image-994" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-130-1024x146.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-130-300x43.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-130-768x110.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-130-1536x219.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-130.png 1564w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>以下の<strong>2つのチェック</strong>を「オン」にします。
<ul class="wp-block-list">
<li><strong>Amazon CloudWatch Logsからのソースレコードを解凍する:</strong> <code>解凍をオンにする</code> を選択</li>
</ul>
</li>
</ol>



<ol start="1" class="wp-block-list">
<li><strong>ログイベントからメッセージフィールドのみを抽出する:</strong> <code>メッセージ抽出をオンにする</code> を選択 <em>(※この2つ目のチェックが超重要です！AWS特有のJSONの殻を破り捨てて、純粋なApacheログだけをS3に保存してくれます)</em></li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="275" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-133-1024x275.png" alt="" class="wp-image-997" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-133-1024x275.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-133-300x81.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-133-768x206.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-133-1536x413.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-133.png 1637w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>「変更の保存」をクリックします。</p>



<ol start="1" class="wp-block-list"></ol>



<h3 class="wp-block-heading">実際にSQLで分析してみよう！</h3>



<p>これでS3のログを自由に分析できるようになりました。クエリエディタの「＋」ボタンを押して新しいタブを開き、いくつか便利なSQLを試してみましょう！</p>



<p><strong>例1：直近のアクセスを10件だけ見てみる</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>SELECT * FROM wp_access_logs LIMIT 10;
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">SELECT</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">FROM</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">wp_access_logs</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">LIMIT</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">10</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span></code></pre></div>



<p>これを実行すると、Excelのような綺麗な表形式でアクセスログが表示されます！</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="685" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-134-1024x685.png" alt="" class="wp-image-999" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-134-1024x685.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-134-300x201.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-134-768x514.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-134-1536x1028.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-134.png 1657w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>例2：どのページに一番アクセスが来ているかランキングを出す</strong></p>



<p></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>SELECT request, count(*) as count 
FROM wp_access_logs 
GROUP BY request 
ORDER BY count DESC 
LIMIT 10;
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">SELECT</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">request</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">count</span><span style="color: #D8DEE9FF">(</span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF">) </span><span style="color: #81A1C1">as</span><span style="color: #D8DEE9FF"> count </span></span>
<span class="line"><span style="color: #D8DEE9">FROM</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">wp_access_logs</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9">GROUP</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">BY</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">request</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9">ORDER</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">BY</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">count</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">DESC</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9">LIMIT</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">10</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span></code></pre></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="550" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-135-1024x550.png" alt="" class="wp-image-1001" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-135-1024x550.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-135-300x161.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-135-768x413.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-135-1536x825.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-135.png 1567w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>例3：不審なアクセス（404エラー）を出しているIPアドレスを特定する</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>SELECT client_ip, count(*) as error_count 
FROM wp_access_logs 
WHERE status_code = '404' 
GROUP BY client_ip 
ORDER BY error_count DESC 
LIMIT 10;
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">SELECT</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">client_ip</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">count</span><span style="color: #D8DEE9FF">(</span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF">) </span><span style="color: #81A1C1">as</span><span style="color: #D8DEE9FF"> error_count </span></span>
<span class="line"><span style="color: #D8DEE9">FROM</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">wp_access_logs</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9">WHERE</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">status_code</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">404</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9">GROUP</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">BY</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">client_ip</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9">ORDER</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">BY</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">error_count</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">DESC</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9">LIMIT</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">10</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span></code></pre></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="744" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-136-1024x744.png" alt="" class="wp-image-1002" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-136-1024x744.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-136-300x218.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-136-768x558.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-136.png 1272w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>このように、Athenaを使えば「いつ・誰が・どこにアクセスして・どんなエラーが出たのか」を一瞬で丸裸にできます！</p>



<h2 class="wp-block-heading">まとめ：自分だけの最強ログ基盤が完成！</h2>



<p>全4回にわたって構築してきた「AWSサーバーログ分析基盤」、いかがだったでしょうか。</p>



<ol start="1" class="wp-block-list">
<li><strong>CloudWatch</strong> でサーバーを見に行かずにログを確認し</li>



<li><strong>Firehose + S3</strong> で容量を気にせず実質0円で永久保存し</li>



<li><strong>EventBridge(CloudWatchアラーム) + SNS</strong> で攻撃を即座に検知し</li>



<li><strong>Athena</strong> で好きな時にビッグデータ分析ができる</li>
</ol>



<p>大企業が数百万円かけて構築するようなシステムを、個人ブログの規模なら**「月額0円」**で運用できる。これこそがクラウド（AWS）の最大の魅力であり、エンジニアとしての大きな武器になります。</p>



<p>ぜひご自身のブログでも、この記事を参考に最強の監視基盤を作ってみてください！</p>



<p></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpolepolelife.com%2Fathenasqlanalysisaws%2F&amp;linkname=%E3%80%90%E6%9C%88%E9%A1%8D0%E5%86%86%E3%81%A7%E9%81%8B%E7%94%A8%E5%8F%AF%E8%83%BD%E3%80%91%E8%87%AA%E4%BD%9C%E3%83%AD%E3%82%B0%E5%88%86%E6%9E%90%E5%9F%BA%E7%9B%A4%E3%81%AE%E3%82%B3%E3%82%B9%E3%83%88%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E6%A4%9C%E8%A8%BC%EF%BC%86Athena%E3%81%A7SQL%E5%88%86%E6%9E%90%EF%BC%81" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fpolepolelife.com%2Fathenasqlanalysisaws%2F&amp;linkname=%E3%80%90%E6%9C%88%E9%A1%8D0%E5%86%86%E3%81%A7%E9%81%8B%E7%94%A8%E5%8F%AF%E8%83%BD%E3%80%91%E8%87%AA%E4%BD%9C%E3%83%AD%E3%82%B0%E5%88%86%E6%9E%90%E5%9F%BA%E7%9B%A4%E3%81%AE%E3%82%B3%E3%82%B9%E3%83%88%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E6%A4%9C%E8%A8%BC%EF%BC%86Athena%E3%81%A7SQL%E5%88%86%E6%9E%90%EF%BC%81" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpolepolelife.com%2Fathenasqlanalysisaws%2F&amp;linkname=%E3%80%90%E6%9C%88%E9%A1%8D0%E5%86%86%E3%81%A7%E9%81%8B%E7%94%A8%E5%8F%AF%E8%83%BD%E3%80%91%E8%87%AA%E4%BD%9C%E3%83%AD%E3%82%B0%E5%88%86%E6%9E%90%E5%9F%BA%E7%9B%A4%E3%81%AE%E3%82%B3%E3%82%B9%E3%83%88%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E6%A4%9C%E8%A8%BC%EF%BC%86Athena%E3%81%A7SQL%E5%88%86%E6%9E%90%EF%BC%81" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpolepolelife.com%2Fathenasqlanalysisaws%2F&#038;title=%E3%80%90%E6%9C%88%E9%A1%8D0%E5%86%86%E3%81%A7%E9%81%8B%E7%94%A8%E5%8F%AF%E8%83%BD%E3%80%91%E8%87%AA%E4%BD%9C%E3%83%AD%E3%82%B0%E5%88%86%E6%9E%90%E5%9F%BA%E7%9B%A4%E3%81%AE%E3%82%B3%E3%82%B9%E3%83%88%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E6%A4%9C%E8%A8%BC%EF%BC%86Athena%E3%81%A7SQL%E5%88%86%E6%9E%90%EF%BC%81" data-a2a-url="https://polepolelife.com/athenasqlanalysisaws/" data-a2a-title="【月額0円で運用可能】自作ログ分析基盤のコストパフォーマンス検証＆AthenaでSQL分析！"></a></p>]]></content:encoded>
					
					<wfw:commentRss>https://polepolelife.com/athenasqlanalysisaws/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【実質0円】Kinesis + Firehose + S3で、サーバーログの『永久保存版』を自動構築する（第2回）</title>
		<link>https://polepolelife.com/kinesis-firehose-s3/</link>
					<comments>https://polepolelife.com/kinesis-firehose-s3/#respond</comments>
		
		<dc:creator><![CDATA[david daichan]]></dc:creator>
		<pubDate>Tue, 17 Feb 2026 14:44:18 +0000</pubDate>
				<category><![CDATA[aws]]></category>
		<guid isPermaLink="false">https://polepolelife.com/?p=920</guid>

					<description><![CDATA[前回の記事では、Lightsail上のWordPressログをAWSの「CloudWatch Logs」に集約して、ブラウザから簡単に見られるようにしました。 しかし、CloudWatch Logsはそのまま放置するとデータが溜まり続け、無料枠（5GB/月）を超えると課金されてしまいます。 そこで今回は、**「CloudWatchに届いたログを、自動的にAmazon S3（超格安のストレージ）へ移動させて永久保存する仕組み」**を作ります！ これを構築すれば、どれだけログが溜まっても**維持費は月に数円〜数十円（月間数万PVなら実質0円レベル）**に抑えられます。 今回も初心者向けに、画面のクリック手順まで詳しく解説していきます！ 今回の完成イメージ 簡単に言えば下記のようになります 💡 豆知識： 以前は「Kinesis Data Firehose」という名前でしたが、最近AWSのアップデートで**「Amazon Data Firehose」**に名前が変わりました。機能は同じなので安心してくださいね。 ログの「最終保管庫（S3バケット）」を作る]]></description>
										<content:encoded><![CDATA[
<p>前回の記事では、Lightsail上のWordPressログをAWSの「CloudWatch Logs」に集約して、ブラウザから簡単に見られるようにしました。</p>



<p>しかし、CloudWatch Logsはそのまま放置するとデータが溜まり続け、無料枠（5GB/月）を超えると課金されてしまいます。 そこで今回は、**「CloudWatchに届いたログを、自動的にAmazon S3（超格安のストレージ）へ移動させて永久保存する仕組み」**を作ります！</p>



<p>これを構築すれば、どれだけログが溜まっても**維持費は月に数円〜数十円（月間数万PVなら実質0円レベル）**に抑えられます。 今回も初心者向けに、画面のクリック手順まで詳しく解説していきます！</p>



<h2 class="wp-block-heading">今回の完成イメージ</h2>



<ol start="1" class="wp-block-list">
<li>WordPressのログが <code>CloudWatch Logs</code> に届く</li>



<li><code>Amazon Data Firehose (旧: Kinesis Data Firehose)</code> がログをキャッチする</li>



<li><code>Amazon S3</code> に自動でファイルとして整理・保存される！</li>
</ol>



<p>簡単に言えば下記のようになります</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1024" height="559" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/kinesisonepicture.jpg" alt="" class="wp-image-921" srcset="https://polepolelife.com/wp-content/uploads/2026/02/kinesisonepicture.jpg 1024w, https://polepolelife.com/wp-content/uploads/2026/02/kinesisonepicture-300x164.jpg 300w, https://polepolelife.com/wp-content/uploads/2026/02/kinesisonepicture-768x419.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 豆知識：</strong> 以前は「Kinesis Data Firehose」という名前でしたが、最近AWSのアップデートで**「Amazon Data Firehose」**に名前が変わりました。機能は同じなので安心してくださいね。</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">ログの「最終保管庫（S3バケット）」を作る</h2>



<p>まずは、ログを永久保存するための箱（S3バケット）を用意します。</p>



<ol start="1" class="wp-block-list">
<li>AWSマネジメントコンソールの検索バーで**「S3」**と検索して開きます。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="260" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-81-1024x260.png" alt="" class="wp-image-924" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-81-1024x260.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-81-300x76.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-81-768x195.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-81.png 1059w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>右上の**「バケットを作成」**ボタンをクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="405" height="109" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-82.png" alt="" class="wp-image-925" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-82.png 405w, https://polepolelife.com/wp-content/uploads/2026/02/image-82-300x81.png 300w" sizes="(max-width: 405px) 100vw, 405px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>バケット名</strong>に <code>yourblog-logs-2026</code> など、好きな名前を入れます。（※世界中で自分だけのユニークな名前にする必要があります）</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="455" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-83-1024x455.png" alt="" class="wp-image-926" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-83-1024x455.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-83-300x133.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-83-768x341.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-83.png 1249w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>**「パブリックアクセスをすべてブロック」**にチェックが入っていることを確認します。（ログという機密情報なので、絶対に非公開にします）</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="123" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-84-1024x123.png" alt="" class="wp-image-927" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-84-1024x123.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-84-300x36.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-84-768x92.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-84-1536x184.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-84-2048x245.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ul start="1" class="wp-block-list">
<li>一番下までスクロールして、**「バケットを作成」**をクリックします。</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="532" height="139" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-85.png" alt="" class="wp-image-928" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-85.png 532w, https://polepolelife.com/wp-content/uploads/2026/02/image-85-300x78.png 300w" sizes="(max-width: 532px) 100vw, 532px" /></figure>



<p>正常に作成されれば、ひとまずOkです</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="113" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-86-1024x113.png" alt="" class="wp-image-929" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-86-1024x113.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-86-300x33.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-86-768x85.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-86.png 1251w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">ログの「自動配達員（Firehose）」を作る</h2>



<p>次に、CloudWatchからS3へログを運んでくれる配達員を設定します。</p>



<ol start="1" class="wp-block-list">
<li>検索バーで**「Firehose」**と検索し、「Amazon Data Firehose」を開きます。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="187" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-87-1024x187.png" alt="" class="wp-image-931" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-87-1024x187.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-87-300x55.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-87-768x140.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-87.png 1366w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>**「Firehose ストリームを作成」**をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="614" height="302" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-88.png" alt="" class="wp-image-932" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-88.png 614w, https://polepolelife.com/wp-content/uploads/2026/02/image-88-300x148.png 300w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<ol start="1" class="wp-block-list">
<li>送信元と送信先を以下のように設定します。
<ul class="wp-block-list">
<li><strong>送信元 (Source):</strong> <code>Direct PUT</code></li>



<li><strong>送信先 (Destination):</strong> <code>Amazon S3</code></li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="325" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-89-1024x325.png" alt="" class="wp-image-933" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-89-1024x325.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-89-300x95.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-89-768x244.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-89-1536x488.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-89.png 1825w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>Firehose ストリーム名</strong>に <code>wp-log-delivery-stream</code> と入力します。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="865" height="244" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-90.png" alt="" class="wp-image-934" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-90.png 865w, https://polepolelife.com/wp-content/uploads/2026/02/image-90-300x85.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-90-768x217.png 768w" sizes="(max-width: 865px) 100vw, 865px" /></figure>



<p>宛先の設定（Destination settings）で、**「参照」**ボタンを押し、ステップ1で作ったS3バケットを選択します。私はpolepolelife-logs と名付けたのでそれを使います</p>



<ol start="1" class="wp-block-list"></ol>



<figure class="wp-block-image size-full"><img decoding="async" width="838" height="262" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-91.png" alt="" class="wp-image-935" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-91.png 838w, https://polepolelife.com/wp-content/uploads/2026/02/image-91-300x94.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-91-768x240.png 768w" sizes="(max-width: 838px) 100vw, 838px" /></figure>



<p>一番下までスクロールして、**「Firehose ストリームを作成」**をクリックします。 <em>(※作成完了まで数分かかることがあります)</em>　時々エラーになるときがありますが、その場合数分待ってから、「Firehose ストリームを作成」をクリックしてください</p>



<ol start="1" class="wp-block-list"></ol>



<figure class="wp-block-image size-full"><img decoding="async" width="584" height="133" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-92.png" alt="" class="wp-image-936" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-92.png 584w, https://polepolelife.com/wp-content/uploads/2026/02/image-92-300x68.png 300w" sizes="(max-width: 584px) 100vw, 584px" /></figure>



<p>下記のように作成されればOKです</p>



<figure class="wp-block-image size-full"><img decoding="async" width="640" height="97" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-93.png" alt="" class="wp-image-937" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-93.png 640w, https://polepolelife.com/wp-content/uploads/2026/02/image-93-300x45.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">CloudWatchに「通行証（IAMロール）」を渡す</h2>



<p><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ここが一番の「ハマりポイント」です！</strong> CloudWatchが勝手にFirehoseへデータを送ることはできないため、「送ってもいいよ」という許可証（IAMロール）を作成します。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="651" height="200" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-94.png" alt="" class="wp-image-941" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-94.png 651w, https://polepolelife.com/wp-content/uploads/2026/02/image-94-300x92.png 300w" sizes="(max-width: 651px) 100vw, 651px" /></figure>



<p><strong>1. ロールの作成画面へ</strong> 検索バーで**「IAM」<strong>と検索 ＞ 左メニューの</strong>「ロール」** ＞ **「ロールを作成」**をクリック。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="436" height="148" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-96.png" alt="" class="wp-image-943" style="width:436px;height:auto" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-96.png 436w, https://polepolelife.com/wp-content/uploads/2026/02/image-96-300x102.png 300w" sizes="(max-width: 436px) 100vw, 436px" /></figure>



<p><strong>2. 信頼されたエンティティの選択</strong> 「カスタム信頼ポリシー」を選択し、以下のコードを<strong>そのまま丸ごと上書きコピー＆ペースト</strong>します。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{
  "Version": "2012-10-17",
  "Statement": &#91;
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "logs.ap-northeast-1.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  &#93;
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Version</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">: </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">2012-10-17</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Statement</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">: &#91;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Effect</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Allow</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Principal</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Service</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">logs.ap-northeast-1.amazonaws.com</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Action</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">sts:AssumeRole</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &#93;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"></span></code></pre></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="822" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-97-1024x822.png" alt="" class="wp-image-944" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-97-1024x822.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-97-300x241.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-97-768x616.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-97.png 1377w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>貼り付けたら「次へ」をクリック。</p>



<p><strong>3. 許可を追加</strong> ここは何もチェックせずに、そのまま「次へ」をクリックします。（後で手動で追加します）</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="391" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-98-1024x391.png" alt="" class="wp-image-945" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-98-1024x391.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-98-300x115.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-98-768x293.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-98.png 1293w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>4. ロールの名前を決める</strong> ロール名に PolePoleCWLtoFirehoseRoleと入力し、右下の「ロールを作成」をクリックします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="400" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-99-1024x400.png" alt="" class="wp-image-946" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-99-1024x400.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-99-300x117.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-99-768x300.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-99-1536x600.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-99.png 1539w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>5. 権限（ポリシー）を付与する</strong> 作成した  PolePoleCWLtoFirehoseRoleを一覧から探してクリックします。 </p>



<p></p>



<figure class="wp-block-image size-full"><img decoding="async" width="658" height="279" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-100.png" alt="" class="wp-image-947" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-100.png 658w, https://polepolelife.com/wp-content/uploads/2026/02/image-100-300x127.png 300w" sizes="(max-width: 658px) 100vw, 658px" /></figure>



<p>「許可を追加」＞「インラインポリシーを作成」をクリックし、「JSON」タブを選んで以下のコードを丸ごと上書きコピペします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="824" height="239" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-101.png" alt="" class="wp-image-948" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-101.png 824w, https://polepolelife.com/wp-content/uploads/2026/02/image-101-300x87.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-101-768x223.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></figure>



<p></p>



<p></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": &#91;
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            &#93;,
            "Resource": "*"
        }
    ]
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Version</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">: </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">2012-10-17</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Statement</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">: [</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Effect</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Allow</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Action</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> &#91;</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">firehose:PutRecord</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">                </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">firehose:PutRecordBatch</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            &#93;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Resource</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">*</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">    ]</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"></span></code></pre></div>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="318" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-102-1024x318.png" alt="" class="wp-image-949" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-102-1024x318.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-102-300x93.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-102-768x238.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-102-1536x477.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-102-2048x636.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>「次へ」を押し、ポリシー名に <code>FirehoseDeliveryPolicy</code> と入力して「ポリシーの作成」をクリックします。 これで最強の通行証が完成しました！</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="446" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-103-1024x446.png" alt="" class="wp-image-950" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-103-1024x446.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-103-300x131.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-103-768x334.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-103-1536x669.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-103-2048x891.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">CloudWatchとFirehoseを合体させる！</h2>



<p><span style="background-image: linear-gradient(transparent 60%, rgba(247, 141, 167, 0.5) 60%)" class="sme-highlighter">いよいよ最後の仕上げです。前回の記事で作ったCloudWatch Logsに、「このログをFirehoseに流してね」という指示（サブスクリプションフィルター）を出します。</span></p>



<ol start="1" class="wp-block-list">
<li>検索バーで**「CloudWatch」**と検索して開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="393" height="138" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-104.png" alt="" class="wp-image-952" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-104.png 393w, https://polepolelife.com/wp-content/uploads/2026/02/image-104-300x105.png 300w" sizes="(max-width: 393px) 100vw, 393px" /></figure>



<ol start="1" class="wp-block-list">
<li>左メニューから「ログ」＞**「ロググループ」**を開き、前回作成した <code>lightsail-wp-access-log</code> をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="751" height="376" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-105.png" alt="" class="wp-image-953" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-105.png 751w, https://polepolelife.com/wp-content/uploads/2026/02/image-105-300x150.png 300w" sizes="(max-width: 751px) 100vw, 751px" /></figure>



<ol start="1" class="wp-block-list">
<li>**「サブスクリプションフィルター」**というタブを開きます。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="207" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-106-1024x207.png" alt="" class="wp-image-954" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-106-1024x207.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-106-300x61.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-106-768x155.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-106.png 1287w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li>**「作成」<strong>ボタンを押し、</strong>「Amazon Data Firehose サブスクリプションフィルターを作成」**を選択します。</li>



<li>以下の通りに設定します。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="855" height="306" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-107.png" alt="" class="wp-image-956" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-107.png 855w, https://polepolelife.com/wp-content/uploads/2026/02/image-107-300x107.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-107-768x275.png 768w" sizes="(max-width: 855px) 100vw, 855px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>Firehose ストリーム:</strong> ステップ2で作った <code>wp-log-delivery-stream</code> を選択</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="382" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-108-1024x382.png" alt="" class="wp-image-957" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-108-1024x382.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-108-300x112.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-108-768x286.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-108.png 1261w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>IAM ロール:</strong> ステップ3で作った PolePoleCWLtoFirehoseRole を選択</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="1023" height="451" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-109.png" alt="" class="wp-image-958" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-109.png 1023w, https://polepolelife.com/wp-content/uploads/2026/02/image-109-300x132.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-109-768x339.png 768w" sizes="(max-width: 1023px) 100vw, 1023px" /></figure>



<ol start="1" class="wp-block-list">
<li><strong>ログの形式:</strong> <code>その他の (Other)</code> を選択</li>
</ol>



<p></p>



<p><strong>サブスクリプションフィルターのパターン:</strong> 空白のままでOKです（すべてのログを送るため）</p>



<p><strong>サブスクリプションフィルター名:</strong> <code>send-to-firehose</code> と入力</p>



<ol start="1" class="wp-block-list"></ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="434" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-110-1024x434.png" alt="" class="wp-image-959" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-110-1024x434.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-110-300x127.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-110-768x326.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-110.png 1313w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>右下の**「ストリーミングを開始」**をクリックします！</p>



<figure class="wp-block-image size-full"><img decoding="async" width="559" height="106" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-111.png" alt="" class="wp-image-960" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-111.png 559w, https://polepolelife.com/wp-content/uploads/2026/02/image-111-300x57.png 300w" sizes="(max-width: 559px) 100vw, 559px" /></figure>



<ol start="1" class="wp-block-list"></ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">完了！S3にログが届いているか確認しよう</h2>



<p>お疲れ様でした！これで自動連携システムは完成です。</p>



<p>ログは「5分ごと」または「5MBたまるごと」にまとめてS3へ送られます。ご自身のブログに何度かアクセスしてアクセスログを発生させた後、<strong>5分〜10分ほど待ってからS3の画面を見てみましょう。</strong></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="332" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-112-1024x332.png" alt="" class="wp-image-961" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-112-1024x332.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-112-300x97.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-112-768x249.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-112.png 1368w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>S3バケットの中に <code>2026/02/18/...</code> のように年・月・日のフォルダが自動的に作成され、その中にログファイルが保存されていれば<strong>大成功</strong>です！ （※エラーログ <code>lightsail-wp-error-log</code> も保存したい場合は、ステップ4の手順をエラーログ側でも同じように繰り返すだけでOKです）</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="353" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-113-1024x353.png" alt="" class="wp-image-963" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-113-1024x353.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-113-300x103.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-113-768x265.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-113-1536x529.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-113-2048x706.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">まとめ</h3>



<p>これで、あなたのブログは**「サーバーに負荷をかけず」「実質0円で」「半永久的に」**アクセスログを保存できる、エンタープライズ（大企業）並みのデータ基盤を手に入れました！</p>



<p>次回は、このS3に溜まった大量のログを、SQLを使って一瞬で分析できる魔法のツール**「Amazon Athena」**の使い方をご紹介します。お楽しみに！</p>



<p></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpolepolelife.com%2Fkinesis-firehose-s3%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91Kinesis%20%2B%20Firehose%20%2B%20S3%E3%81%A7%E3%80%81%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AD%E3%82%B0%E3%81%AE%E3%80%8E%E6%B0%B8%E4%B9%85%E4%BF%9D%E5%AD%98%E7%89%88%E3%80%8F%E3%82%92%E8%87%AA%E5%8B%95%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%EF%BC%88%E7%AC%AC2%E5%9B%9E%EF%BC%89" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fpolepolelife.com%2Fkinesis-firehose-s3%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91Kinesis%20%2B%20Firehose%20%2B%20S3%E3%81%A7%E3%80%81%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AD%E3%82%B0%E3%81%AE%E3%80%8E%E6%B0%B8%E4%B9%85%E4%BF%9D%E5%AD%98%E7%89%88%E3%80%8F%E3%82%92%E8%87%AA%E5%8B%95%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%EF%BC%88%E7%AC%AC2%E5%9B%9E%EF%BC%89" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpolepolelife.com%2Fkinesis-firehose-s3%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91Kinesis%20%2B%20Firehose%20%2B%20S3%E3%81%A7%E3%80%81%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AD%E3%82%B0%E3%81%AE%E3%80%8E%E6%B0%B8%E4%B9%85%E4%BF%9D%E5%AD%98%E7%89%88%E3%80%8F%E3%82%92%E8%87%AA%E5%8B%95%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%EF%BC%88%E7%AC%AC2%E5%9B%9E%EF%BC%89" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpolepolelife.com%2Fkinesis-firehose-s3%2F&#038;title=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91Kinesis%20%2B%20Firehose%20%2B%20S3%E3%81%A7%E3%80%81%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AD%E3%82%B0%E3%81%AE%E3%80%8E%E6%B0%B8%E4%B9%85%E4%BF%9D%E5%AD%98%E7%89%88%E3%80%8F%E3%82%92%E8%87%AA%E5%8B%95%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%EF%BC%88%E7%AC%AC2%E5%9B%9E%EF%BC%89" data-a2a-url="https://polepolelife.com/kinesis-firehose-s3/" data-a2a-title="【実質0円】Kinesis + Firehose + S3で、サーバーログの『永久保存版』を自動構築する（第2回）"></a></p>]]></content:encoded>
					
					<wfw:commentRss>https://polepolelife.com/kinesis-firehose-s3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【実質0円】Lightsail WordPressのログをCloudWatch Logsへ集約してみた（基本設定編）</title>
		<link>https://polepolelife.com/lightsail-cloudwatch/</link>
					<comments>https://polepolelife.com/lightsail-cloudwatch/#respond</comments>
		
		<dc:creator><![CDATA[david daichan]]></dc:creator>
		<pubDate>Tue, 17 Feb 2026 14:17:53 +0000</pubDate>
				<category><![CDATA[aws]]></category>
		<guid isPermaLink="false">https://polepolelife.com/?p=889</guid>

					<description><![CDATA[ブログを運営していると、「どんなアクセスがきているのか」「サーバーでエラーは起きていないか」を把握することが重要になってきます。 しかし、サーバーに毎回ログインして黒い画面（ターミナル）でログを確認するのは面倒ですよね。そこで今回は、Amazon Lightsailで動かしているWordPressのアクセスログとエラーログを、AWSの「CloudWatch Logs」へ自動的に転送・集約する仕組みを作ります。 月間数万PV以下の個人ブログなら、AWSの「無料枠」に収まるため維持費は実質0円！初心者の方でもコピペで進められるように、手順を1つずつ丁寧に解説していきます。 前提条件 全体像 全体像としては単純で、単にEC2のログをcloudwatch に送るだけですが、少々コマンドラインのところがめんどくさいのでこの記事では詳細に書きます。特にエージェントのインストールとか、nanoでチャカチャカ編集するところがあるので、そこのところはご了承ください。 ログ送信用の「鍵（IAMユーザー）」を作成する Lightsailのサーバーが、AWSのCloudWatchにログを書き込むための「許可証」を作成します。 AWSマネジメントコンソールにログインし、検索バーで**「IAM」**と検索して開きます。 左のメニューから**「ユーザー」をクリックし、「ユーザーの作成」**ボタンを押します。 ユーザー名に lightsail-cloudwatch-user （お好きな名前でOK）と入力し、「次へ」をクリックします。 許可のオプションで**「ポリシーを直接アタッチする」**を選択します。 検索窓に]]></description>
										<content:encoded><![CDATA[
<p>ブログを運営していると、「どんなアクセスがきているのか」「サーバーでエラーは起きていないか」を把握することが重要になってきます。</p>



<p>しかし、サーバーに毎回ログインして黒い画面（ターミナル）でログを確認するのは面倒ですよね。そこで今回は、<strong>Amazon Lightsailで動かしているWordPressのアクセスログとエラーログを、AWSの「CloudWatch Logs」へ自動的に転送・集約する仕組み</strong>を作ります。</p>



<p>月間数万PV以下の個人ブログなら、AWSの「無料枠」に収まるため<strong>維持費は実質0円</strong>！初心者の方でもコピペで進められるように、手順を1つずつ丁寧に解説していきます。</p>



<h2 class="wp-block-heading">前提条件</h2>



<ul class="wp-block-list">
<li>Amazon LightsailでWordPressを構築済みであること（標準的なBitnami版を想定）</li>



<li>AWSマネジメントコンソールにログインできること</li>



<li>nano もしくは vi などコマンドライン操作にアレルギーがないこと</li>
</ul>



<h2 class="wp-block-heading">全体像</h2>



<p>全体像としては単純で、単にEC2のログをcloudwatch に送るだけですが、少々コマンドラインのところがめんどくさいのでこの記事では詳細に書きます。特にエージェントのインストールとか、nanoでチャカチャカ編集するところがあるので、そこのところはご了承ください。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1024" height="559" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/cloudwatchandlightsail.jpg" alt="" class="wp-image-916" srcset="https://polepolelife.com/wp-content/uploads/2026/02/cloudwatchandlightsail.jpg 1024w, https://polepolelife.com/wp-content/uploads/2026/02/cloudwatchandlightsail-300x164.jpg 300w, https://polepolelife.com/wp-content/uploads/2026/02/cloudwatchandlightsail-768x419.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">ログ送信用の「鍵（IAMユーザー）」を作成する</h2>



<p>Lightsailのサーバーが、AWSのCloudWatchにログを書き込むための「許可証」を作成します。</p>



<p>AWSマネジメントコンソールにログインし、検索バーで**「IAM」**と検索して開きます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="385" height="216" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-62.png" alt="" class="wp-image-890" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-62.png 385w, https://polepolelife.com/wp-content/uploads/2026/02/image-62-300x168.png 300w" sizes="(max-width: 385px) 100vw, 385px" /></figure>



<p>左のメニューから**「ユーザー」<strong>をクリックし、</strong>「ユーザーの作成」**ボタンを押します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="127" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-63-1024x127.png" alt="" class="wp-image-891" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-63-1024x127.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-63-300x37.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-63-768x95.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-63.png 1343w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>ユーザー名</strong>に <code>lightsail-cloudwatch-user</code> （お好きな名前でOK）と入力し、「次へ」をクリックします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="360" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-64-1024x360.png" alt="" class="wp-image-892" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-64-1024x360.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-64-300x105.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-64-768x270.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-64-1536x539.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-64.png 1751w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>許可のオプションで**「ポリシーを直接アタッチする」**を選択します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="302" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-65-1024x302.png" alt="" class="wp-image-893" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-65-1024x302.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-65-300x88.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-65-768x226.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-65.png 1326w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>検索窓に <code>CloudWatchAgentServerPolicy</code> と入力し、出てきたチェックボックスにチェックを入れて「次へ」→「ユーザーの作成」を押します。</p>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="448" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-66-1024x448.png" alt="" class="wp-image-894" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-66-1024x448.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-66-300x131.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-66-768x336.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-66.png 1365w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>作成したユーザー（<code>lightsail-cloudwatch-user</code>）の名前をクリックします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="464" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-67-1024x464.png" alt="" class="wp-image-895" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-67-1024x464.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-67-300x136.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-67-768x348.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-67.png 1456w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>**「セキュリティ認証情報」<strong>タブを開き、少し下にある</strong>「アクセスキーを作成」**をクリックします。</p>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="501" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-68-1024x501.png" alt="" class="wp-image-896" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-68-1024x501.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-68-300x147.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-68-768x376.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-68.png 1406w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>ユースケースは「CLI」などを選び、作成を進めます。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="618" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-69-1024x618.png" alt="" class="wp-image-897" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-69-1024x618.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-69-300x181.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-69-768x463.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-69.png 1427w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>最後に**「アクセスキー」<strong>と</strong>「シークレットアクセスキー」<strong>が表示されます。</strong>※これは後ですぐ使うので、必ずメモ帳などにコピーしておいてください！**（画面を閉じると二度と確認できません）</p>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="235" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-70-1024x235.png" alt="" class="wp-image-898" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-70-1024x235.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-70-300x69.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-70-768x176.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-70.png 1391w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"></h3>



<p></p>



<h2 class="wp-block-heading">Lightsailサーバーに接続する</h2>



<p>次に、Lightsailのサーバーに入って作業をします。</p>



<ol start="1" class="wp-block-list">
<li>Lightsailの管理画面を開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="643" height="342" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-71.png" alt="" class="wp-image-900" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-71.png 643w, https://polepolelife.com/wp-content/uploads/2026/02/image-71-300x160.png 300w" sizes="(max-width: 643px) 100vw, 643px" /></figure>



<ol start="1" class="wp-block-list">
<li>対象のWordPressインスタンスにある**「&gt;_」のアイコン（SSH接続）**をクリックして、ブラウザ上で黒いターミナル画面を開きます。</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="445" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-72-1024x445.png" alt="" class="wp-image-901" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-72-1024x445.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-72-300x130.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-72-768x334.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-72.png 1512w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">CloudWatch Agentをインストールする</h2>



<p>サーバーのログをAWSへ運んでくれる「配達員（Agent）」をインストールします。以下のコマンドを1行ずつコピーして、ターミナルに貼り付け（右クリックで貼り付け）、Enterキーを押してください。</p>



<p><strong>agent のプログラムをダウンロード</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>wget https://amazoncloudwatch-agent.s3.amazonaws.com/debian/amd64/latest/amazon-cloudwatch-agent.deb
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">wget</span><span style="color: #D8DEE9FF"> https</span><span style="color: #ECEFF4">:</span><span style="color: #616E88">//amazoncloudwatch-agent.s3.amazonaws.com/debian/amd64/latest/amazon-cloudwatch-agent.deb</span></span>
<span class="line"></span></code></pre></div>



<p><strong> プログラムをインストール</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">sudo</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">dpkg</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">E</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">.</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">amazon</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">cloudwatch</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">agent</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">deb</span></span>
<span class="line"></span></code></pre></div>



<p>これでインストールは完了です！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">サーバーに「鍵（認証情報）」をセットする</h2>



<p>先程作成した「アクセスキー」をサーバーに教え込みます。</p>



<p><strong> 鍵を置くためのフォルダを作成</strong></p>



<p></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>sudo mkdir -p /root/.aws
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">sudo</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">mkdir</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">p</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">root</span><span style="color: #81A1C1">/</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">aws</span></span>
<span class="line"></span></code></pre></div>



<p><strong>2. 鍵ファイルを作成して編集モードに入る</strong></p>



<p></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>sudo nano /root/.aws/credentials
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">sudo</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">nano</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">root</span><span style="color: #81A1C1">/</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">aws</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">credentials</span></span>
<span class="line"></span></code></pre></div>



<p><strong>3. 以下の内容を貼り付けて、キーの部分を書き換える</strong> 以下のテキストをコピーして貼り付け、<code>あなたのアクセスキー</code> と <code>あなたのシークレットキー</code> の部分を、ステップ1でメモしたものに書き換えてください。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>&#91;default&#93;
aws_access_key_id = あなたのアクセスキー
aws_secret_access_key = あなたのシークレットキー
region = ap-northeast-1
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">default</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9">aws_access_key_id</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">あなたのアクセスキー</span></span>
<span class="line"><span style="color: #D8DEE9">aws_secret_access_key</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">あなたのシークレットキー</span></span>
<span class="line"><span style="color: #D8DEE9">region</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">ap</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">northeast</span><span style="color: #81A1C1">-</span><span style="color: #B48EAD">1</span></span>
<span class="line"></span></code></pre></div>



<p>※ <code>ap-northeast-1</code> は東京リージョンの意味です。</p>



<p><strong>保存して閉じる</strong> 書き換えたら、キーボードの <code>Ctrl</code> + <code>O</code> を押し、そのまま <code>Enter</code> を押して保存。その後、 <code>Ctrl</code> + <code>X</code> で編集画面を閉じます。</p>



<p></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">ログの収集ルール（設定ファイル）を作る</h2>



<p>「どのログファイルをCloudWatchに送るか」という指示書を作成します。LightsailのWordPress（Bitnami）は、通常 <code>/opt/bitnami/apache2/logs/</code> という場所にログが貯まっています。</p>



<p><strong>設定ファイルを作成して編集モードに入る</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>sudo nano /opt/aws/amazon-cloudwatch-agent/bin/config.json</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">sudo</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">nano</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">opt</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">aws</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">amazon</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">cloudwatch</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">agent</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">bin</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">config</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">json</span></span></code></pre></div>



<p><strong>2. 以下の内容をそのまま丸ごとコピーして貼り付ける</strong></p>



<p>JSON</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{
  "agent": {
    "run_as_user": "root"
  },
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": &#91;
          {
            "file_path": "/opt/bitnami/apache2/logs/access_log",
            "log_group_name": "lightsail-wp-access-log",
            "log_stream_name": "{instance_id}"
          },
          {
            "file_path": "/opt/bitnami/apache2/logs/error_log",
            "log_group_name": "lightsail-wp-error-log",
            "log_stream_name": "{instance_id}"
          }
        &#93;
      }
    }
  }
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">agent</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">: </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">run_as_user</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">root</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">logs</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">: </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">logs_collected</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">files</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">collect_list</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> &#91;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">file_path</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">/opt/bitnami/apache2/logs/access_log</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">log_group_name</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">lightsail-wp-access-log</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">log_stream_name</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">{instance_id}</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">file_path</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">/opt/bitnami/apache2/logs/error_log</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">log_group_name</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">lightsail-wp-error-log</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">log_stream_name</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">{instance_id}</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">        &#93;</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"></span></code></pre></div>



<p>※古いバージョンのBitnamiだと <code>apache2</code> が <code>apache</code> になっていることがあります。</p>



<p><strong>保存して閉じる</strong> 先ほどと同じように、 <code>Ctrl</code> + <code>O</code> → <code>Enter</code> → <code>Ctrl</code> + <code>X</code> で保存して閉じます。</p>



<h3 class="wp-block-heading">Agentに鍵（IAMユーザー）を強制する</h3>



<p>Lightsailの黒い画面（ターミナル）に戻って、以下の3ステップを実行してください。</p>



<h4 class="wp-block-heading">共通設定ファイル（common-config.toml）を作成・編集する</h4>



<p>以下のコマンドで、Agentの全体設定ファイルを開きます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>sudo nano /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">sudo</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">nano</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">opt</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">aws</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">amazon</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">cloudwatch</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">agent</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">etc</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">common</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">config</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">toml</span></span>
<span class="line"></span></code></pre></div>



<h4 class="wp-block-heading">2. 以下の内容を貼り付ける</h4>



<p>開いたファイル（おそらく空っぽです）に、以下の4行をそのままコピーして貼り付けてください。 これが「/root/.aws/credentials に置いてある鍵を使ってね」という絶対命令になります。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>&#91;credentials&#93;
  shared_credential_profile = "default"
  shared_credential_file = "/root/.aws/credentials"
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">credentials</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">shared_credential_profile</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">default</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">shared_credential_file</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">/root/.aws/credentials</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"></span></code></pre></div>



<p>貼り付けたら、<code>Ctrl</code> + <code>O</code> → <code>Enter</code> で保存し、<code>Ctrl</code> + <code>X</code> で閉じます。</p>



<h4 class="wp-block-heading"> Agentを「オンプレミスモード」で再起動する</h4>



<p>ここが一番重要です！Agentを起動する際、<code>-m ec2</code> ではなく <strong><code>-m onPremise</code></strong> というオプションを指定して起動します。 これにより、Lightsailの隠しロールを無視して、先ほど指定した鍵を読んでくれるようになります。</p>



<p>以下のコマンドをコピーして実行してください。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m onPremise -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">sudo</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">opt</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">aws</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">amazon</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">cloudwatch</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">agent</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">bin</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">amazon</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">cloudwatch</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">agent</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">ctl</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">a</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">fetch</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">config</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">m</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">onPremise</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">s</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">c</span><span style="color: #D8DEE9FF"> file</span><span style="color: #ECEFF4">:</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">opt</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">aws</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">amazon</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">cloudwatch</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">agent</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">bin</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">config</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">json</span></span>
<span class="line"></span></code></pre></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">確認してみましょう</h3>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="118" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-78-1024x118.png" alt="" class="wp-image-907" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-78-1024x118.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-78-300x35.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-78-768x89.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-78-1536x177.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-78.png 2001w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>上記のように　　</p>



<p><strong>Configuration validation second phase succeeded<br>Configuration validation succeeded</strong></p>



<p></p>



<p>まで出力されればOKです</p>



<h2 class="wp-block-heading"></h2>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">AWS画面でログが届いているか確認する</h2>



<p>最後に、AWSの画面で本当にログが見れるか確認しましょう。</p>



<ol start="1" class="wp-block-list">
<li>AWSマネジメントコンソールで**「CloudWatch」**を検索して開きます。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="809" height="217" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-74.png" alt="" class="wp-image-903" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-74.png 809w, https://polepolelife.com/wp-content/uploads/2026/02/image-74-300x80.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-74-768x206.png 768w" sizes="(max-width: 809px) 100vw, 809px" /></figure>



<ol start="1" class="wp-block-list">
<li>左のメニューから「ログ管理」の中にある**「ロググループ」**をクリックします。</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="334" height="131" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-75.png" alt="" class="wp-image-904" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-75.png 334w, https://polepolelife.com/wp-content/uploads/2026/02/image-75-300x118.png 300w" sizes="(max-width: 334px) 100vw, 334px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="631" height="110" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-76.png" alt="" class="wp-image-905" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-76.png 631w, https://polepolelife.com/wp-content/uploads/2026/02/image-76-300x52.png 300w" sizes="(max-width: 631px) 100vw, 631px" /></figure>



<p></p>



<p>一覧の中に <code>lightsail-wp-access-log</code> と <code>lightsail-wp-error-log</code> が作成されているはずです！</p>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="301" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-79-1024x301.png" alt="" class="wp-image-909" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-79-1024x301.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-79-300x88.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-79-768x226.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-79-1536x451.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-79.png 1587w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>クリックして中に入ると、サーバーのアクセス履歴がリアルタイムで表示されているのが確認できます。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="384" src="https://d1ydh2vme4hpue.cloudfront.net/wp-content/uploads/2026/02/image-80-1024x384.png" alt="" class="wp-image-910" srcset="https://polepolelife.com/wp-content/uploads/2026/02/image-80-1024x384.png 1024w, https://polepolelife.com/wp-content/uploads/2026/02/image-80-300x112.png 300w, https://polepolelife.com/wp-content/uploads/2026/02/image-80-768x288.png 768w, https://polepolelife.com/wp-content/uploads/2026/02/image-80-1536x576.png 1536w, https://polepolelife.com/wp-content/uploads/2026/02/image-80.png 1572w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">まとめ</h2>



<p>お疲れ様でした！これで、サーバーに毎回ログインしなくても、AWSの画面上で安全かつ簡単にWordPressのログを確認できるようになりました。</p>



<p>CloudWatch Logsは<strong>月に5GBまで無料</strong>なので、個人ブログであれば料金を気にする必要はありません。</p>



<p>次回は、この集めたログを使って**「Kinesis Data Firehose」経由でS3へ永久保存する仕組み（しかも実質無料！）」**を構築していきます。お楽しみに！</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpolepolelife.com%2Flightsail-cloudwatch%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91Lightsail%20WordPress%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%92CloudWatch%20Logs%E3%81%B8%E9%9B%86%E7%B4%84%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%EF%BC%88%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A%E7%B7%A8%EF%BC%89" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fpolepolelife.com%2Flightsail-cloudwatch%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91Lightsail%20WordPress%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%92CloudWatch%20Logs%E3%81%B8%E9%9B%86%E7%B4%84%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%EF%BC%88%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A%E7%B7%A8%EF%BC%89" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpolepolelife.com%2Flightsail-cloudwatch%2F&amp;linkname=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91Lightsail%20WordPress%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%92CloudWatch%20Logs%E3%81%B8%E9%9B%86%E7%B4%84%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%EF%BC%88%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A%E7%B7%A8%EF%BC%89" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpolepolelife.com%2Flightsail-cloudwatch%2F&#038;title=%E3%80%90%E5%AE%9F%E8%B3%AA0%E5%86%86%E3%80%91Lightsail%20WordPress%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%92CloudWatch%20Logs%E3%81%B8%E9%9B%86%E7%B4%84%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%EF%BC%88%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A%E7%B7%A8%EF%BC%89" data-a2a-url="https://polepolelife.com/lightsail-cloudwatch/" data-a2a-title="【実質0円】Lightsail WordPressのログをCloudWatch Logsへ集約してみた（基本設定編）"></a></p>]]></content:encoded>
					
					<wfw:commentRss>https://polepolelife.com/lightsail-cloudwatch/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
