質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

401閲覧

Terraformで生成したEC2インスタンスにアクセスできない。

trash.taro

総合スコア1

Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2023/01/23 13:45

Terraformで生成したEC2インスタンスにアクセスできない。

簡単なTerraform設定ファイルを作成して、EC2インスタンスを生成し、設定自体も正しくできているはずですが、アクセスできません。
ブラウザを介して生成した場合にはアクセスできるため、その差分を確認しましたが、特におかしな点はありませんでした。

以下はサンプルコードです。
簡素化してありますが、必要な設定はしています。

terraform

1provider "aws" { 2 region = "ap-northeast-1" 3} 4 5resource "aws_vpc" "example" { 6 cidr_block = "10.0.0.0/16" 7} 8 9resource "aws_subnet" "example" { 10 vpc_id = aws_vpc.example.id 11 cidr_block = "10.0.1.0/24" 12} 13 14resource "aws_security_group" "example" { 15 name = "example" 16 vpc_id = aws_vpc.example.id 17 ingress { 18 from_port = 22 19 to_port = 22 20 protocol = "tcp" 21 cidr_blocks = ["0.0.0.0/0"] 22 } 23 egress { 24 from_port = 0 25 to_port = 0 26 protocol = "-1" 27 cidr_blocks = ["0.0.0.0/0"] 28 } 29} 30 31resource "aws_key_pair" "example" { 32 key_name = "example" 33 public_key = file("~/.ssh/id_rsa.pub") 34} 35 36resource "aws_eip" "example" { 37 vpc = true 38} 39 40resource "aws_instance" "example" { 41 ami = "ami-be4a24d9" 42 instance_type = "t2.micro" 43 key_name = aws_key_pair.example.key_name 44 vpc_security_group_ids = [aws_security_group.example.id] 45 subnet_id = aws_subnet.example.id 46 associate_public_ip_address = true 47 tags = { 48 Name = "happy-new-year" 49 } 50}

想定した原因

  • セキュリティグループの設定が正しくできていない。
  • インスタンスがセキュリティグループに接続されていない。
  • ネットワーク(VPC・サブネット)の設定不備

試したこと

ブラウザ上で生成したアクセス可能なインスタンスとの照合。
特に差異は見られませんでした。

セキュリティグループはインバウンドは「22」を、アウトバウンドは「-1(all)」を許可してあり、インスタンスをそれに接続しているため、セキュリティルールに関いてはOK!

ネットワークもVPCとサブネットを正しく設定しているためOK
もっともインターネットからアクセスできないのはこれには関係ありませんが、、、

状況としてはSSHにアクセスできないのではなく、ポートそのものが解放されていない状況です。
ポートスキャンで確認しました。


どなたか原因のご指摘をお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2023/01/23 14:17

> ブラウザを介して生成した場合 それはこのTerraform内で作成したVPCに作成していますか? 簡素化と書いてありますが、簡素化してしまったら必要な設定があるかわかりません。 パッと見問題ありそうなのはルートテーブルの設定をしていないことですが、該当のサブネットのルートテーブル設定はどうなっていますか? > ネットワークもVPCとサブネットを正しく設定しているためOK 上のほうにも書いてあるのですが、「正しい」とは何をもってそう判断していますか?
trash.taro

2023/01/23 14:25

> それはこのTerraform内で作成したVPCに作成していますか? それとは別に、独立したインスタンスとそれに伴ってデフォルトで設定される設定です。 確かに、ルートテーブルの設定をしていませんでした。 そもそも、インターネットゲートウェイの設定もしていませんでした。 失礼いたしました。 もう少し自分で確認してみます。
trash.taro

2023/01/23 14:32

助かりました。 解決できました。 ``` provider "aws" { region = "ap-northeast-1" } resource "aws_vpc" "example2" { cidr_block = "10.0.0.0/16" } resource "aws_subnet" "example2" { vpc_id = aws_vpc.example2.id cidr_block = "10.0.1.0/24" } resource "aws_internet_gateway" "example2" { vpc_id = aws_vpc.example2.id } resource "aws_route_table" "example2" { vpc_id = aws_vpc.example2.id route { cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.example2.id } } resource "aws_route_table_association" "example2" { subnet_id = aws_subnet.example2.id route_table_id = aws_route_table.example2.id } resource "aws_security_group" "example2" { name = "example2" vpc_id = aws_vpc.example2.id ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } } resource "aws_key_pair" "example2" { key_name = "example2" public_key = file("~/.ssh/id_rsa.pub") } resource "aws_eip" "example2" { vpc = true } resource "aws_instance" "example2" { ami = "ami-be4a24d9" instance_type = "t2.micro" key_name = aws_key_pair.example2.key_name vpc_security_group_ids = [aws_security_group.example2.id] subnet_id = aws_subnet.example2.id associate_public_ip_address = true tags = { Name = "happy-new-year" } } ``` インターネットゲートウェイの設定忘れと、それに伴うルーティングテーブルの設定忘れが原因です。 インターネットゲートウェイを生成していないんだから、インターネットからアクセスできないのは当然でした、、、 ありがとうございます。
guest

回答1

0

自己解決

インターネットゲートウェイ作ってなかった。
当然ルーティングテーブルも、、、

Loving yu_1985 💓💓💓

投稿2023/01/23 14:35

trash.taro

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問