modules/accelerator/autoscaling_groups/profile.tf (66 lines of code) (raw):
resource "aws_iam_instance_profile" "profile" {
name = "${var.repo_name}-${var.region_name}-profile"
role = aws_iam_role.deploy_role.name
}
resource "aws_iam_role" "deploy_role" {
description = "Allows EC2 instances to call AWS services on your behalf"
name = "${var.repo_name}-${var.region_name}-role"
path = "/"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action : "sts:AssumeRole",
Principal : {
"Service" : "ec2.amazonaws.com"
},
Effect : "Allow",
Sid : ""
}
]
})
}
resource "aws_iam_policy" "profile_s3_policy" {
name_prefix = "Policy-s3-${var.repo_name}"
policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::${var.artifact_bucket}",
"arn:aws:s3:::${var.artifact_bucket}/*"
]
},
{
"Action": [
"kms:DescribeKey",
"kms:GenerateDataKey*",
"kms:Encrypt",
"kms:ReEncrypt*",
"kms:Decrypt"
],
"Effect": "Allow",
"Resource": "${var.aws_kms_key_arn}"
}
]
}
POLICY
}
resource "aws_iam_role_policy_attachment" "s3_read" {
role = aws_iam_role.deploy_role.name
policy_arn = aws_iam_policy.profile_s3_policy.arn
}
resource "aws_iam_role_policy_attachment" "cloudwatch" {
role = aws_iam_role.deploy_role.name
policy_arn = "arn:aws:iam::aws:policy/CloudWatchAgentAdminPolicy"
}
resource "aws_iam_role_policy_attachment" "ssm_agent" {
role = aws_iam_role.deploy_role.name
policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
}