たぶんできる！ AWS無料利用枠でスケーラブルウェブサイト構築 ハンズオンをELBのパブリックアドレスにはIPv6だけを割り当てて無料でやりきる！！！

![DALL·E 2024-11-09 14.07.44.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/a16e3fa3-7ca5-3451-08fa-69d4735bd6e7.jpeg)


# はじめに

AWSではパブリックIPv4アドレスは有料になりました。2024-11-09現在、$0.005/hです。世界的にIPv4が枯渇しているそうで、調達のための費用を利用者負担にしたようです

アカウント作成から12ヶ月間有効な無料利用枠では、**EC2インスタンス**のパブリックIPv4アドレスは750h(≒24h x 31日。つまり一ヶ月分)無料で使えます。EC2インスタンスのみです。ELBにパブリックIPv4アドレスを振る場合は課金対象になります。

この記事はELBにパブリックIPv6アドレスを振ることにより、[AWS無料利用枠でスケーラブルウェブサイト構築 ハンズオン](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP) を **たぶん** 無料でハンズオンできる内容をお届けします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/68b90923-eafb-a6d7-351a-181b3e1f3209.png)

`https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP` より抜粋


https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP

手順は大きく5ステップあります。「[5. WordPress の初期設定](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase5)」に相当する手順まで、ELBにパブリックIPv6アドレスを振ることにより、AWS無料利用枠の方は、**たぶん** 無料でハンズオンできます。繰り返しますが **たぶん、できる！** です。

1. [Amazon VPC の作成](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase1)
1. [Amazon EC2 の作成](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase2)
1. [Amazon RDS の作成](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase3)
1. [ELB の作成](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase4)
1. [WordPress の初期設定](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase5)

# 対象読者

対象読者は次の方を想定しています。

- 冒頭の絵をみて「あー、なるほどね」と自力で構築ができる方
- 具体的にはVPC、EC2、ELB、RDSのリソースを作成します
- **たぶんできる！** の深意を理解している方
- この記事を参照してハンズオンを実施し課金された場合に、「嘘つき！　嘘つき！　Fake! Fake!（笑）　弁償しろ！　こらあ！」とは怒りださない方
- 人間は間違いを犯すものだと理解していて、やさしく編集リクエストで課金されたポイントを加筆し正しい情報を反映することで、私のため、読者のため、AIモデルの学習のために貢献するという気概を持ち、それがめぐりめぐってアントニオ猪木さんが言われた「本当の世界平和」の実現へつながる道だと信じている方

# 免責事項

免責事項です。
決して「**面積**事項」ではありません。

- 2024-11-09現在の情報ですので、今後AWSで料金の改定がされた場合に反映できていない場合があります
- [AWS無料利用枠でスケーラブルウェブサイト構築 ハンズオン](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP) のすべてのハンズオンを実施したわけではありませんし、手順も記事の通りになぞったわけではありませんのでどこかで課金が発生する場合があり得ます

# どのくらいこの記事が正しいのか

前置きが長くなりました。
こう言い訳が多いと、読者の方が不安になるでしょうから、どのくらい私が確かめたのかを記しておきます。

12h程度、AWS無料利用枠で構築したWordPress環境を稼働させました。
リージョンはオレゴンを使用しました。
課金はされませんでした。

# ハンズオン

ELBにパブリックIPv6アドレスを振るようにハンズオンを進めていきます。
すべての詳細な手順は示しません。
ポイントのみを記します。必要に応じてリンク先のAWSドキュメントを参照してください。

[AWS無料利用枠でスケーラブルウェブサイト構築 ハンズオン](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP)

## [1. Amazon VPC の作成](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase1)

「IPv6 CIDR ブロック」の設定で、「Amazon 提供のIPv6 CIDRブロック」を選択してVPCを作成します。

## [2. Amazon EC2 の作成](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase2)

EC2インスタンスを作っていきます。
Amazon Linux 2023で作ります。

- **パブリック IP の自動割り当て** をON ... 
    - ここでの「パブリック IP」とは、「パブリックIPv4アドレス」のことを指しています
    - WordPressをセットアップする際に実行する `wget http://ja.wordpress.org/latest-ja.tar.gz` がIPv4での接続をしないとダウンロードができませんでした
    - EC2 インスタンスの「パブリックIPv4アドレス」は750h無料の対象です
    - こういう事情がなければ、「パブリックIPv4アドレス」をセットする必要はありません
- **IPv6 IP を自動で割り当てる** をONにします
- **高度なネットワーク設定のIPv6 IPで、「プライマリIPv6 IPを割り当てる」** を「はい」にしておきます
    - プライマリIPv6 IPを割り当てておかないと、ターゲットグループをIPv6タイプで作った場合の設定でターゲットとして選べません
- セキュリティグループ`ec2-sg`は以下の設定です
    - インバウンドルール
        - HTTPタイプでソースを`elb`(後ほど作成)
    - アウトバウンドルール
        - デフォルトのまま、すべてのトラフィックで送信先を`0.0.0.0/0`と`::/0`にしておきます



