To run IPv6-only Enos tests without a native IPv6 connection, you must provision a specific AWS environment. Follow these infrastructure steps:
- Create an IPv6-enabled VPC.
- Create an IPv6-enabled subnet.
- Create an Internet Gateway and configure the appropriate routes.
- Launch a
t2.medium EC2 instance with the following configuration:- Attach it to the created VPC.
- Assign a public IPv4 address.
- Assign a public IPv6 address.
- Use at least 20GB of storage.
- Create an IAM policy with the required permissions (see below) and attach it to the EC2 instance.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DescribeImages",
"ec2:DescribeInstanceTypeOfferings",
"ec2:DescribeAvailabilityZones",
"ec2:CreateVpc",
"kms:CreateKey",
"ec2:CreateTags",
"kms:DescribeKey",
"ec2:DescribeVpcs",
"kms:ScheduleKeyDeletion",
"kms:GetKeyPolicy",
"kms:GetKeyRotationStatus",
"kms:ListResourceTags",
"kms:CreateAlias",
"ec2:DeleteVpc",
"ec2:ModifyVpcAttribute",
"kms:ListAliases",
"ec2:DescribeVpcAttribute",
"kms:DeleteAlias",
"ec2:CreateSubnet",
"ec2:CreateInternetGateway",
"ec2:CreateSecurityGroup",
"ec2:DescribeSecurityGroups",
"ec2:AttachInternetGateway",
"ec2:DescribeSubnets",
"ec2:DescribeNetworkInterfaces",
"ec2:DeleteSubnet",
"ec2:DeleteSecurityGroup",
"ec2:RevokeSecurityGroupEgress",
"ec2:ModifySubnetAttribute",
"ec2:DetachInternetGateway",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:DeleteInternetGateway",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:DescribeInternetGateways",
"ec2:DescribeRouteTables",
"ec2:CreateRoute",
"ec2:RevokeSecurityGroupIngress",
"iam:CreateUser",
"iam:DeleteUser",
"iam:TagUser",
"iam:GetUser",
"iam:ListGroupsForUser",
"iam:CreateAccessKey",
"iam:DeleteAccessKey",
"iam:PutUserPolicy",
"iam:GetUserPolicy",
"iam:DeleteUserPolicy",
"ec2:DeleteRoute",
"ec2:RunInstances",
"ec2:DescribeInstances",
"rds:CreateDBSubnetGroup",
"iam:CreateRole",
"elasticloadbalancing:DescribeTargetGroups",
"ec2:TerminateInstances",
"ec2:DescribeInstanceTypes",
"rds:DescribeDBSubnetGroups",
"iam:GetRole",
"elasticloadbalancing:CreateTargetGroup",
"elasticloadbalancing:DeleteTargetGroup",
"rds:DeleteDBSubnetGroup",
"iam:ListInstanceProfilesForRole",
"iam:DeleteRole",
"ec2:DescribeTags",
"rds:ListTagsForResource",
"iam:ListRolePolicies",
"elasticloadbalancing:AddTags",
"ec2:DescribeInstanceAttribute",
"rds:CreateDBInstance",
"iam:ListAttachedRolePolicies",
"elasticloadbalancing:ModifyTargetGroupAttributes",
"rds:DeleteDBInstance",
"ec2:DescribeVolumes",
"rds:AddTagsToResource",
"iam:PutRolePolicy",
"iam:DeleteRolePolicy",
"iam:CreateInstanceProfile",
"iam:DeleteInstanceProfile",
"elasticloadbalancing:DescribeTargetGroupAttributes",
"ec2:DescribeInstanceCreditSpecifications",
"rds:DescribeDBInstances",
"iam:GetRolePolicy",
"iam:GetInstanceProfile",
"elasticloadbalancing:DescribeTags",
"iam:RemoveRoleFromInstanceProfile",
"iam:AddRoleToInstanceProfile",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:RegisterTargets",
"elasticloadbalancing:CreateLoadBalancer",
"elasticloadbalancing:DeregisterTargets",
"elasticloadbalancing:ModifyLoadBalancerAttributes",
"elasticloadbalancing:DeleteLoadBalancer",
"elasticloadbalancing:DescribeLoadBalancerAttributes",
"elasticloadbalancing:CreateListener",
"elasticloadbalancing:DescribeListeners",
"elasticloadbalancing:DeleteListener",
"ec2:AssociateRouteTable",
"ec2:DisassociateRouteTable",
"ec2:CreateIpam",
"ec2:DeleteIpam",
"ec2:ModifyIpam",
"ec2:DescribeIpams",
"ec2:CreateIpamPool",
"ec2:DeleteIpamPool",
"ec2:ModifyIpamPool",
"ec2:DescribeIpamPools",
"ec2:AllocateIpamPoolCidr",
"ec2:ProvisionIpamPoolCidr",
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:ListBucket",
"s3:ListAllMyBuckets",
"s3:GetAccelerateConfiguration",
"s3:PutAccelerateConfiguration",
"s3:GetLifecycleConfiguration",
"s3:PutLifecycleConfiguration",
"s3:GetReplicationConfiguration",
"s3:PutReplicationConfiguration",
"s3:GetBucket*",
"s3:PutBucket*",
"s3:GetEncryptionConfiguration",
"s3:PutEncryptionConfiguration",
"ec2:AttachNetworkInterface",
"ec2:DetachNetworkInterface",
"iam:CreateServiceLinkedRole",
"iam:DeleteServiceLinkedRole",
"iam:PassRole"
],
"Resource": "*"
"]
}
]
}