28
28
import org .gradle .api .tasks .TaskAction ;
29
29
30
30
import com .amazonaws .services .ec2 .AmazonEC2 ;
31
+ import com .amazonaws .services .ec2 .model .IamInstanceProfileSpecification ;
31
32
import com .amazonaws .services .ec2 .model .RunInstancesRequest ;
32
33
import com .amazonaws .services .ec2 .model .RunInstancesResult ;
33
34
import com .google .common .base .Strings ;
@@ -62,6 +63,10 @@ public class AmazonEC2RunInstanceTask extends ConventionTask {
62
63
@ Setter
63
64
private String subnetId ;
64
65
66
+ @ Getter
67
+ @ Setter
68
+ private String iamInstanceProfileName ;
69
+
65
70
@ Getter
66
71
private RunInstancesResult runInstancesResult ;
67
72
@@ -74,12 +79,14 @@ public AmazonEC2RunInstanceTask() {
74
79
@ TaskAction
75
80
public void runInstance () {
76
81
// to enable conventionMappings feature
82
+
77
83
String ami = getAmi ();
78
84
String keyName = getKeyName ();
79
85
List <String > securityGroupIds = getSecurityGroupIds ();
80
86
String userData = getUserData ();
81
87
String instanceType = getInstanceType ();
82
88
String subnetId = getSubnetId ();
89
+ String iamInstanceProfileName = getIamInstanceProfileName ();
83
90
List <String > securityGroups = getSecurityGroups ();
84
91
85
92
if (ami == null ) {
@@ -97,7 +104,8 @@ public void runInstance() {
97
104
.withSecurityGroupIds (securityGroupIds )
98
105
.withSecurityGroups (securityGroups )
99
106
.withInstanceType (instanceType )
100
- .withSubnetId (subnetId );
107
+ .withSubnetId (subnetId )
108
+ .withIamInstanceProfile (new IamInstanceProfileSpecification ().withName (iamInstanceProfileName ));
101
109
if (Strings .isNullOrEmpty (this .userData ) == false ) {
102
110
request .setUserData (new String (Base64 .getEncoder ()
103
111
.encode (userData .getBytes (StandardCharsets .UTF_8 )), StandardCharsets .UTF_8 ));
0 commit comments