<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
    <title>blog.send.sh</title>
    <subtitle>SAKAI, Kazuaki — Blog</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.send.sh/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.send.sh"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-02-23T00:00:00+00:00</updated>
    <id>https://blog.send.sh/atom.xml</id>
    <entry xml:lang="ja">
        <title>send.sh を AWS に移行した</title>
        <published>2026-02-23T00:00:00+00:00</published>
        <updated>2026-02-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.send.sh/posts/migrate-to-aws/"/>
        <id>https://blog.send.sh/posts/migrate-to-aws/</id>
        
        <content type="html" xml:base="https://blog.send.sh/posts/migrate-to-aws/">&lt;p&gt;なんかインターネットに文章を書くのがものすごく久しぶりな気がする。最近までプライベートで PC 触ることもほぼなかったからかもしれない。&lt;&#x2F;p&gt;
&lt;p&gt;このたび 10年以上運用してきた send.sh をお名前.com VPS (KVM) から AWS に移行した。&lt;&#x2F;p&gt;
&lt;p&gt;ここ数年はログインすらしていない状態でずっと放置してたけど、さすがにマズいなと思って Claude に手伝ってもらったらスムーズに移行できた。&lt;&#x2F;p&gt;
&lt;p&gt;ITエンジニアだと大半の人はそうなってると思うけど、ここ最近は作業のほとんどを AI に任せるようになって、昔だったら面倒すぎて腰が重くなっていたようなことも積極的に取り組めるようになり本当にありがたい。&lt;&#x2F;p&gt;
&lt;p&gt;おかげでいつかやろうと思ってた自分用の IME を作らせたりしている。1〜2日でドッグフーディングできるレベルになって、今の時代の開発スピードをしみじみ実感している。&lt;&#x2F;p&gt;
&lt;p&gt;最近プライベートで AI に手伝ってもらって良かったと思っているものは以下のような感じ。&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;確定申告
&lt;ul&gt;
&lt;li&gt;Claude Cowork でやってみたら結構良かったので freee は解約した&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;send.sh の移行
&lt;ul&gt;
&lt;li&gt;このエントリの主題&lt;&#x2F;li&gt;
&lt;li&gt;プライベートリポジトリ(Terraform とかはあんまり全体公開したくないからね)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;開発環境全般の管理
&lt;ul&gt;
&lt;li&gt;リポジトリ名を dotfiles にしてて chezmoi で管理してるが、Brewfile&#x2F;Aptfile&#x2F;Pacmanfileなども管理してたり、各種セットアップスクリプトなども入ってる&lt;&#x2F;li&gt;
&lt;li&gt;これも一部公開したくない情報があるのでプライベートリポジトリ&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;send&#x2F;lexime&quot;&gt;lexime&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;自分用の IME。変換周りはまだ熟れてないところもあるが、普段使いでたまにストレスを感じる程度にはなってきた&lt;&#x2F;li&gt;
&lt;li&gt;自分以外の人にはあまりおすすめできない&lt;&#x2F;li&gt;
&lt;li&gt;そのうちブログになにか書くかも&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;AI 作業はどんどん進むのが楽しくてつい余暇のほとんどを注ぎ込んでしまいがちになるのがちょっと問題だなと思うようになってきた。ジム通いとかサボらないように本当に気をつけないといけない。おかげで PC を触る時間が増えてるので、日記とかはもうちょっと書いたりするようになるかもしれない。とはいえ発信したいことが特にあるわけでもないので、筆無精なままだと思うけど。&lt;&#x2F;p&gt;
&lt;p&gt;話もとっちらかってきたので、今日のところはこのあたりで。
ここから先は実際の移行内容。Claude に書いてもらった。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;yi-xing-qian-nogou-cheng&quot;&gt;移行前の構成&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;サービス&lt;&#x2F;th&gt;&lt;th&gt;技術&lt;&#x2F;th&gt;&lt;th&gt;判断&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;メインサイト&lt;&#x2F;td&gt;&lt;td&gt;nginx + 静的 HTML&lt;&#x2F;td&gt;&lt;td&gt;移行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;メール転送&lt;&#x2F;td&gt;&lt;td&gt;Postfix + SASL&lt;&#x2F;td&gt;&lt;td&gt;AWS SES に移行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;踏み台・ファイル受け渡し&lt;&#x2F;td&gt;&lt;td&gt;ssh&#x2F;scp&#x2F;sftp&lt;&#x2F;td&gt;&lt;td&gt;EC2 に移行&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;各種サービス&lt;&#x2F;td&gt;&lt;td&gt;Ruby など&lt;&#x2F;td&gt;&lt;td&gt;廃止&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;MySQL &#x2F; Redis &#x2F; Memcached&lt;&#x2F;td&gt;&lt;td&gt;localhost&lt;&#x2F;td&gt;&lt;td&gt;廃止&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;yi-xing-hou-nogou-cheng&quot;&gt;移行後の構成&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;mermaid&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;graph TD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    DNS[&amp;quot;Value Domain (DNS)&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    DNS --&amp;gt; CF1[&amp;quot;CloudFront&amp;lt;br&#x2F;&amp;gt;send.sh&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    DNS --&amp;gt; CF2[&amp;quot;CloudFront&amp;lt;br&#x2F;&amp;gt;blog.send.sh&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    DNS --&amp;gt; SES[&amp;quot;SES (受信)&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    CF1 --&amp;gt; S3A[&amp;quot;S3 Bucket&amp;lt;br&#x2F;&amp;gt;(send.sh)&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    CF2 --&amp;gt; S3B[&amp;quot;S3 Bucket&amp;lt;br&#x2F;&amp;gt;(blog.send.sh)&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    SES --&amp;gt; S3E[&amp;quot;S3 (一時保存)&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    S3E --&amp;gt; Lambda[&amp;quot;Lambda&amp;lt;br&#x2F;&amp;gt;(Gmail転送)&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    EC2[&amp;quot;EC2 (t3.micro)&amp;lt;br&#x2F;&amp;gt;scp&#x2F;sftp&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;shi-tuteiru-aws-sabisu&quot;&gt;使っている AWS サービス&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;S3 + CloudFront + ACM&lt;&#x2F;strong&gt; — 静的サイトホスティング (send.sh, blog.send.sh)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;SES + S3 + Lambda&lt;&#x2F;strong&gt; — メール転送 (kazuaki@send.sh → Gmail)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;EC2 (t3.micro)&lt;&#x2F;strong&gt; — 踏み台 + ファイル受け渡し&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Budgets&lt;&#x2F;strong&gt; — コストアラート&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;すべて Terraform で IaC 管理。CI&#x2F;CD は GitHub Actions (OIDC 認証)。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;meruzhuan-song&quot;&gt;メール転送&lt;&#x2F;h2&gt;
&lt;p&gt;Postfix から SES + Lambda に移行した。仕組みは:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;SES がメールを受信して S3 に保存&lt;&#x2F;li&gt;
&lt;li&gt;Lambda が S3 からメールを取得&lt;&#x2F;li&gt;
&lt;li&gt;ヘッダを書き換えて SES 経由で Gmail に転送&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;DKIM-Signature の重複で SES が拒否する問題や、ヘッダ除去時に空行が入ってメールが壊れる問題があったが、Lambda 側で対処した。&lt;&#x2F;p&gt;
&lt;p&gt;メール認証は SPF, DKIM, DMARC をすべて設定。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;burogu&quot;&gt;ブログ&lt;&#x2F;h2&gt;
&lt;p&gt;移行を機に blog.send.sh を立ち上げた。SSG は &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt; を使っている。テーマは自作で、メインサイトと同じターミナル風のデザインにしている。&lt;&#x2F;p&gt;
&lt;p&gt;デプロイは GitHub Actions で &lt;code&gt;blog&#x2F;**&lt;&#x2F;code&gt; への push をトリガーに Zola ビルド → S3 同期 → CloudFront キャッシュ無効化の流れ。メインサイトと同じ構成。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;kosuto&quot;&gt;コスト&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;サービス&lt;&#x2F;th&gt;&lt;th&gt;月額&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;EC2 t3.micro&lt;&#x2F;td&gt;&lt;td&gt;無料 (初年度)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;パブリック IPv4&lt;&#x2F;td&gt;&lt;td&gt;無料 (初年度)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;S3 &#x2F; CloudFront &#x2F; SES &#x2F; Lambda&lt;&#x2F;td&gt;&lt;td&gt;~$0&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;合計&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td&gt;&lt;strong&gt;&lt;del&gt;$0 (初年度)、&lt;&#x2F;del&gt;$7&#x2F;月 (2年目以降)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
</content>
        
    </entry>
</feed>
