terraform/ecc-aws-299-cloudfront_distribution_fieldlevel_encryption/green2/cloudfront.tf (122 lines of code) (raw):

resource "aws_s3_bucket" "this" { bucket = "299-bucket-${random_integer.this.result}-green2" force_destroy = true } resource "aws_s3_bucket_ownership_controls" "this" { bucket = aws_s3_bucket.this.id rule { object_ownership = "BucketOwnerPreferred" } } resource "random_integer" "this" { min = 1 max = 10000000 } resource "aws_s3_bucket_acl" "this" { depends_on = [aws_s3_bucket_ownership_controls.this] bucket = aws_s3_bucket.this.id acl = "private" } locals { s3_origin_id = "myGreenS3" } resource "tls_private_key" "this" { algorithm = "RSA" rsa_bits = 2048 } resource "aws_cloudfront_public_key" "this" { comment = "299_public_key_green3" encoded_key = tls_private_key.this.public_key_pem name = "299_public_key_green3" } resource "aws_cloudfront_field_level_encryption_profile" "this" { name = "299_cloudfront_field_level_encryption_profile_green3" encryption_entities { items { public_key_id = aws_cloudfront_public_key.this.id provider_id = "299_provider_green2" field_patterns { items = ["CreditCardNumber"] } } } } resource "aws_cloudfront_field_level_encryption_config" "this" { comment = "299_cloudfront_field_level_encryption_config_green2" content_type_profile_config { forward_when_content_type_is_unknown = true content_type_profiles { items { content_type = "application/x-www-form-urlencoded" format = "URLEncoded" } } } query_arg_profile_config { forward_when_query_arg_profile_is_unknown = true query_arg_profiles { items { profile_id = aws_cloudfront_field_level_encryption_profile.this.id query_arg = "Arg1" } } } } resource "aws_cloudfront_distribution" "this" { origin { domain_name = aws_s3_bucket.this.bucket_regional_domain_name origin_id = local.s3_origin_id } enabled = true default_root_object = "index.html" default_cache_behavior { allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"] cached_methods = ["GET", "HEAD"] target_origin_id = local.s3_origin_id forwarded_values { query_string = false cookies { forward = "none" } } viewer_protocol_policy = "https-only" } ordered_cache_behavior { path_pattern = "/content/immutable/*" allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"] cached_methods = ["GET", "HEAD", "OPTIONS"] target_origin_id = local.s3_origin_id forwarded_values { query_string = false headers = ["Origin"] cookies { forward = "none" } } viewer_protocol_policy = "redirect-to-https" field_level_encryption_id = aws_cloudfront_field_level_encryption_config.this.id } ordered_cache_behavior { path_pattern = "/content/test/*" allowed_methods = ["GET", "HEAD", "OPTIONS"] cached_methods = ["GET", "HEAD", "OPTIONS"] target_origin_id = local.s3_origin_id forwarded_values { query_string = false headers = ["Origin"] cookies { forward = "none" } } viewer_protocol_policy = "redirect-to-https" } restrictions { geo_restriction { restriction_type = "whitelist" locations = ["US", "CA", "GB", "DE"] } } viewer_certificate { cloudfront_default_certificate = true } }