terraformでAmazon VPC エントポイント(endpoint)からのS3接続の設定を行います。
前回実施したVPCからDynamoDBへの接続とほとんど同じになります。
S3はVPC内には設置されませんが、VPCエンドポイント(endpoint)を作成することで、VPC環境からS3への接続が行えます。
VPC内のEC2やLambdaからのS3の利用を行うことができるようになるため非常に便利です。
こちらをterraformで実施してみます。
以下の記事でVPCとEC2部分はご確認ください。
terraform基本設定
まず、基本設定として以下の設定を記載しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
######################### ## BaseSettings ######################### variable "aws_region" { default = "ap-northeast-1" } variable "aws_zone" { default = "ap-northeast-1c" } |
S3とVPCエンドポイント(endpoint)の設定
そしてS3とVPCエンドポイント(endpoint)の設定を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
######################### ## S3 and Endpoint ######################### resource "aws_s3_bucket" "default" { bucket = "test.xxxxxxxxxxxxxxxxxx.jp" versioning { enabled = true } } resource "aws_vpc_endpoint" "s3_endpoint" { vpc_id = "${aws_vpc.default.id}" service_name = "com.amazonaws.${var.aws_region}.s3" policy = <<POLICY { "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.default.id}" } |
作成されたエンドポイントはこちらとなります。
VPCエンドポイントの設定はあくまでVPC側からの到達の設定となりS3での設定は必要ありません。
こちらを利用してVPC内のEC2やLambdaからS3に接続をすることができるようになります。
このブログは株式会社CoLabMixによる技術ブログです。
GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。
Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。