Skip to content

Commit 68e2ab8

Browse files
author
David Peterka
committed
Add IAM Instance Profile to Run EC2 Instance
1 parent 3f36653 commit 68e2ab8

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

samples/03-ec2/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ task runInstance(type: AmazonEC2RunInstanceTask, dependsOn: importKey) {
3737
keyName "sample-key"
3838
instanceType "t2.micro"
3939
userData "#! /bin/bash\nyum -y update"
40+
iamInstanceProfileName "profile-name"
4041
}
4142

4243
task stopInstance(type: AmazonEC2StopInstanceTask) {

src/main/java/jp/classmethod/aws/gradle/ec2/AmazonEC2RunInstanceTask.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.gradle.api.tasks.TaskAction;
2929

3030
import com.amazonaws.services.ec2.AmazonEC2;
31+
import com.amazonaws.services.ec2.model.IamInstanceProfileSpecification;
3132
import com.amazonaws.services.ec2.model.RunInstancesRequest;
3233
import com.amazonaws.services.ec2.model.RunInstancesResult;
3334
import com.google.common.base.Strings;
@@ -62,6 +63,10 @@ public class AmazonEC2RunInstanceTask extends ConventionTask {
6263
@Setter
6364
private String subnetId;
6465

66+
@Getter
67+
@Setter
68+
private String iamInstanceProfileName;
69+
6570
@Getter
6671
private RunInstancesResult runInstancesResult;
6772

@@ -74,12 +79,14 @@ public AmazonEC2RunInstanceTask() {
7479
@TaskAction
7580
public void runInstance() {
7681
// to enable conventionMappings feature
82+
7783
String ami = getAmi();
7884
String keyName = getKeyName();
7985
List<String> securityGroupIds = getSecurityGroupIds();
8086
String userData = getUserData();
8187
String instanceType = getInstanceType();
8288
String subnetId = getSubnetId();
89+
String iamInstanceProfileName = getIamInstanceProfileName();
8390
List<String> securityGroups = getSecurityGroups();
8491

8592
if (ami == null) {
@@ -97,7 +104,8 @@ public void runInstance() {
97104
.withSecurityGroupIds(securityGroupIds)
98105
.withSecurityGroups(securityGroups)
99106
.withInstanceType(instanceType)
100-
.withSubnetId(subnetId);
107+
.withSubnetId(subnetId)
108+
.withIamInstanceProfile(new IamInstanceProfileSpecification().withName(iamInstanceProfileName));
101109
if (Strings.isNullOrEmpty(this.userData) == false) {
102110
request.setUserData(new String(Base64.getEncoder()
103111
.encode(userData.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8));

0 commit comments

Comments
 (0)