처음 시작하는 Infrastructure as Code: AWS & 테라폼을 수강하며 정리한 내용입니다.
iam_role_hello.tf
파일을 생성하고 아래와 같이 작성aws_iam_instance_profile
은 IAM 역할을 위한 컨테이너로서 인스턴스 시작 시 EC2 인스턴스에 역할 정보를 전달resource "aws_iam_role" "hello" {
name = "hello-iam-role"
path = "/"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
resource "aws_iam_instance_profile" "hello" {
name = "hello-profile"
role = aws_iam_role.hello.name
}
assume_role_policy
는 이 Role이 사용자나 다른 AWS 서비스에서 사용될 수 있도록 허용하는 정책terraform plan -parallelism=30
과 terraform apply
명령어 실행iam-role-hello.tf
파일에 Policy를 추가하고 role
인자로 Role에 연결resource "aws_iam_role_policy" "hello_s3" {
name = "hello-s3-download"
role = aws_iam_role.hello.id
policy = <<EOF
{
"Statement": [
{
"Sid": "AllowAppArtifactsReadAccess",
"Action": [
"s3:*"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
}
EOF
}
user_gildong_hong.tf
파일에서 gildong.hong
사용자에게 권한 부여resource "aws_iam_user_policy" "art_devops_black" {
name = "super-admin"
user = aws_iam_user.gildong_hong.name
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": [
"*"
]
}
]
}
EOF
}
terraform plan
, terraform apply
명령어 실행