diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/AWSEC2TemplateOptions.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/AWSEC2TemplateOptions.java
index 1e75329..6bca727 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/AWSEC2TemplateOptions.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/AWSEC2TemplateOptions.java
@@ -85,6 +85,8 @@
             eTo.spotPrice(getSpotPrice());
          if (getSpotOptions() != null)
             eTo.spotOptions(getSpotOptions());
+         if (getPrivateIpAddress() != null)
+            eTo.privateIpAddress(getPrivateIpAddress());
       }
    }
 
@@ -97,6 +99,7 @@
    private Set<String> groupIds = ImmutableSet.of();
    private String iamInstanceProfileArn;
    private String iamInstanceProfileName;
+   private String privateIpAddress;
 
    @Override
    public boolean equals(Object o) {
@@ -110,13 +113,14 @@
                && equal(this.noPlacementGroup, that.noPlacementGroup) && equal(this.subnetId, that.subnetId)
                && equal(this.spotPrice, that.spotPrice) && equal(this.spotOptions, that.spotOptions)
                && equal(this.groupIds, that.groupIds) && equal(this.iamInstanceProfileArn, that.iamInstanceProfileArn)
-               && equal(this.iamInstanceProfileName, that.iamInstanceProfileName);
+               && equal(this.iamInstanceProfileName, that.iamInstanceProfileName)
+               && equal(this.privateIpAddress, that.privateIpAddress);
    }
 
    @Override
    public int hashCode() {
       return Objects.hashCode(super.hashCode(), monitoringEnabled, placementGroup, noPlacementGroup, subnetId,
-               spotPrice, spotOptions, groupIds, iamInstanceProfileArn, iamInstanceProfileName);
+               spotPrice, spotOptions, groupIds, iamInstanceProfileArn, iamInstanceProfileName, privateIpAddress);
    }
 
    @Override
@@ -135,6 +139,7 @@
          toString.add("groupIds", groupIds);
       toString.add("iamInstanceProfileArn", iamInstanceProfileArn);
       toString.add("iamInstanceProfileName", iamInstanceProfileName);
+      toString.add("privateIpAddress", privateIpAddress);
       return toString;
    }
 
@@ -195,6 +200,11 @@
       return this;
    }
 
+   public AWSEC2TemplateOptions privateIpAddress(String address) {
+      this.privateIpAddress = checkNotNull(emptyToNull(address), "address must be defined");
+      return this;
+   }
+
    /**
     * Specifies the maximum spot price to use
     */
@@ -442,6 +452,11 @@
          return options.iamInstanceProfileName(name);
       }
 
+      public static AWSEC2TemplateOptions privateIpAddress(String address) {
+         AWSEC2TemplateOptions options = new AWSEC2TemplateOptions();
+         return options.privateIpAddress(address);
+      }
+
       /**
        * @see AWSEC2TemplateOptions#spotPrice
        */
@@ -788,4 +803,8 @@
    public String getIAMInstanceProfileName() {
       return iamInstanceProfileName;
    }
+
+   public String getPrivateIpAddress() {
+      return privateIpAddress;
+   }
 }
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/strategy/CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/strategy/CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.java
index 78b9573..d8b8929 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/strategy/CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/strategy/CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.java
@@ -92,6 +92,8 @@
          instanceOptions.withIAMInstanceProfileArn(awsTemplateOptions.getIAMInstanceProfileArn());
       if (awsTemplateOptions.getIAMInstanceProfileName() != null)
          instanceOptions.withIAMInstanceProfileName(awsTemplateOptions.getIAMInstanceProfileName());
+      if (awsTemplateOptions.getPrivateIpAddress() != null)
+         instanceOptions.withPrivateIpAddress(awsTemplateOptions.getPrivateIpAddress());
 
       return instanceOptions;
    }
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java
index 1ae0b47..e8d5bb7 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java
@@ -114,6 +114,16 @@
       return this;
    }
 
+   /**
+    * The primary IP address for VPC instance. You must specify a value from the IP address range of the subnet.
+    *
+    * @see org.jclouds.aws.ec2.domain.AWSRunningInstance#getPrivateIpAddress()
+    */
+   public AWSRunInstancesOptions withPrivateIpAddress(String address) {
+      formParameters.put("PrivateIpAddress", checkNotNull(address, "address"));
+      return this;
+   }
+
    public static class Builder extends RunInstancesOptions.Builder {
 
       /**
@@ -220,6 +230,14 @@
          return options.withBlockDeviceMappings(mappings);
       }
 
+      /**
+       * @see AWSRunInstancesOptions#withPrivateIpAddress(String)
+       */
+      public static AWSRunInstancesOptions withPrivateIpAdress(String address) {
+         AWSRunInstancesOptions options = new AWSRunInstancesOptions();
+         return options.withPrivateIpAddress(address);
+      }
+
    }
 
    @Override
diff --git a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/options/AWSEC2TemplateOptionsTest.java b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/options/AWSEC2TemplateOptionsTest.java
index 04a079b..93f0184 100644
--- a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/options/AWSEC2TemplateOptionsTest.java
+++ b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/options/AWSEC2TemplateOptionsTest.java
@@ -25,6 +25,7 @@
 import static org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.Builder.installPrivateKey;
 import static org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.Builder.keyPair;
 import static org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.Builder.noKeyPair;
+import static org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.Builder.privateIpAddress;
 import static org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.Builder.securityGroupIds;
 import static org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.Builder.securityGroups;
 import static org.testng.Assert.assertEquals;
@@ -413,4 +414,15 @@
    public void testIAMInstanceProfileNameNPE() {
       iamInstanceProfileName(null);
    }
+
+   @Test
+   public void testPrivateIpAddressStatic() {
+      AWSEC2TemplateOptions options = privateIpAddress("10.0.0.1");
+      assertEquals(options.getPrivateIpAddress(), "10.0.0.1");
+   }
+
+   @Test(expectedExceptions = NullPointerException.class)
+   public void testPrivateIpAddressNPE() {
+      privateIpAddress(null);
+   }
 }
diff --git a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptionsTest.java b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptionsTest.java
index c680777..7a84452 100644
--- a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptionsTest.java
+++ b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptionsTest.java
@@ -23,6 +23,7 @@
 import static org.jclouds.aws.ec2.options.AWSRunInstancesOptions.Builder.withIAMInstanceProfileName;
 import static org.jclouds.aws.ec2.options.AWSRunInstancesOptions.Builder.withKernelId;
 import static org.jclouds.aws.ec2.options.AWSRunInstancesOptions.Builder.withKeyName;
+import static org.jclouds.aws.ec2.options.AWSRunInstancesOptions.Builder.withPrivateIpAdress;
 import static org.jclouds.aws.ec2.options.AWSRunInstancesOptions.Builder.withRamdisk;
 import static org.jclouds.aws.ec2.options.AWSRunInstancesOptions.Builder.withSecurityGroup;
 import static org.jclouds.aws.ec2.options.AWSRunInstancesOptions.Builder.withSecurityGroupId;
@@ -371,4 +372,15 @@
       withBlockDeviceMappings(null);
    }
 
+   @Test
+   public void testWithPrivateIpAddressStatic() {
+      AWSRunInstancesOptions options = withPrivateIpAdress("10.0.0.1");
+      assertEquals(options.buildFormParameters().get("PrivateIpAddress"), ImmutableList.of("10.0.0.1"));
+   }
+
+   @Test(expectedExceptions = NullPointerException.class)
+   public void testWithPrivateIpAddressStaticNPE() {
+      withPrivateIpAdress(null);
+   }
+
 }
