投稿者: 縁際誠(えんぎわまこと)

  • クラウドで開発環境を構築した日の記録(AWS EC2 / Windows Server / VPC構築)

    はじめに

    自分のPCマシンがスペック的にやや厳しく

    ローカルPCに無理して環境を入れるより、

    クラウド側に Windows Server を用意してそこで作業するほうが快適だと判断しました。

    今回は AWS 上に 専用 VPC → サブネット → EC2(Windows Server) を作成し、

    RDP 接続、SSM(Session Manager)準備、セキュリティ強化まで一通り実施したので、

    その作業記録を整理します。

    将来的には AWS CLI や Session Manager 経由の RDP に移行予定ですが、

    まずは GUI が使える環境までを構築した記録です。

    1. AWSで「空のVPC」を作成する

    まず行ったのは VPCの設計。

    AWS の VPCウィザードは色々テンプレートがありますが、

    今回は余計なリソースを避けるため 完全に空のVPC を作成しました。

    ✓ 作成内容

    VPC: CIDR:10.0.0.0/16 サブネット:作らず「空の状態」で作成 IGW(インターネットゲートウェイ):後でアタッチするため、最初は作らない

    この時点のポイント

    空のVPC から始めると、意図しない NAT Gateway などの 有料リソースが勝手に作成されない 結果的に 最安構成での構築ができる

    2. パブリック・サブネットを作る

    次に、手動で パブリックサブネット を作成。

    ✓ 設定内容

    サブネット名:public-subnet CIDR:10.0.1.0/24(※よくある構成)

    アベイラビリティゾーン:ap-northeast-1a IPv4 自動割り当て:有効

    パブリック扱いにするためにやったこと

    IGW を新規作成 VPC にアタッチ ルートテーブルを作成 0.0.0.0/0 → IGW を追加 public-subnet にアソシエイト

    3. EC2(Windows Server 2022)を作成

    ✓ スペック

    AMI:Windows Server 2022 Base

    インスタンスタイプ:t3.large ディスク:80GB(gp3)

    パブリックIP:自動割り当て セキュリティグループ: RDP(TCP 3389) → 一旦 0.0.0.0/0 後で「日本国内に限定」へ変更

    EC2 作成後、RDP を使ってサーバにログイン。

    4. Windows Server の初期設定(日本語化)

    インスタンスは英語版なので以下対応を実施。

    Settings → Time & Language → Language Japanese を追加

    Language Pack Install Display / Keyboard / Region を全部 Japanese に 再起動

    ロケールも変えるのを忘れないように

    これで Windows Server が完全に日本語化される。

    5. AWS Systems Manager(SSM)準備

    Session Manager は今後利用予定。

    EC2 に自動インストールされているはずの SSM Agent が

    「オンラインにならない」問題が発生したため、トラブルシューティングを実施。

    ✓ IAM ロール確認

    EC2 にアタッチされたロール → AmazonSSMManagedInstanceCore (これは問題なし)

    ✓ 最新の SSM Agent を手動インストール

    GitHub からダウンロードして直接修復:

    Invoke-WebRequest https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/amazon-ssm-agent/latest/windows_amd64/AmazonSSMAgentSetup.exe -OutFile SSMSetup.exe
    Start-Process .\SSMSetup.exe -ArgumentList “/S” -Wait
    Restart-Service AmazonSSMAgent

    エラーが多発したが、最終的に 地域リージョン直参照URLで成功。

    6. RDP のセキュリティ強化(国内IP限定)

    最終的に RDP の許可範囲を制限。

    ✓ 設定内容(Security Group)

    RDP(TCP 3389) → 133.0.0.0/8(日本国内のIP帯) ※ 0.0.0.0/0 から変更

    これにより、海外からのアタックをほぼ完全に遮断できる。

    ✓ 接続テスト

    自宅の Global IP(OCN光)から接続 問題なく接続できることを確認 「つながらない問題」は → 自宅IPが NTT/OCN帯の 153.xxx だったため。 → 日本国内帯に含まれるので問題なし

    7. セキュリティの最終方針

    今回の構築で明確にした方針:

    ✔ 現時点:

    GUI 操作は RDP(日本国内IP限定) 通信ログは最低限

    ✔ 将来:

    AWS CLI の導入 Session Manager + ポートフォワーディングで RDP Public IP を使わず Private RDP に移行する

    最終的には インスタンスを完全非公開で運用することが目標。

    8. クラウド料金の最適化

    今回の構成は非常に安価。

    ✓ インスタンス停止中 → 課金されるのは EBS のみ

    EBS(gp3 80GB) → 約 150円 / 月 → 年間 1,800円ほど

    ✓ Elastic IP は使用していない

    → 追加料金ゼロ

    ✓ NAT Gateway なし

    → 0円

    つまり 実質 月150円のクラウド Windows Server を手に入れた形。

    9. 今日学んだこと(まとめ)

    空のVPC作成 → サブネット → IGW → ルート設定 は手動でやると理解が進む

    EC2 自動割り当ての Public IP で十分運用可能

    SSM Agent は地域ごとのパスに注意

    RDP は「国内IP限定」にするだけでセキュリティが跳ね上がる。あとのリスクは許容する。

    インスタンス停止すれば月150円運用が成立する

    Session Manager を使えば将来的には RDP すら不要になる

    おわりに

    クラウドの Windows Server を「自分専用のデスクトップ環境」として使うのは

    実際にやってみると意外と簡単で、

    かつローカルPCよりも負荷が軽くて快適でした。

    今後は AWS CLI の導入、Session Manager による

    よりセキュアな無公開運用に切り替えていく予定です。

    また次のステップを進めたら記事にしていきます。

  • サブドメインにブログを作ったらトラブルだらけだった話

    はじめに

    今日は、昔の個人事業主時代に作った WordPress サイトを整理して、

    サブドメインに新しいブログを立ち上げる作業を一気にやりました。

    やってみると、思ったよりトラブルが多くて、

    「ブログってこういうところでつまずくんだな…」とよく分かった一日でした。

    忘れないうちに、時系列でまとめておきます。

    1. 親ドメインの整理からスタート

    まずは、昔作った medical-engineering.jp の中を整理。

    古い固定ページが大量に残っていた 情報も2017年とかで止まっている 今の活動と全然合ってない

    そこで、固定ページをアーカイブ化 → 非公開へ移動。

    サイトマップ(XML)にも載らないように、

    除外IDを設定して検索エンジンからも外しました。

    2. サブドメイン blog.medical-engineering.jp を作成

    本番ブログは、もう「親ドメインをいじりたくない」ので

    サブドメインに新規WordPressを構築することに。

    しかしここで最初のミス。

    インストールディレクトリを空欄にすればよかったのに、入力して進めた

    これで WordPress が「変な場所」に入ってしまい、

    サイトURLもディレクトリ構成もぐちゃぐちゃに。

    結局この時点で 1回削除 → 再インストール。

    3. WordPress管理画面が開かない事件

    設定し直してからアクセスすると、

    Not Found
    The requested URL was not found on this server.

    原因は wp-admin が diary フォルダに入っていたこと。

    ファイルの階層がずれていたので、

    ファイルを1階層上に移動して修正。

    さらに .htaccess がなかったので、

    WordPressのダッシュボードから再生成して復活。

    4. SSLが反映されない問題

    無料SSLを設定した直後は、

    「保護された通信ではありません」

    と表示されて焦りましたが、

    これはサーバー側の反映待ち。

    30分ほど放置したら自動的に解決。

    5. WordPressアプリ vs Jetpackアプリ

    スマホ投稿を考えて、

    WordPressアプリと Jetpack の両方を入れたけれど…

    Jetpackの方が投稿しやすい WordPressアプリはログインがうまくいかないことがある とりあえず “両方使いつつ、メインはJetpack” に決定

    6. パーマリンク設定

    日本語URLがイヤなので、

    記事を書くときは スラッグを英語に統一する運用に。

    (WordPress は初期設定だと日本語URLになるため)

    7. バックアッププラグイン(BackWPup)導入

    ウィザードに従って 週次バックアップのジョブを作成。

    外部保存は Google Drive が有料化しているので見送り。

    とりあえずは

    必要なときだけ手動でバックアップを取る方式に。

    あとで Dropbox に切り替えるかもしれない。

    今日やってみて感じたこと

    サーバーの階層ミスが一番の落とし穴 サブドメイン構築は慎重にやらないと迷子になる SSLは反映まで時間がかかる(焦らない) スマホ投稿したければ Jetpack が便利 バックアップは後回しにしてもいいが、いずれ必須

    何だかんだで、

    新しいブログ環境はだいぶ整った。

    これからは、

    「書く」ことに集中していきたい。

    おわりに

    ブログの設定って、やってみると意外とトラブルだらけ。

    でも、一つひとつ解決すると、

    ちょっとずつ “自分の場所” が整っていく感覚があって面白い。

    ここからは、

    日々の気づきや違和感、考えていることなどを、

    ゆるく書いていくつもり。