View a markdown version of this page

AWSTransformInfrastructureExecutorAccessEC2 - AWS Managed Policy

AWSTransformInfrastructureExecutorAccessEC2

Description: Grants developers execution role the permissions needed to execute AWS Transform Continuous Modernization CLI/agent to run assessments/transformations using EC2, including uploading source code, retrieving results, monitoring job status, reading logs, and managing transformation schedules.

AWSTransformInfrastructureExecutorAccessEC2 is an AWS managed policy.

Using this policy

You can attach AWSTransformInfrastructureExecutorAccessEC2 to your users, groups, and roles.

Policy details

  • Type: AWS managed policy

  • Creation time: July 20, 2026, 20:12 UTC

  • Edited time: July 20, 2026, 20:12 UTC

  • ARN: arn:aws:iam::aws:policy/AWSTransformInfrastructureExecutorAccessEC2

Policy version

Policy version: v1 (default)

The policy's default version is the version that defines the permissions for the policy. When a user or role with the policy makes a request to access an AWS resource, AWS checks the default version of the policy to determine whether to allow the request.

JSON policy document

{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "CFNRead", "Effect" : "Allow", "Action" : [ "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResources", "cloudformation:DescribeStackDriftDetectionStatus" ], "Resource" : "arn:aws:cloudformation:*:*:stack/atx-*/*" }, { "Sid" : "CFNValidateTemplate", "Effect" : "Allow", "Action" : "cloudformation:ValidateTemplate", "Resource" : "*" }, { "Sid" : "EC2Desc", "Effect" : "Allow", "Action" : [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeKeyPairs", "ec2:DescribeRouteTables", "ec2:DescribeNatGateways", "ec2:DescribeInternetGateways" ], "Resource" : "*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "EC2PowerState", "Effect" : "Allow", "Action" : [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource" : "arn:aws:ec2:*:*:instance/*", "Condition" : { "StringEquals" : { "ec2:ResourceTag/atx-remote-infra" : "true" } } }, { "Sid" : "SSMRead", "Effect" : "Allow", "Action" : [ "ssm:GetCommandInvocation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:DescribeInstanceInformation", "ssm:DescribeSessions" ], "Resource" : "*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "SSMTgt", "Effect" : "Allow", "Action" : [ "ssm:SendCommand", "ssm:StartSession" ], "Resource" : "arn:aws:ec2:*:*:instance/*", "Condition" : { "StringEquals" : { "ssm:resourceTag/atx-remote-infra" : "true" } } }, { "Sid" : "SSMDocs", "Effect" : "Allow", "Action" : "ssm:SendCommand", "Resource" : "arn:aws:ssm:*::document/AWS-RunShellScript" }, { "Sid" : "S3Data", "Effect" : "Allow", "Action" : [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource" : [ "arn:aws:s3:::atx-source-code-*", "arn:aws:s3:::atx-source-code-*/*", "arn:aws:s3:::atx-ct-output-*", "arn:aws:s3:::atx-ct-output-*/*" ], "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "KMSEncryptDecrypt", "Effect" : "Allow", "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource" : "arn:aws:kms:*:*:key/*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" }, "ForAnyValue:StringEquals" : { "kms:ResourceAliases" : "alias/atx-encryption-key" } } }, { "Sid" : "SM", "Effect" : "Allow", "Action" : [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource" : "arn:aws:secretsmanager:*:*:secret:atx/*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "SMList", "Effect" : "Allow", "Action" : "secretsmanager:ListSecrets", "Resource" : "*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "SchedLifecycle", "Effect" : "Allow", "Action" : [ "scheduler:CreateSchedule", "scheduler:DeleteSchedule", "scheduler:GetSchedule", "scheduler:UpdateSchedule" ], "Resource" : "arn:aws:scheduler:*:*:schedule/atx-ct/*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "SchedGroupRead", "Effect" : "Allow", "Action" : "scheduler:GetScheduleGroup", "Resource" : "arn:aws:scheduler:*:*:schedule-group/atx-ct", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "SchedList", "Effect" : "Allow", "Action" : [ "scheduler:ListSchedules", "scheduler:ListScheduleGroups" ], "Resource" : "*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "IAMPassEC2InstanceRole", "Effect" : "Allow", "Action" : "iam:PassRole", "Resource" : "arn:aws:iam::*:role/atx-transform-role*", "Condition" : { "StringEquals" : { "iam:PassedToService" : "ec2.amazonaws.com", "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "IAMPassSchedulerRole", "Effect" : "Allow", "Action" : "iam:PassRole", "Resource" : "arn:aws:iam::*:role/AtxSchedulerInvocationRole", "Condition" : { "StringEquals" : { "iam:PassedToService" : "scheduler.amazonaws.com", "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "IAMReadRoles", "Effect" : "Allow", "Action" : [ "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:GetRolePolicy" ], "Resource" : [ "arn:aws:iam::*:role/atx-*", "arn:aws:iam::*:role/Atx*", "arn:aws:iam::*:role/ATX*" ], "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "IAMReadInstanceProfile", "Effect" : "Allow", "Action" : "iam:GetInstanceProfile", "Resource" : [ "arn:aws:iam::*:instance-profile/atx-*", "arn:aws:iam::*:instance-profile/Atx*", "arn:aws:iam::*:instance-profile/ATX*" ], "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "TagGetATXStacks", "Effect" : "Allow", "Action" : "tag:GetResources", "Resource" : "*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } }, { "Sid" : "CFNListStacksForDetect", "Effect" : "Allow", "Action" : "cloudformation:ListStacks", "Resource" : "*", "Condition" : { "StringEquals" : { "aws:ResourceAccount" : "${aws:PrincipalAccount}" } } } ] }

Learn more