diff --git a/main.tf b/main.tf index fc60f38..26c1992 100644 --- a/main.tf +++ b/main.tf @@ -1,3 +1,43 @@ -# 1. Deploy an S3 storage bucket +resource "random_id" "suffix" { + byte_length = 4 +} -# 2. Confugure bucket policy to allow grafana iam role to use storage +data "aws_caller_identity" "current" {} + +resource "aws_s3_bucket" "backups" { + bucket = "grafana-backups-${data.aws_caller_identity.current.account_id}-${random_id.suffix.hex}" + force_destroy = true +} + +data "aws_iam_policy_document" "bucket" { + statement { + sid = "AllowListBucketFromGrafanaRole" + effect = "Allow" + actions = ["s3:ListBucket"] + + principals { + type = "AWS" + identifiers = [var.grafana_iam_role_arn] + } + + resources = [aws_s3_bucket.backups.arn] + } + + statement { + sid = "AllowObjectReadWriteFromGrafanaRole" + effect = "Allow" + actions = ["s3:GetObject", "s3:PutObject"] + + principals { + type = "AWS" + identifiers = [var.grafana_iam_role_arn] + } + + resources = ["${aws_s3_bucket.backups.arn}/*"] + } +} + +resource "aws_s3_bucket_policy" "this" { + bucket = aws_s3_bucket.backups.id + policy = data.aws_iam_policy_document.bucket.json +} diff --git a/outputs.tf b/outputs.tf index df85631..3e43830 100644 --- a/outputs.tf +++ b/outputs.tf @@ -1,4 +1,9 @@ -output "bucket_name" { - value = aws_s3_bucket.grafana_backups.bucket - sensitive = false +output "s3_bucket_name" { + description = "Name of the S3 bucket for Grafana backups" + value = aws_s3_bucket.backups.bucket +} + +output "s3_bucket_arn" { + description = "ARN of the S3 bucket for Grafana backups" + value = aws_s3_bucket.backups.arn } diff --git a/s3_upload_screenshot.png b/s3_upload_screenshot.png new file mode 100644 index 0000000..bffd22b Binary files /dev/null and b/s3_upload_screenshot.png differ diff --git a/terraform.tfvars b/terraform.tfvars index 7f7bb12..cc62ffb 100644 --- a/terraform.tfvars +++ b/terraform.tfvars @@ -1 +1 @@ -grafana_iam_role_arn = "" +grafana_iam_role_arn = "arn:aws:iam::162646919043:role/grafana-ec2-role" diff --git a/tfplan.json b/tfplan.json new file mode 100644 index 0000000..c5b79c6 --- /dev/null +++ b/tfplan.json @@ -0,0 +1 @@ +{"format_version":"1.2","terraform_version":"1.13.0","variables":{"grafana_iam_role_arn":{"value":"arn:aws:iam::162646919043:role/grafana-ec2-role"}},"planned_values":{"outputs":{"s3_bucket_arn":{"sensitive":false,"type":"string","value":"arn:aws:s3:::grafana-backups-162646919043-537ed793"},"s3_bucket_name":{"sensitive":false,"type":"string","value":"grafana-backups-162646919043-537ed793"}},"root_module":{"resources":[{"address":"aws_s3_bucket.backups","mode":"managed","type":"aws_s3_bucket","name":"backups","provider_name":"registry.terraform.io/hashicorp/aws","schema_version":0,"values":{"acceleration_status":"","acl":null,"arn":"arn:aws:s3:::grafana-backups-162646919043-537ed793","bucket":"grafana-backups-162646919043-537ed793","bucket_domain_name":"grafana-backups-162646919043-537ed793.s3.amazonaws.com","bucket_prefix":"","bucket_regional_domain_name":"grafana-backups-162646919043-537ed793.s3.eu-central-1.amazonaws.com","cors_rule":[],"force_destroy":true,"grant":[{"id":"ece69951308bd4d9af0fb1aacd8cb013ff1330b0cfa5afa856cac7782c8eb111","permissions":["FULL_CONTROL"],"type":"CanonicalUser","uri":""}],"hosted_zone_id":"Z21DNDUVLTQW6Q","id":"grafana-backups-162646919043-537ed793","lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"object_lock_enabled":false,"policy":"","region":"eu-central-1","replication_configuration":[],"request_payer":"BucketOwner","server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{"kms_master_key_id":"","sse_algorithm":"AES256"}],"bucket_key_enabled":false}]}],"tags":{},"tags_all":{},"timeouts":null,"versioning":[{"enabled":false,"mfa_delete":false}],"website":[],"website_domain":null,"website_endpoint":null},"sensitive_values":{"cors_rule":[],"grant":[{"permissions":[false]}],"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"replication_configuration":[],"server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{}]}]}],"tags":{},"tags_all":{},"versioning":[{}],"website":[]}},{"address":"aws_s3_bucket_policy.this","mode":"managed","type":"aws_s3_bucket_policy","name":"this","provider_name":"registry.terraform.io/hashicorp/aws","schema_version":0,"values":{"bucket":"grafana-backups-162646919043-537ed793","policy":"{\"Statement\":[{\"Action\":\"s3:ListBucket\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::162646919043:role/grafana-ec2-role\"},\"Resource\":\"arn:aws:s3:::grafana-backups-162646919043-537ed793\",\"Sid\":\"AllowListBucketFromGrafanaRole\"},{\"Action\":[\"s3:PutObject\",\"s3:GetObject\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::162646919043:role/grafana-ec2-role\"},\"Resource\":\"arn:aws:s3:::grafana-backups-162646919043-537ed793/*\",\"Sid\":\"AllowObjectReadWriteFromGrafanaRole\"}],\"Version\":\"2012-10-17\"}"},"sensitive_values":{}},{"address":"random_id.suffix","mode":"managed","type":"random_id","name":"suffix","provider_name":"registry.terraform.io/hashicorp/random","schema_version":0,"values":{"b64_std":"U37Xkw==","b64_url":"U37Xkw","byte_length":4,"dec":"1400821651","hex":"537ed793","id":"U37Xkw","keepers":null,"prefix":null},"sensitive_values":{}}]}},"resource_drift":[{"address":"aws_s3_bucket.backups","mode":"managed","type":"aws_s3_bucket","name":"backups","provider_name":"registry.terraform.io/hashicorp/aws","change":{"actions":["update"],"before":{"acceleration_status":"","acl":null,"arn":"arn:aws:s3:::grafana-backups-162646919043-537ed793","bucket":"grafana-backups-162646919043-537ed793","bucket_domain_name":"grafana-backups-162646919043-537ed793.s3.amazonaws.com","bucket_prefix":"","bucket_regional_domain_name":"grafana-backups-162646919043-537ed793.s3.eu-central-1.amazonaws.com","cors_rule":[],"force_destroy":true,"grant":[{"id":"ece69951308bd4d9af0fb1aacd8cb013ff1330b0cfa5afa856cac7782c8eb111","permissions":["FULL_CONTROL"],"type":"CanonicalUser","uri":""}],"hosted_zone_id":"Z21DNDUVLTQW6Q","id":"grafana-backups-162646919043-537ed793","lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"object_lock_enabled":false,"policy":"","region":"eu-central-1","replication_configuration":[],"request_payer":"BucketOwner","server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{"kms_master_key_id":"","sse_algorithm":"AES256"}],"bucket_key_enabled":false}]}],"tags":null,"tags_all":{},"timeouts":null,"versioning":[{"enabled":false,"mfa_delete":false}],"website":[],"website_domain":null,"website_endpoint":null},"after":{"acceleration_status":"","acl":null,"arn":"arn:aws:s3:::grafana-backups-162646919043-537ed793","bucket":"grafana-backups-162646919043-537ed793","bucket_domain_name":"grafana-backups-162646919043-537ed793.s3.amazonaws.com","bucket_prefix":"","bucket_regional_domain_name":"grafana-backups-162646919043-537ed793.s3.eu-central-1.amazonaws.com","cors_rule":[],"force_destroy":true,"grant":[{"id":"ece69951308bd4d9af0fb1aacd8cb013ff1330b0cfa5afa856cac7782c8eb111","permissions":["FULL_CONTROL"],"type":"CanonicalUser","uri":""}],"hosted_zone_id":"Z21DNDUVLTQW6Q","id":"grafana-backups-162646919043-537ed793","lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"object_lock_enabled":false,"policy":"","region":"eu-central-1","replication_configuration":[],"request_payer":"BucketOwner","server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{"kms_master_key_id":"","sse_algorithm":"AES256"}],"bucket_key_enabled":false}]}],"tags":{},"tags_all":{},"timeouts":null,"versioning":[{"enabled":false,"mfa_delete":false}],"website":[],"website_domain":null,"website_endpoint":null},"after_unknown":{},"before_sensitive":{"cors_rule":[],"grant":[{"permissions":[false]}],"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"replication_configuration":[],"server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{}]}]}],"tags_all":{},"versioning":[{}],"website":[]},"after_sensitive":{"cors_rule":[],"grant":[{"permissions":[false]}],"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"replication_configuration":[],"server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{}]}]}],"tags":{},"tags_all":{},"versioning":[{}],"website":[]}}}],"resource_changes":[{"address":"aws_s3_bucket.backups","mode":"managed","type":"aws_s3_bucket","name":"backups","provider_name":"registry.terraform.io/hashicorp/aws","change":{"actions":["no-op"],"before":{"acceleration_status":"","acl":null,"arn":"arn:aws:s3:::grafana-backups-162646919043-537ed793","bucket":"grafana-backups-162646919043-537ed793","bucket_domain_name":"grafana-backups-162646919043-537ed793.s3.amazonaws.com","bucket_prefix":"","bucket_regional_domain_name":"grafana-backups-162646919043-537ed793.s3.eu-central-1.amazonaws.com","cors_rule":[],"force_destroy":true,"grant":[{"id":"ece69951308bd4d9af0fb1aacd8cb013ff1330b0cfa5afa856cac7782c8eb111","permissions":["FULL_CONTROL"],"type":"CanonicalUser","uri":""}],"hosted_zone_id":"Z21DNDUVLTQW6Q","id":"grafana-backups-162646919043-537ed793","lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"object_lock_enabled":false,"policy":"","region":"eu-central-1","replication_configuration":[],"request_payer":"BucketOwner","server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{"kms_master_key_id":"","sse_algorithm":"AES256"}],"bucket_key_enabled":false}]}],"tags":{},"tags_all":{},"timeouts":null,"versioning":[{"enabled":false,"mfa_delete":false}],"website":[],"website_domain":null,"website_endpoint":null},"after":{"acceleration_status":"","acl":null,"arn":"arn:aws:s3:::grafana-backups-162646919043-537ed793","bucket":"grafana-backups-162646919043-537ed793","bucket_domain_name":"grafana-backups-162646919043-537ed793.s3.amazonaws.com","bucket_prefix":"","bucket_regional_domain_name":"grafana-backups-162646919043-537ed793.s3.eu-central-1.amazonaws.com","cors_rule":[],"force_destroy":true,"grant":[{"id":"ece69951308bd4d9af0fb1aacd8cb013ff1330b0cfa5afa856cac7782c8eb111","permissions":["FULL_CONTROL"],"type":"CanonicalUser","uri":""}],"hosted_zone_id":"Z21DNDUVLTQW6Q","id":"grafana-backups-162646919043-537ed793","lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"object_lock_enabled":false,"policy":"","region":"eu-central-1","replication_configuration":[],"request_payer":"BucketOwner","server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{"kms_master_key_id":"","sse_algorithm":"AES256"}],"bucket_key_enabled":false}]}],"tags":{},"tags_all":{},"timeouts":null,"versioning":[{"enabled":false,"mfa_delete":false}],"website":[],"website_domain":null,"website_endpoint":null},"after_unknown":{},"before_sensitive":{"cors_rule":[],"grant":[{"permissions":[false]}],"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"replication_configuration":[],"server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{}]}]}],"tags":{},"tags_all":{},"versioning":[{}],"website":[]},"after_sensitive":{"cors_rule":[],"grant":[{"permissions":[false]}],"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"replication_configuration":[],"server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{}]}]}],"tags":{},"tags_all":{},"versioning":[{}],"website":[]}}},{"address":"aws_s3_bucket_policy.this","mode":"managed","type":"aws_s3_bucket_policy","name":"this","provider_name":"registry.terraform.io/hashicorp/aws","change":{"actions":["create"],"before":null,"after":{"bucket":"grafana-backups-162646919043-537ed793","policy":"{\"Statement\":[{\"Action\":\"s3:ListBucket\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::162646919043:role/grafana-ec2-role\"},\"Resource\":\"arn:aws:s3:::grafana-backups-162646919043-537ed793\",\"Sid\":\"AllowListBucketFromGrafanaRole\"},{\"Action\":[\"s3:PutObject\",\"s3:GetObject\"],\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::162646919043:role/grafana-ec2-role\"},\"Resource\":\"arn:aws:s3:::grafana-backups-162646919043-537ed793/*\",\"Sid\":\"AllowObjectReadWriteFromGrafanaRole\"}],\"Version\":\"2012-10-17\"}"},"after_unknown":{"id":true},"before_sensitive":false,"after_sensitive":{}}},{"address":"random_id.suffix","mode":"managed","type":"random_id","name":"suffix","provider_name":"registry.terraform.io/hashicorp/random","change":{"actions":["no-op"],"before":{"b64_std":"U37Xkw==","b64_url":"U37Xkw","byte_length":4,"dec":"1400821651","hex":"537ed793","id":"U37Xkw","keepers":null,"prefix":null},"after":{"b64_std":"U37Xkw==","b64_url":"U37Xkw","byte_length":4,"dec":"1400821651","hex":"537ed793","id":"U37Xkw","keepers":null,"prefix":null},"after_unknown":{},"before_sensitive":{},"after_sensitive":{}}}],"output_changes":{"s3_bucket_arn":{"actions":["no-op"],"before":"arn:aws:s3:::grafana-backups-162646919043-537ed793","after":"arn:aws:s3:::grafana-backups-162646919043-537ed793","after_unknown":false,"before_sensitive":false,"after_sensitive":false},"s3_bucket_name":{"actions":["no-op"],"before":"grafana-backups-162646919043-537ed793","after":"grafana-backups-162646919043-537ed793","after_unknown":false,"before_sensitive":false,"after_sensitive":false}},"prior_state":{"format_version":"1.0","terraform_version":"1.13.0","values":{"outputs":{"s3_bucket_arn":{"sensitive":false,"value":"arn:aws:s3:::grafana-backups-162646919043-537ed793","type":"string"},"s3_bucket_name":{"sensitive":false,"value":"grafana-backups-162646919043-537ed793","type":"string"}},"root_module":{"resources":[{"address":"data.aws_caller_identity.current","mode":"data","type":"aws_caller_identity","name":"current","provider_name":"registry.terraform.io/hashicorp/aws","schema_version":0,"values":{"account_id":"162646919043","arn":"arn:aws:iam::162646919043:root","id":"162646919043","user_id":"162646919043"},"sensitive_values":{}},{"address":"data.aws_iam_policy_document.bucket","mode":"data","type":"aws_iam_policy_document","name":"bucket","provider_name":"registry.terraform.io/hashicorp/aws","schema_version":0,"values":{"id":"2007271248","json":"{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"AllowListBucketFromGrafanaRole\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:ListBucket\",\n \"Resource\": \"arn:aws:s3:::grafana-backups-162646919043-537ed793\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::162646919043:role/grafana-ec2-role\"\n }\n },\n {\n \"Sid\": \"AllowObjectReadWriteFromGrafanaRole\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:PutObject\",\n \"s3:GetObject\"\n ],\n \"Resource\": \"arn:aws:s3:::grafana-backups-162646919043-537ed793/*\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::162646919043:role/grafana-ec2-role\"\n }\n }\n ]\n}","minified_json":"{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"AllowListBucketFromGrafanaRole\",\"Effect\":\"Allow\",\"Action\":\"s3:ListBucket\",\"Resource\":\"arn:aws:s3:::grafana-backups-162646919043-537ed793\",\"Principal\":{\"AWS\":\"arn:aws:iam::162646919043:role/grafana-ec2-role\"}},{\"Sid\":\"AllowObjectReadWriteFromGrafanaRole\",\"Effect\":\"Allow\",\"Action\":[\"s3:PutObject\",\"s3:GetObject\"],\"Resource\":\"arn:aws:s3:::grafana-backups-162646919043-537ed793/*\",\"Principal\":{\"AWS\":\"arn:aws:iam::162646919043:role/grafana-ec2-role\"}}]}","override_json":null,"override_policy_documents":null,"policy_id":null,"source_json":null,"source_policy_documents":null,"statement":[{"actions":["s3:ListBucket"],"condition":[],"effect":"Allow","not_actions":[],"not_principals":[],"not_resources":[],"principals":[{"identifiers":["arn:aws:iam::162646919043:role/grafana-ec2-role"],"type":"AWS"}],"resources":["arn:aws:s3:::grafana-backups-162646919043-537ed793"],"sid":"AllowListBucketFromGrafanaRole"},{"actions":["s3:GetObject","s3:PutObject"],"condition":[],"effect":"Allow","not_actions":[],"not_principals":[],"not_resources":[],"principals":[{"identifiers":["arn:aws:iam::162646919043:role/grafana-ec2-role"],"type":"AWS"}],"resources":["arn:aws:s3:::grafana-backups-162646919043-537ed793/*"],"sid":"AllowObjectReadWriteFromGrafanaRole"}],"version":"2012-10-17"},"sensitive_values":{"statement":[{"actions":[false],"condition":[],"not_actions":[],"not_principals":[],"not_resources":[],"principals":[{"identifiers":[false]}],"resources":[false]},{"actions":[false,false],"condition":[],"not_actions":[],"not_principals":[],"not_resources":[],"principals":[{"identifiers":[false]}],"resources":[false]}]}},{"address":"aws_s3_bucket.backups","mode":"managed","type":"aws_s3_bucket","name":"backups","provider_name":"registry.terraform.io/hashicorp/aws","schema_version":0,"values":{"acceleration_status":"","acl":null,"arn":"arn:aws:s3:::grafana-backups-162646919043-537ed793","bucket":"grafana-backups-162646919043-537ed793","bucket_domain_name":"grafana-backups-162646919043-537ed793.s3.amazonaws.com","bucket_prefix":"","bucket_regional_domain_name":"grafana-backups-162646919043-537ed793.s3.eu-central-1.amazonaws.com","cors_rule":[],"force_destroy":true,"grant":[{"id":"ece69951308bd4d9af0fb1aacd8cb013ff1330b0cfa5afa856cac7782c8eb111","permissions":["FULL_CONTROL"],"type":"CanonicalUser","uri":""}],"hosted_zone_id":"Z21DNDUVLTQW6Q","id":"grafana-backups-162646919043-537ed793","lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"object_lock_enabled":false,"policy":"","region":"eu-central-1","replication_configuration":[],"request_payer":"BucketOwner","server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{"kms_master_key_id":"","sse_algorithm":"AES256"}],"bucket_key_enabled":false}]}],"tags":{},"tags_all":{},"timeouts":null,"versioning":[{"enabled":false,"mfa_delete":false}],"website":[],"website_domain":null,"website_endpoint":null},"sensitive_values":{"cors_rule":[],"grant":[{"permissions":[false]}],"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"replication_configuration":[],"server_side_encryption_configuration":[{"rule":[{"apply_server_side_encryption_by_default":[{}]}]}],"tags":{},"tags_all":{},"versioning":[{}],"website":[]},"depends_on":["data.aws_caller_identity.current","random_id.suffix"]},{"address":"random_id.suffix","mode":"managed","type":"random_id","name":"suffix","provider_name":"registry.terraform.io/hashicorp/random","schema_version":0,"values":{"b64_std":"U37Xkw==","b64_url":"U37Xkw","byte_length":4,"dec":"1400821651","hex":"537ed793","id":"U37Xkw","keepers":null,"prefix":null},"sensitive_values":{}}]}}},"configuration":{"provider_config":{"aws":{"name":"aws","full_name":"registry.terraform.io/hashicorp/aws","version_constraint":"~\u003e 5.0"},"random":{"name":"random","full_name":"registry.terraform.io/hashicorp/random"}},"root_module":{"outputs":{"s3_bucket_arn":{"expression":{"references":["aws_s3_bucket.backups.arn","aws_s3_bucket.backups"]},"description":"ARN of the S3 bucket for Grafana backups"},"s3_bucket_name":{"expression":{"references":["aws_s3_bucket.backups.bucket","aws_s3_bucket.backups"]},"description":"Name of the S3 bucket for Grafana backups"}},"resources":[{"address":"aws_s3_bucket.backups","mode":"managed","type":"aws_s3_bucket","name":"backups","provider_config_key":"aws","expressions":{"bucket":{"references":["data.aws_caller_identity.current.account_id","data.aws_caller_identity.current","random_id.suffix.hex","random_id.suffix"]},"force_destroy":{"constant_value":true}},"schema_version":0},{"address":"aws_s3_bucket_policy.this","mode":"managed","type":"aws_s3_bucket_policy","name":"this","provider_config_key":"aws","expressions":{"bucket":{"references":["aws_s3_bucket.backups.id","aws_s3_bucket.backups"]},"policy":{"references":["data.aws_iam_policy_document.bucket.json","data.aws_iam_policy_document.bucket"]}},"schema_version":0},{"address":"random_id.suffix","mode":"managed","type":"random_id","name":"suffix","provider_config_key":"random","expressions":{"byte_length":{"constant_value":4}},"schema_version":0},{"address":"data.aws_caller_identity.current","mode":"data","type":"aws_caller_identity","name":"current","provider_config_key":"aws","schema_version":0},{"address":"data.aws_iam_policy_document.bucket","mode":"data","type":"aws_iam_policy_document","name":"bucket","provider_config_key":"aws","expressions":{"statement":[{"actions":{"constant_value":["s3:ListBucket"]},"effect":{"constant_value":"Allow"},"principals":[{"identifiers":{"references":["var.grafana_iam_role_arn"]},"type":{"constant_value":"AWS"}}],"resources":{"references":["aws_s3_bucket.backups.arn","aws_s3_bucket.backups"]},"sid":{"constant_value":"AllowListBucketFromGrafanaRole"}},{"actions":{"constant_value":["s3:GetObject","s3:PutObject"]},"effect":{"constant_value":"Allow"},"principals":[{"identifiers":{"references":["var.grafana_iam_role_arn"]},"type":{"constant_value":"AWS"}}],"resources":{"references":["aws_s3_bucket.backups.arn","aws_s3_bucket.backups"]},"sid":{"constant_value":"AllowObjectReadWriteFromGrafanaRole"}}]},"schema_version":0}],"variables":{"grafana_iam_role_arn":{"description":"IAM Role ARN of the Grafana EC2 instance (from previous task output)"}}}},"relevant_attributes":[{"resource":"data.aws_iam_policy_document.bucket","attribute":["json"]},{"resource":"aws_s3_bucket.backups","attribute":["id"]}],"timestamp":"2025-09-02T01:03:10Z","applyable":true,"complete":true,"errored":false} diff --git a/variables.tf b/variables.tf index cea62a6..98e2294 100644 --- a/variables.tf +++ b/variables.tf @@ -1,4 +1,4 @@ variable "grafana_iam_role_arn" { - type = string - description = "" + description = "IAM Role ARN of the Grafana EC2 instance (from previous task output)" + type = string }