📕
【入門#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ロールの紐づけ方などが気になる方はぜひ見に来てください!
Discussion