背景

この記事で、プライベートサブネットのEC2に接続できました。

次にpostgresqlのパッケージをEC2にインストールしたいです。ですが、プライベートサブネットに配置したEC2はインターネットに出ることができません。インターネットに出れないので、yumが通りません。

プライベートサブネットにEC2を置くとセキュリティ的なメリットは享受できます。しかし、運用などにはそれなりの手間をかける必要があります。

S3のエンドポイントを用意する

おなじみのterraformでの実装です。サブモジュールの結果を使用しているので、コピペでは動かないです。

まずは、これでエンドポイントを作ります。

resource "aws_vpc_endpoint" "s3_endpoint" {
    vpc_id          = "module.vpc.vpc_id"
    service_name    = "com.amazonaws.ap-northeast-1.s3"
    policy = <<POLICY
    {
        "Version": "2008-10-17",
        "Statement": [
            {
                "Action": "*",
                "Effect": "Allow",
                "Resource": "*",
                "Principal": "*"
            }
        ]
    }
    POLICY
}

ルートテーブルの関連付けです。関連付けるルートテーブルはサブネットに定義しているルートテーブルです。

resource "aws_vpc_endpoint_route_table_association" "private_s3" {
    vpc_endpoint_id = "aws_vpc_endpoint.s3_endpoint.id"
    route_table_id  = "aws_route_table.rds_1b.id"

}