![スクリーンショット 2024-11-09 12.20.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/d3f173df-d966-ed0b-16fd-12c1d3c49ba4.png)


もしEC2インスタンス作成のタイミングで上記の操作を忘れた場合には、「アクション > ネットワーキング > IP アドレスの管理」で設定ができます。

参考: [AWS、自動的に割り当てられたパブリック IPv4 アドレスの動的な削除と追加をサポート](https://aws.amazon.com/jp/about-aws/whats-new/2024/04/removing-adding-auto-assigned-public-ipv4-address/)

以前は、あとから変更できなかったのではないかと思います。2024/4/25付近にサポートされたようです。


---

また話は前後しますが、公式とは操作が異なる箇所を記しておきます。

- 私は「[a. Systems Manager の有効化](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase2/phase2-1)」を実施せずに進めました



## [3. Amazon RDS の作成](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase3)

おおむね記事の通り進めます。
ストレージは `gp2` を選びましょう。
詳しくは、 [RDS 汎用 SSD ストレージの課金に要注意！【AWS 無料利用枠】](https://kuds.blog/aws/aws-free-tier-rds-storage/) の通りです。

![スクリーンショット 2024-11-09 17.04.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/7f6e4e93-71d4-cc4f-4530-36dc1cf705da.png)



~~EC2とRDSはローカルのIPv4で接続していると推測されます。このように考えたのは、DB サブネットグループの作成のときにIPv4のCIDRブロックで区切りられたサブネットを指定する操作だからです。~~

### 接続

ネットワークタイプは「デュアルスタックモード」を選びます。
「選んでみました」くらいのニュアンスでしょうか。
ここはEC2インスタンスとRDSインスタンスの会話ができればよいのでIPv4を選んでも大丈夫でした。
ローカルIPv4で通信しているものと思われます。

![スクリーンショット 2025-05-14 15.13.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/1cd16e97-95cd-4106-b2e7-ecc4f2b768ef.png)


## [4. ELB の作成](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase4)

いよいよこの記事の本丸です。
ELBにパブリックIPv6アドレスを振ります。

- ターゲットグループのIP アドレスタイプを「IPv6」にします。
  - ※ ここは「IPv4」でも行けます。その場合は`ec2-sg`のソースに`10.0.0.0/24`と`10.0.1.0/24`からのHTTPタイプを通すようにしておいてください。これらのCIDRブロックはELBが配置されるパブリックサブネットです。
- **「ロードバランサーの IP アドレスタイプ」は、「パブリック IPv4 のない Dualstack」** を選びます

![スクリーンショット 2024-11-09 13.05.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/78b0e95c-5dc9-e48c-dbc2-1d76a4d0944d.png)

※ 「パブリック IPv4 のない Dualstack」は、「パブリック IPv6 アドレスとプライベートIPv4 アドレスが含まれる」ロードバランサーとのことです。[^1]

[^1]: https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/application-load-balancers.html#ip-address-type

- ELB用のセキュリティグループ`elb-user1`は、インバウンドのルールでHTTPタイプ、ポート80、ソースをAnywhere-IPv6 or `curl -6 ifconfig.co` の出力結果のIPv6アドレス(IPv6アドレス版のマイIP)を/128で追加してください

## [5. WordPress の初期設定](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase5)

記事の通りに進めます。

ここまできてアレですが、ELBにはパブリックIPv6アドレスしか振られていないのでIPv6に対応しているネットワークにローカルPCが接続している必要があります。

---

「[Public IPv4 アドレスの削除](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/advanced/remove-publicip)」参考に、パブリックIPv4アドレスを解放しておくと、人類の共有財産（パブリックIPv4アドレス）を融通しあうことになり、争いの種が一つ減るので、めぐりめぐって世界平和につながるのかもしれません。

---

余談ですがローカルPCの出口のIPの調べ方です。

### IPv4

```
curl -4 ifconfig.co
```

### IPv6

```
curl -6 ifconfig.co
```

# さいごに

AWS無料利用枠でスケーラブルウェブサイト構築 ハンズオンをELBにパブリックにはIPv6アドレスだけを割り当てて無料でやりきる方法を示しました。 **たぶんできます！**

世界の技術者よ、今こそ闘魂を燃やし、限界を越えて無料の力を最大限に引き出しましょう。このハンズオンを通じて、スケーラブルなウェブサイトを構築する技術と、予期せぬ課金のリスクを回避する知恵を手に入れてください。
限界への挑戦こそが、技術者の進むべき道です。

世界平和につながる「闘魂」とともに、AWSの深淵を覗き、システムの構築に一歩ずつ進みましょう。このチャレンジが、ただのテクニックで終わらず、あなた自身の成長、そしてエンジニアリングを通じた未来への貢献に繋がることを願っています。限界を決めるのは他人ではなく、あなた自身の闘魂です。あなたの努力が、やがて新たな可能性の扉を開くでしょう。

**AWS無料利用枠での挑戦は、学びの場であり、無駄な課金を避ける方法を学ぶ知恵でもある。**

**少年老い易く学成り難し――。無料期間は短くとも、得た知見は一生モノ。**
**限界を超えたその先に、あなたのAWSが始まる。**