This article explains how to add Amazon monitors using only the required APIs (Custom IAM Policy - second method ↓)
To enable AWS monitoring in Applications Manager, you need AWS Access Keys for authentication and retrieval of key performance metrics. Follow the steps below:
Attach the required IAM policy to the newly created user:
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"eks:DescribeFargateProfile",
"ec2:DescribeInstances",
"cloudwatch:GetMetricData",
"dynamodb:ListTables",
"ec2:DescribeRegions",
"sns:ListTopics",
"ce:GetCostAndUsage",
"s3:ListBucket",
"ecs:ListServices",
"elasticbeanstalk:DescribeEnvironmentResources",
"elasticloadbalancing:DescribeLoadBalancers",
"eks:DescribeNodegroup",
"elasticbeanstalk:DescribeEnvironments",
"dynamodb:DescribeTable",
"ecs:ListTasks",
"autoscaling:DescribeAutoScalingGroups",
"ec2:DescribeVolumes",
"rds:DescribeDBInstances",
"ecs:DescribeServices",
"ecs:DescribeContainerInstances",
"ecs:DescribeTasks",
"dynamodb:DescribeLimits",
"ecs:ListClusters",
"sqs:ListQueues",
"eks:ListNodegroups",
"sns:ListSubscriptionsByTopic",
"lambda:ListFunctions",
"lambda:GetFunction",
"sqs:GetQueueAttributes",
"dynamodb:DescribeStream",
"cloudwatch:GetMetricStatistics",
"ecs:DescribeClusters",
"ce:GetCostForecast",
"eks:ListFargateProfiles",
"s3:ListAllMyBuckets",
"elasticbeanstalk:DescribeEvents",
"elasticloadbalancing:DescribeTargetHealth",
"elasticloadbalancing:DescribeTargetGroups",
"eks:DescribeCluster",
"ecs:ListContainerInstances",
"eks:ListClusters",
"sts:GetCallerIdentity",
"s3:GetBucketLocation",
"rds:DescribeDBClusters",
"ec2:DescribeInstanceAttribute",
"cloudwatch:ListMetrics",
"ec2:GetConsoleOutput",
"cloudformation:ListStackResources",
"cloudfront:GetDistribution",
"cloudfront:ListDistributions",
"cloudfront:ListInvalidations",
"elasticfilesystem:DescribeFileSystems",
"elasticfilesystem:DescribeMountTargets",
"elasticloadbalancing:DescribeLoadBalancerAttributes",
"directconnect:DescribeConnections",
"ecr:DescribeRepositories",
"ecr:DescribeImages",
"ec2:DescribeNatGateways",
"fsx:DescribeFileCaches",
"route53:ListHealthChecks",
"route53:GetHealthCheck",
"route53:GetHealthCheckStatus",
"route53:GetHealthCheckLastFailureReason",
"transfer:DescribeServer",
"transfer:ListServers",
"transfer:ListUsers",
"ec2:DescribeTransitGateways",
"ec2:DescribeTransitGatewayAttachments",
"ec2:DescribeClientVpnEndpoints",
"ec2:DescribeVpnConnections",
"ec2:DescribeVpcEndpointServices",
"ec2:DescribeVpcEndpoints",
"directconnect:DescribeVirtualInterfaces",
"states:ListStateMachines",
"states:DescribeStateMachine",
"states:ListExecutions",
"network-firewall:ListFirewalls",
"network-firewall:DescribeFirewall",
"route53resolver:ListResolverEndpoints",
"route53resolver:GetResolverEndpoint",
"route53resolver:ListResolverEndpointIpAddresses",
"vpc-lattice:ListServices",
"vpc-lattice:GetService",
"redshift:DescribeClusters",
"ses:ListIdentities",
"ses:GetSendQuota",
"ses:GetSuppressedDestination" ],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "apigateway:GET",
"Resource": [
"arn:aws:apigateway:*::/restapis/*",
"arn:aws:apigateway:*::/restapis"
]
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "apigateway:GET",
"Resource": [
"arn:aws:apigateway:*::/apis/*",
"arn:aws:apigateway:*::/apis"
]
}
]
}
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"eks:DescribeFargateProfile",
"ec2:DescribeInstances",
"cloudwatch:GetMetricData",
"dynamodb:ListTables",
"ec2:DescribeRegions",
"sns:ListTopics",
"ce:GetCostAndUsage",
"s3:ListBucket",
"ecs:ListServices",
"elasticbeanstalk:DescribeEnvironmentResources",
"elasticloadbalancing:DescribeLoadBalancers",
"eks:DescribeNodegroup",
"elasticbeanstalk:DescribeEnvironments",
"dynamodb:DescribeTable",
"ecs:ListTasks",
"autoscaling:DescribeAutoScalingGroups",
"ec2:DescribeVolumes",
"rds:DescribeDBInstances",
"ecs:DescribeServices",
"ecs:DescribeContainerInstances",
"ecs:DescribeTasks",
"dynamodb:DescribeLimits",
"ecs:ListClusters",
"sqs:ListQueues",
"eks:ListNodegroups",
"sns:ListSubscriptionsByTopic",
"lambda:ListFunctions",
"lambda:GetFunction",
"sqs:GetQueueAttributes",
"dynamodb:DescribeStream",
"cloudwatch:GetMetricStatistics",
"ecs:DescribeClusters",
"ce:GetCostForecast",
"eks:ListFargateProfiles",
"s3:ListAllMyBuckets",
"elasticbeanstalk:DescribeEvents",
"elasticloadbalancing:DescribeTargetHealth",
"elasticloadbalancing:DescribeTargetGroups",
"eks:DescribeCluster",
"ecs:ListContainerInstances",
"eks:ListClusters",
"sts:GetCallerIdentity",
"s3:GetBucketLocation",
"rds:DescribeDBClusters",
"ec2:DescribeInstanceAttribute",
"cloudwatch:ListMetrics",
"ec2:GetConsoleOutput",
"cloudformation:ListStackResources",
"cloudfront:GetDistribution",
"cloudfront:ListDistributions",
"cloudfront:ListInvalidations",
"elasticfilesystem:DescribeFileSystems",
"elasticfilesystem:DescribeMountTargets",
"elasticloadbalancing:DescribeLoadBalancerAttributes",
"directconnect:DescribeConnections",
"ecr:DescribeRepositories",
"ecr:DescribeImages",
"ec2:DescribeNatGateways",
"fsx:DescribeFileCaches",
"route53:ListHealthChecks",
"route53:GetHealthCheck",
"route53:GetHealthCheckStatus",
"route53:GetHealthCheckLastFailureReason",
"transfer:DescribeServer",
"transfer:ListServers",
"transfer:ListUsers"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "apigateway:GET",
"Resource": [
"arn:aws:apigateway:*::/restapis/*",
"arn:aws:apigateway:*::/restapis"
]
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "apigateway:GET",
"Resource": [
"arn:aws:apigateway:*::/apis/*",
"arn:aws:apigateway:*::/apis"
]
}
]
}
By following these steps, IAM policies will be tailored to your organization's needs, ensuring optimal AWS resource monitoring.