11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TerraformでIAMを設定してEC2にセッションマネージャー経由で接続してみる

Posted at

はじめに

Terraformの勉強を始めたので備忘録を兼ねて行ったことを投稿しようと思います。
これは前回の投稿の続きです。
前回の投稿ではTerraformでEC2の作成を行いました。
今回は作成したEC2にロールを付与してセッションマネージャー経由で接続できるようにしてみます。

TerraformでIAMの定義を行う

信頼ポリシーを定義

まず、信頼ポリシーを定義して何のリソースに何ができるかを定義します。
今回はセッションマネージャー経由でEC2に接続したいので、
AssumeRoleを許可して対象はEC2になるようにします。

iam.tf
data "aws_iam_policy_document" "instance-assume-role-policy" {
  statement {
    actions = ["sts:AssumeRole"]

    principals {
      type        = "Service"
      identifiers = ["ec2.amazonaws.com"]
    }
  }
}

dataは外部リソースの情報を取得してTerraform上での利用を可能に

IAMロールを定義

assume_role_policyに定義した信頼ポリシーの情報を参照します。

iam.tf
resource "aws_iam_role" "test" {
  name               = "test_role"
  assume_role_policy = data.aws_iam_policy_document.instance-assume-role-policy.json
}

IAMポリシーを定義

dataを使ってAWSのAmazonSSMManagedInstanceCoreを参照しARNを取得してロールに紐付けます。
先ほど定義したロールにアタッチされるようにします。

iam.tf
data "aws_iam_policy" "ssm_core" {
  name = "AmazonSSMManagedInstanceCore"
}

resource "aws_iam_role_policy_attachment" "test" {
  role       = aws_iam_role.test.name
  policy_arn = data.aws_iam_policy.ssm_core.arn
}

インスタンスプロファイルを定義

IAMロールをEC2に設定するにはインスタンスプロファイルを定義する必要があります。

iam.tf
resource "aws_iam_instance_profile" "test" {
  name = "test_role"
  role = aws_iam_role.test.name
}

EC2に定義したロールを設定

前回作成したec2.tfに定義したインスタンスプロファイル追加します。

ec2.tf
resource "aws_instance" "test" {
  ami           = "ami-0404778e217f54308"
  instance_type = "t3.micro"

  # 以下を追加
  iam_instance_profile = aws_iam_instance_profile.test.name

  tags = {
    Name = "tf_test"
  }
}

TerraformでIAMロールを付与してEC2を作成

Terraformのplan applyを実行

前回と同様、terraform の plan applyを実行して、AWS上にリソースを作成します。

terraform plan
terraform apply

セッションマネージャーで作成したEC2に接続する

AWS マネジメントコンソールを開いて、AWS Systems ManagerのSession Managerを開きます。
セッションの開始を押すと作成されたインスタンスが表示され、EC2に接続することができます。

作成したリソースの削除

前回と同様、terraform の destroyを実行して、AWS上のリソースを削除します。

terraform destroy

さいごに

今回は作成したEC2にセッションマネジャー経由でアクセスできるようにIAMの定義を行いました。
次回はブラウザでhttp接続するための設定をTerraformで行いたいと思います。

11
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?