Terraform에서 JSON 파일에 변수를 전달하는 방법
일반적인 명령문에는 4개의 값을 만족해야 합니다. 이들은 Sid, Effect, Action 및 Resource입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Policy Name",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::mytestbucket"
]
}
]
}
이 문에서 Resource 및 Sid 값을 어떻게 동적으로 변경해야 합니까?
Terraform에는 template_file.이라는 데이터 리소스가 있습니다. 이를 통해 매개변수를 명령문 파일에 동적으로 쉽게 전달할 수 있습니다.
데모 타임!
먼저 사용자, 정책 및 버킷을 생성해야 합니다. 그런 다음 명령문에서 버킷 ARN을 사용합니다. 깨끗한 코드를 만들기 위해 대부분의 일에 변수를 사용하고 있습니다.
resource "aws_iam_user" "iam-user" {
name = var.iam_user_name
}
resource "aws_s3_bucket" "s3-bucket" {
bucket = "mytestbucket"
}
resource "aws_iam_user_policy" "iam-policy" {
name = var.iam_policy_name
user = aws_iam_user.iam-user.name
}
일반적으로 다음과 같이 json 정책을 연결할 수 있습니다.
policy = file("/path/to/policy.json")
json 파일에 매개변수를 전달하고 싶기 때문에 "template_file"이라는 데이터 리소스를 사용합니다.
그것을 사용하려면 json 확장자의 이름을 tpl로 바꿔야 합니다. 이것으로 우리는 이 파일을 템플릿으로 사용하고 싶다고 말합니다.
이제 보간 구문을 사용하여 템플릿 파일을 수정합니다. Sid와 Resource 모두에 대한 매개변수를 전달합니다.
"Statement": [
{
"Sid": "${sid-name}",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"${resource-name}"
]
}
]
기본 파일로 돌아가서 template_file 리소스를 추가합니다.
data "template_file" "iam-policy-template" {
template = file("/path/to/policy.tpl")
vars = {
sid-name = "Policy for S3 Access"
resource-name = aws_s3_bucket.sample_bucket.arn
}
}
여기에서 vars 블록을 지정하고 내부에서 템플릿 파일의 변수를 사용합니다. 이제 IAM 정책 리소스에서 이 데이터를 사용할 수 있습니다.
템플릿의 렌더링된 버전에 액세스하고 있습니다.
resource "aws_iam_user_policy" "iam-policy" {
name = var.iam_policy_name
user = aws_iam_user.iam-policy.name
policy = data.template_file.iam-policy-template.rendered
}
Reference
이 문제에 관하여(Terraform에서 JSON 파일에 변수를 전달하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ustundagsemih/how-to-pass-variables-to-a-json-file-in-terraform-57k1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)