📕

【入門#6】TerraformでIAMロール(EC2用)を作ろう

に公開

今回の目標

Terraformを使って、EC2用のIAMロールを作ります。
今回作成するIAMロール
EC2がS3にアクセス(read/write)できるようにしたいため、FullAccessをつけていきます。

◯今回のシステム構成図の全体像

関連記事:https://zenn.dev/alt_tanuki/articles/7c1f97da33496b

やってみよう!

1. IAMロールの作成手順

基本的には、下記3点を作成します。
・IAMロール本体:IAMロールの本体そのもの
・IAMロールポリシー:IAMロールに紐づけるPolicy(今回はAmazonS3FullAccessのこと)
・IAMロールプロファイル:IAMロールをEC2等へ紐づける際に使用するラッパー

これらが揃って初めて、EC2などへの紐づけが可能となります。
EC2への紐づけ時は、「IAMロールプロファイル」のnameを使用します。

今回はcompute.tfファイルを作成し下記を記述します。

# IAM Role(EC2)
resource "aws_iam_role" "cask_tokyo_ec2_role_ec2" {
  name = "cask-tokyo-ec2-role-ec2"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Principal = {
          Service = "ec2.amazonaws.com"
        }
        Action = "sts:AssumeRole"
      }
    ]
  })
}

# Policy (S3 FullAccess) for IAM Role(EC2)
resource "aws_iam_role_policy_attachment" "cask_tokyo_ec2_polucy_s3_ec2" {
  role       = aws_iam_role.cask_tokyo_ec2_role_ec2.name
  policy_arn = "arn:aws:iam::aws:policy/AmazonS3FullAccess"
}

# IAM Role Profile for IAM Role(EC2)
resource "aws_iam_instance_profile" "cask_tokyo_ec2_profile_ec2" {
  name = "ec2-s3-fullaccess-profile"
  role = aws_iam_role.cask_tokyo_ec2_role_ec2.name
}

上記を書いた状態でterraform applyをかけると?

おお!EC2用のロールができていますね!!
意外と楽。

ちなみにEC2などに紐づける場合は、下記のように記述するようです。
※profileを紐づけ

resource "aws_instance" "example" {
  ami                    = "ami-xxxxxxxx"
  instance_type          = "t3.micro"
  iam_instance_profile   = aws_iam_instance_profile.cask_tokyo_ec2_profile_ec2.name
}

profileってラッパーが必要なのは不思議ですね。
これは実行しても画面上でみれないもので、、

まぁなにはともあれIAMロールができてめでたし!!

以上!
TerraformでのIAMロール作成でした。

下記の記事を目次として、続きをどんどん構築を行っていきますので、今回作成したIAMロールの紐づけ方などが気になる方はぜひ見に来てください!

https://zenn.dev/alt_tanuki/articles/7c1f97da33496b

Discussion