@cloudsnorkel/cdk-github-runners 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/API.md CHANGED
@@ -769,6 +769,217 @@ public readonly repository: IRepository;
769
769
  ---
770
770
 
771
771
 
772
+ ### Ec2Runner <a name="Ec2Runner" id="@cloudsnorkel/cdk-github-runners.Ec2Runner"></a>
773
+
774
+ - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
775
+
776
+ GitHub Actions runner provider using EC2 to execute jobs.
777
+
778
+ This construct is not meant to be used by itself. It should be passed in the providers property for GitHubRunners.
779
+
780
+ #### Initializers <a name="Initializers" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer"></a>
781
+
782
+ ```typescript
783
+ import { Ec2Runner } from '@cloudsnorkel/cdk-github-runners'
784
+
785
+ new Ec2Runner(scope: Construct, id: string, props: Ec2RunnerProps)
786
+ ```
787
+
788
+ | **Name** | **Type** | **Description** |
789
+ | --- | --- | --- |
790
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
791
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
792
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.props">props</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps">Ec2RunnerProps</a></code> | *No description.* |
793
+
794
+ ---
795
+
796
+ ##### `scope`<sup>Required</sup> <a name="scope" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.scope"></a>
797
+
798
+ - *Type:* constructs.Construct
799
+
800
+ ---
801
+
802
+ ##### `id`<sup>Required</sup> <a name="id" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.id"></a>
803
+
804
+ - *Type:* string
805
+
806
+ ---
807
+
808
+ ##### `props`<sup>Required</sup> <a name="props" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.Initializer.parameter.props"></a>
809
+
810
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps">Ec2RunnerProps</a>
811
+
812
+ ---
813
+
814
+ #### Methods <a name="Methods" id="Methods"></a>
815
+
816
+ | **Name** | **Description** |
817
+ | --- | --- |
818
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.toString">toString</a></code> | Returns a string representation of this construct. |
819
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.getStepFunctionTask">getStepFunctionTask</a></code> | Generate step function task(s) to start a new runner. |
820
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.grantStateMachine">grantStateMachine</a></code> | An optional method that modifies the role of the state machine after all the tasks have been generated. |
821
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.status">status</a></code> | Return status of the runner provider to be used in the main status function. |
822
+
823
+ ---
824
+
825
+ ##### `toString` <a name="toString" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.toString"></a>
826
+
827
+ ```typescript
828
+ public toString(): string
829
+ ```
830
+
831
+ Returns a string representation of this construct.
832
+
833
+ ##### `getStepFunctionTask` <a name="getStepFunctionTask" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.getStepFunctionTask"></a>
834
+
835
+ ```typescript
836
+ public getStepFunctionTask(parameters: RunnerRuntimeParameters): IChainable
837
+ ```
838
+
839
+ Generate step function task(s) to start a new runner.
840
+
841
+ Called by GithubRunners and shouldn't be called manually.
842
+
843
+ ###### `parameters`<sup>Required</sup> <a name="parameters" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.getStepFunctionTask.parameter.parameters"></a>
844
+
845
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerRuntimeParameters">RunnerRuntimeParameters</a>
846
+
847
+ workflow job details.
848
+
849
+ ---
850
+
851
+ ##### `grantStateMachine` <a name="grantStateMachine" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.grantStateMachine"></a>
852
+
853
+ ```typescript
854
+ public grantStateMachine(stateMachineRole: IGrantable): void
855
+ ```
856
+
857
+ An optional method that modifies the role of the state machine after all the tasks have been generated.
858
+
859
+ This can be used to add additional policy
860
+ statements to the state machine role that are not automatically added by the task returned from {@link getStepFunctionTask}.
861
+
862
+ ###### `stateMachineRole`<sup>Required</sup> <a name="stateMachineRole" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.grantStateMachine.parameter.stateMachineRole"></a>
863
+
864
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
865
+
866
+ ---
867
+
868
+ ##### `status` <a name="status" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.status"></a>
869
+
870
+ ```typescript
871
+ public status(statusFunctionRole: IGrantable): IRunnerProviderStatus
872
+ ```
873
+
874
+ Return status of the runner provider to be used in the main status function.
875
+
876
+ Also gives the status function any needed permissions to query the Docker image or AMI.
877
+
878
+ ###### `statusFunctionRole`<sup>Required</sup> <a name="statusFunctionRole" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.status.parameter.statusFunctionRole"></a>
879
+
880
+ - *Type:* aws-cdk-lib.aws_iam.IGrantable
881
+
882
+ ---
883
+
884
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
885
+
886
+ | **Name** | **Description** |
887
+ | --- | --- |
888
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
889
+
890
+ ---
891
+
892
+ ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.isConstruct"></a>
893
+
894
+ ```typescript
895
+ import { Ec2Runner } from '@cloudsnorkel/cdk-github-runners'
896
+
897
+ Ec2Runner.isConstruct(x: any)
898
+ ```
899
+
900
+ Checks if `x` is a construct.
901
+
902
+ ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.isConstruct.parameter.x"></a>
903
+
904
+ - *Type:* any
905
+
906
+ Any object.
907
+
908
+ ---
909
+
910
+ #### Properties <a name="Properties" id="Properties"></a>
911
+
912
+ | **Name** | **Type** | **Description** |
913
+ | --- | --- | --- |
914
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
915
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | The network connections associated with this resource. |
916
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.grantPrincipal">grantPrincipal</a></code> | <code>aws-cdk-lib.aws_iam.IPrincipal</code> | Grant principal used to add permissions to the runner role. |
917
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.labels">labels</a></code> | <code>string[]</code> | Labels associated with this provider. |
918
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security group attached to launched instances. |
919
+
920
+ ---
921
+
922
+ ##### `node`<sup>Required</sup> <a name="node" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.node"></a>
923
+
924
+ ```typescript
925
+ public readonly node: Node;
926
+ ```
927
+
928
+ - *Type:* constructs.Node
929
+
930
+ The tree node.
931
+
932
+ ---
933
+
934
+ ##### `connections`<sup>Required</sup> <a name="connections" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.connections"></a>
935
+
936
+ ```typescript
937
+ public readonly connections: Connections;
938
+ ```
939
+
940
+ - *Type:* aws-cdk-lib.aws_ec2.Connections
941
+
942
+ The network connections associated with this resource.
943
+
944
+ ---
945
+
946
+ ##### `grantPrincipal`<sup>Required</sup> <a name="grantPrincipal" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.grantPrincipal"></a>
947
+
948
+ ```typescript
949
+ public readonly grantPrincipal: IPrincipal;
950
+ ```
951
+
952
+ - *Type:* aws-cdk-lib.aws_iam.IPrincipal
953
+
954
+ Grant principal used to add permissions to the runner role.
955
+
956
+ ---
957
+
958
+ ##### `labels`<sup>Required</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.labels"></a>
959
+
960
+ ```typescript
961
+ public readonly labels: string[];
962
+ ```
963
+
964
+ - *Type:* string[]
965
+
966
+ Labels associated with this provider.
967
+
968
+ ---
969
+
970
+ ##### `securityGroup`<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.property.securityGroup"></a>
971
+
972
+ ```typescript
973
+ public readonly securityGroup: ISecurityGroup;
974
+ ```
975
+
976
+ - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
977
+
978
+ Security group attached to launched instances.
979
+
980
+ ---
981
+
982
+
772
983
  ### FargateRunner <a name="FargateRunner" id="@cloudsnorkel/cdk-github-runners.FargateRunner"></a>
773
984
 
774
985
  - *Implements:* <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
@@ -2553,6 +2764,197 @@ VPC to launch the runners in.
2553
2764
 
2554
2765
  ---
2555
2766
 
2767
+ ### Ec2RunnerProps <a name="Ec2RunnerProps" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps"></a>
2768
+
2769
+ Properties for {@link Ec2Runner} construct.
2770
+
2771
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.Initializer"></a>
2772
+
2773
+ ```typescript
2774
+ import { Ec2RunnerProps } from '@cloudsnorkel/cdk-github-runners'
2775
+
2776
+ const ec2RunnerProps: Ec2RunnerProps = { ... }
2777
+ ```
2778
+
2779
+ #### Properties <a name="Properties" id="Properties"></a>
2780
+
2781
+ | **Name** | **Type** | **Description** |
2782
+ | --- | --- | --- |
2783
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.logRetention">logRetention</a></code> | <code>aws-cdk-lib.aws_logs.RetentionDays</code> | The number of days log events are kept in CloudWatch Logs. |
2784
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.amiBuilder">amiBuilder</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a></code> | AMI builder that creates AMIs with GitHub runner pre-configured. |
2785
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.instanceType">instanceType</a></code> | <code>aws-cdk-lib.aws_ec2.InstanceType</code> | Instance type for launched runner instances. |
2786
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.labels">labels</a></code> | <code>string[]</code> | GitHub Actions labels used for this provider. |
2787
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | Security Group to assign to launched runner instances. |
2788
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.spot">spot</a></code> | <code>boolean</code> | Use spot instances to save money. |
2789
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.spotMaxPrice">spotMaxPrice</a></code> | <code>string</code> | Set a maximum price for spot instances. |
2790
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.storageSize">storageSize</a></code> | <code>aws-cdk-lib.Size</code> | Size of volume available for launched runner instances. |
2791
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.subnet">subnet</a></code> | <code>aws-cdk-lib.aws_ec2.ISubnet</code> | Subnet where the runner instances will be launched. |
2792
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.subnetSelection">subnetSelection</a></code> | <code>aws-cdk-lib.aws_ec2.SubnetSelection</code> | Where to place the network interfaces within the VPC. |
2793
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | VPC where runner instances will be launched. |
2794
+
2795
+ ---
2796
+
2797
+ ##### `logRetention`<sup>Optional</sup> <a name="logRetention" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.logRetention"></a>
2798
+
2799
+ ```typescript
2800
+ public readonly logRetention: RetentionDays;
2801
+ ```
2802
+
2803
+ - *Type:* aws-cdk-lib.aws_logs.RetentionDays
2804
+ - *Default:* logs.RetentionDays.ONE_MONTH
2805
+
2806
+ The number of days log events are kept in CloudWatch Logs.
2807
+
2808
+ When updating
2809
+ this property, unsetting it doesn't remove the log retention policy. To
2810
+ remove the retention policy, set the value to `INFINITE`.
2811
+
2812
+ ---
2813
+
2814
+ ##### `amiBuilder`<sup>Optional</sup> <a name="amiBuilder" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.amiBuilder"></a>
2815
+
2816
+ ```typescript
2817
+ public readonly amiBuilder: IAmiBuilder;
2818
+ ```
2819
+
2820
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a>
2821
+ - *Default:* AMI builder for Ubuntu Linux on the same subnet as configured by {@link vpc} and {@link subnetSelection}
2822
+
2823
+ AMI builder that creates AMIs with GitHub runner pre-configured.
2824
+
2825
+ On Linux, a user named `runner` is expected to exist with access to Docker.
2826
+
2827
+ ---
2828
+
2829
+ ##### `instanceType`<sup>Optional</sup> <a name="instanceType" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.instanceType"></a>
2830
+
2831
+ ```typescript
2832
+ public readonly instanceType: InstanceType;
2833
+ ```
2834
+
2835
+ - *Type:* aws-cdk-lib.aws_ec2.InstanceType
2836
+ - *Default:* m5.large
2837
+
2838
+ Instance type for launched runner instances.
2839
+
2840
+ ---
2841
+
2842
+ ##### `labels`<sup>Optional</sup> <a name="labels" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.labels"></a>
2843
+
2844
+ ```typescript
2845
+ public readonly labels: string[];
2846
+ ```
2847
+
2848
+ - *Type:* string[]
2849
+ - *Default:* ['ec2']
2850
+
2851
+ GitHub Actions labels used for this provider.
2852
+
2853
+ These labels are used to identify which provider should spawn a new on-demand runner. Every job sends a webhook with the labels it's looking for
2854
+ based on runs-on. We match the labels from the webhook with the labels specified here. If all the labels specified here are present in the
2855
+ job's labels, this provider will be chosen and spawn a new runner.
2856
+
2857
+ ---
2858
+
2859
+ ##### `securityGroup`<sup>Optional</sup> <a name="securityGroup" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.securityGroup"></a>
2860
+
2861
+ ```typescript
2862
+ public readonly securityGroup: ISecurityGroup;
2863
+ ```
2864
+
2865
+ - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
2866
+ - *Default:* account's default security group
2867
+
2868
+ Security Group to assign to launched runner instances.
2869
+
2870
+ ---
2871
+
2872
+ ##### `spot`<sup>Optional</sup> <a name="spot" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.spot"></a>
2873
+
2874
+ ```typescript
2875
+ public readonly spot: boolean;
2876
+ ```
2877
+
2878
+ - *Type:* boolean
2879
+ - *Default:* false
2880
+
2881
+ Use spot instances to save money.
2882
+
2883
+ Spot instances are cheaper but not always available and can be stopped prematurely.
2884
+
2885
+ ---
2886
+
2887
+ ##### `spotMaxPrice`<sup>Optional</sup> <a name="spotMaxPrice" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.spotMaxPrice"></a>
2888
+
2889
+ ```typescript
2890
+ public readonly spotMaxPrice: string;
2891
+ ```
2892
+
2893
+ - *Type:* string
2894
+ - *Default:* no max price (you will pay current spot price)
2895
+
2896
+ Set a maximum price for spot instances.
2897
+
2898
+ ---
2899
+
2900
+ ##### `storageSize`<sup>Optional</sup> <a name="storageSize" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.storageSize"></a>
2901
+
2902
+ ```typescript
2903
+ public readonly storageSize: Size;
2904
+ ```
2905
+
2906
+ - *Type:* aws-cdk-lib.Size
2907
+ - *Default:* 30GB
2908
+
2909
+ Size of volume available for launched runner instances.
2910
+
2911
+ This modifies the boot volume size and doesn't add any additional volumes.
2912
+
2913
+ ---
2914
+
2915
+ ##### ~~`subnet`~~<sup>Optional</sup> <a name="subnet" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.subnet"></a>
2916
+
2917
+ - *Deprecated:* use {@link vpc} and {@link subnetSelection}
2918
+
2919
+ ```typescript
2920
+ public readonly subnet: ISubnet;
2921
+ ```
2922
+
2923
+ - *Type:* aws-cdk-lib.aws_ec2.ISubnet
2924
+ - *Default:* default subnet of account's default VPC
2925
+
2926
+ Subnet where the runner instances will be launched.
2927
+
2928
+ ---
2929
+
2930
+ ##### `subnetSelection`<sup>Optional</sup> <a name="subnetSelection" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.subnetSelection"></a>
2931
+
2932
+ ```typescript
2933
+ public readonly subnetSelection: SubnetSelection;
2934
+ ```
2935
+
2936
+ - *Type:* aws-cdk-lib.aws_ec2.SubnetSelection
2937
+ - *Default:* default VPC subnet
2938
+
2939
+ Where to place the network interfaces within the VPC.
2940
+
2941
+ Only the first matched subnet will be used.
2942
+
2943
+ ---
2944
+
2945
+ ##### `vpc`<sup>Optional</sup> <a name="vpc" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProps.property.vpc"></a>
2946
+
2947
+ ```typescript
2948
+ public readonly vpc: IVpc;
2949
+ ```
2950
+
2951
+ - *Type:* aws-cdk-lib.aws_ec2.IVpc
2952
+ - *Default:* default account VPC
2953
+
2954
+ VPC where runner instances will be launched.
2955
+
2956
+ ---
2957
+
2556
2958
  ### FargateRunnerProps <a name="FargateRunnerProps" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProps"></a>
2557
2959
 
2558
2960
  Properties for FargateRunner.
@@ -3260,6 +3662,90 @@ VPC to launch the runners in.
3260
3662
 
3261
3663
  ---
3262
3664
 
3665
+ ### RunnerAmi <a name="RunnerAmi" id="@cloudsnorkel/cdk-github-runners.RunnerAmi"></a>
3666
+
3667
+ Description of a AMI built by {@link IAmiBuilder}.
3668
+
3669
+ #### Initializer <a name="Initializer" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.Initializer"></a>
3670
+
3671
+ ```typescript
3672
+ import { RunnerAmi } from '@cloudsnorkel/cdk-github-runners'
3673
+
3674
+ const runnerAmi: RunnerAmi = { ... }
3675
+ ```
3676
+
3677
+ #### Properties <a name="Properties" id="Properties"></a>
3678
+
3679
+ | **Name** | **Type** | **Description** |
3680
+ | --- | --- | --- |
3681
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.architecture">architecture</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a></code> | Architecture of the image. |
3682
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.launchTemplate">launchTemplate</a></code> | <code>aws-cdk-lib.aws_ec2.ILaunchTemplate</code> | Launch template pointing to the latest AMI. |
3683
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.os">os</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | OS type of the image. |
3684
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.runnerVersion">runnerVersion</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a></code> | Installed runner version. |
3685
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerAmi.property.logGroup">logGroup</a></code> | <code>aws-cdk-lib.aws_logs.LogGroup</code> | Log group where image builds are logged. |
3686
+
3687
+ ---
3688
+
3689
+ ##### `architecture`<sup>Required</sup> <a name="architecture" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.architecture"></a>
3690
+
3691
+ ```typescript
3692
+ public readonly architecture: Architecture;
3693
+ ```
3694
+
3695
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Architecture">Architecture</a>
3696
+
3697
+ Architecture of the image.
3698
+
3699
+ ---
3700
+
3701
+ ##### `launchTemplate`<sup>Required</sup> <a name="launchTemplate" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.launchTemplate"></a>
3702
+
3703
+ ```typescript
3704
+ public readonly launchTemplate: ILaunchTemplate;
3705
+ ```
3706
+
3707
+ - *Type:* aws-cdk-lib.aws_ec2.ILaunchTemplate
3708
+
3709
+ Launch template pointing to the latest AMI.
3710
+
3711
+ ---
3712
+
3713
+ ##### `os`<sup>Required</sup> <a name="os" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.os"></a>
3714
+
3715
+ ```typescript
3716
+ public readonly os: Os;
3717
+ ```
3718
+
3719
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
3720
+
3721
+ OS type of the image.
3722
+
3723
+ ---
3724
+
3725
+ ##### `runnerVersion`<sup>Required</sup> <a name="runnerVersion" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.runnerVersion"></a>
3726
+
3727
+ ```typescript
3728
+ public readonly runnerVersion: RunnerVersion;
3729
+ ```
3730
+
3731
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.RunnerVersion">RunnerVersion</a>
3732
+
3733
+ Installed runner version.
3734
+
3735
+ ---
3736
+
3737
+ ##### `logGroup`<sup>Optional</sup> <a name="logGroup" id="@cloudsnorkel/cdk-github-runners.RunnerAmi.property.logGroup"></a>
3738
+
3739
+ ```typescript
3740
+ public readonly logGroup: LogGroup;
3741
+ ```
3742
+
3743
+ - *Type:* aws-cdk-lib.aws_logs.LogGroup
3744
+
3745
+ Log group where image builds are logged.
3746
+
3747
+ ---
3748
+
3263
3749
  ### RunnerImage <a name="RunnerImage" id="@cloudsnorkel/cdk-github-runners.RunnerImage"></a>
3264
3750
 
3265
3751
  Description of a Docker image built by {@link IImageBuilder}.
@@ -4317,6 +4803,35 @@ WindowsComponents.githubRunner(scope: Construct, id: string, runnerVersion: Runn
4317
4803
 
4318
4804
  ## Protocols <a name="Protocols" id="Protocols"></a>
4319
4805
 
4806
+ ### IAmiBuilder <a name="IAmiBuilder" id="@cloudsnorkel/cdk-github-runners.IAmiBuilder"></a>
4807
+
4808
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder">IAmiBuilder</a>
4809
+
4810
+ Interface for constructs that build an AMI that can be used in {@link IRunnerProvider}.
4811
+
4812
+ Anything that ends up with a launch template pointing to an AMI that runs GitHub self-hosted runners can be used. A simple implementation could even point to an existing AMI and nothing else.
4813
+
4814
+ The AMI can be further updated over time manually or using a schedule as long as it is always written to the same launch template.
4815
+
4816
+ #### Methods <a name="Methods" id="Methods"></a>
4817
+
4818
+ | **Name** | **Description** |
4819
+ | --- | --- |
4820
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.IAmiBuilder.bind">bind</a></code> | Finalize and return all required information about the AMI built by this builder. |
4821
+
4822
+ ---
4823
+
4824
+ ##### `bind` <a name="bind" id="@cloudsnorkel/cdk-github-runners.IAmiBuilder.bind"></a>
4825
+
4826
+ ```typescript
4827
+ public bind(): RunnerAmi
4828
+ ```
4829
+
4830
+ Finalize and return all required information about the AMI built by this builder.
4831
+
4832
+ This method can be called multiple times if the image is bound to multiple providers. Make sure you cache the image when implementing or return an error if this builder doesn't support reusing images.
4833
+
4834
+
4320
4835
  ### IImageBuilder <a name="IImageBuilder" id="@cloudsnorkel/cdk-github-runners.IImageBuilder"></a>
4321
4836
 
4322
4837
  - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder">CodeBuildImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.ContainerImageBuilder">ContainerImageBuilder</a>, <a href="#@cloudsnorkel/cdk-github-runners.IImageBuilder">IImageBuilder</a>
@@ -4445,7 +4960,7 @@ Log group name for the image builder where history of image builds can be analyz
4445
4960
 
4446
4961
  - *Extends:* aws-cdk-lib.aws_ec2.IConnectable, aws-cdk-lib.aws_iam.IGrantable
4447
4962
 
4448
- - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner">CodeBuildRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.FargateRunner">FargateRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner">LambdaRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
4963
+ - *Implemented By:* <a href="#@cloudsnorkel/cdk-github-runners.CodeBuildRunner">CodeBuildRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.Ec2Runner">Ec2Runner</a>, <a href="#@cloudsnorkel/cdk-github-runners.FargateRunner">FargateRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.LambdaRunner">LambdaRunner</a>, <a href="#@cloudsnorkel/cdk-github-runners.IRunnerProvider">IRunnerProvider</a>
4449
4964
 
4450
4965
  Interface for all runner providers.
4451
4966
 
package/lib/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  export { Secrets } from './secrets';
2
2
  export { GitHubRunners, GitHubRunnersProps } from './runner';
3
3
  export { CodeBuildRunner, CodeBuildRunnerProps } from './providers/codebuild';
4
+ export { Ec2Runner, Ec2RunnerProps } from './providers/ec2';
4
5
  export { LambdaRunner, LambdaRunnerProps } from './providers/lambda';
5
6
  export { FargateRunner, FargateRunnerProps } from './providers/fargate';
6
- export { IRunnerProvider, RunnerProviderProps, RunnerVersion, RunnerRuntimeParameters, RunnerImage, IImageBuilder, IRunnerProviderStatus, IRunnerImageStatus, IRunnerAmiStatus, Architecture, Os } from './providers/common';
7
+ export { IRunnerProvider, RunnerProviderProps, RunnerVersion, RunnerRuntimeParameters, RunnerAmi, RunnerImage, IAmiBuilder, IImageBuilder, IRunnerProviderStatus, IRunnerImageStatus, IRunnerAmiStatus, Architecture, Os } from './providers/common';
7
8
  export { CodeBuildImageBuilder, CodeBuildImageBuilderProps } from './providers/image-builders/codebuild';
8
9
  export { ImageBuilderComponent, ImageBuilderComponentProperties, ImageBuilderAsset } from './providers/image-builders/common';
9
10
  export { ContainerImageBuilder, ContainerImageBuilderProps } from './providers/image-builders/container';
package/lib/index.js CHANGED
@@ -6,6 +6,8 @@ var runner_1 = require("./runner");
6
6
  Object.defineProperty(exports, "GitHubRunners", { enumerable: true, get: function () { return runner_1.GitHubRunners; } });
7
7
  var codebuild_1 = require("./providers/codebuild");
8
8
  Object.defineProperty(exports, "CodeBuildRunner", { enumerable: true, get: function () { return codebuild_1.CodeBuildRunner; } });
9
+ var ec2_1 = require("./providers/ec2");
10
+ Object.defineProperty(exports, "Ec2Runner", { enumerable: true, get: function () { return ec2_1.Ec2Runner; } });
9
11
  var lambda_1 = require("./providers/lambda");
10
12
  Object.defineProperty(exports, "LambdaRunner", { enumerable: true, get: function () { return lambda_1.LambdaRunner; } });
11
13
  var fargate_1 = require("./providers/fargate");
@@ -26,4 +28,4 @@ var linux_components_1 = require("./providers/image-builders/linux-components");
26
28
  Object.defineProperty(exports, "LinuxUbuntuComponents", { enumerable: true, get: function () { return linux_components_1.LinuxUbuntuComponents; } });
27
29
  var static_1 = require("./providers/image-builders/static");
28
30
  Object.defineProperty(exports, "StaticRunnerImage", { enumerable: true, get: function () { return static_1.StaticRunnerImage; } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLG1DQUE2RDtBQUFwRCx1R0FBQSxhQUFhLE9BQUE7QUFDdEIsbURBQThFO0FBQXJFLDRHQUFBLGVBQWUsT0FBQTtBQUN4Qiw2Q0FBcUU7QUFBNUQsc0dBQUEsWUFBWSxPQUFBO0FBQ3JCLCtDQUF3RTtBQUEvRCx3R0FBQSxhQUFhLE9BQUE7QUFDdEIsNkNBQTZOO0FBQTlLLHVHQUFBLGFBQWEsT0FBQTtBQUFvSCxzR0FBQSxZQUFZLE9BQUE7QUFBRSw0RkFBQSxFQUFFLE9BQUE7QUFDaE0sa0VBQXlHO0FBQWhHLGtIQUFBLHFCQUFxQixPQUFBO0FBQzlCLDREQUE4SDtBQUFySCwrR0FBQSxxQkFBcUIsT0FBQTtBQUM5QixrRUFBeUc7QUFBaEcsa0hBQUEscUJBQXFCLE9BQUE7QUFDOUIsb0ZBQWtGO0FBQXpFLHVIQUFBLGlCQUFpQixPQUFBO0FBQzFCLGdGQUFvRjtBQUEzRSx5SEFBQSxxQkFBcUIsT0FBQTtBQUM5Qiw0REFBc0U7QUFBN0QsMkdBQUEsaUJBQWlCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTZWNyZXRzIH0gZnJvbSAnLi9zZWNyZXRzJztcbmV4cG9ydCB7IEdpdEh1YlJ1bm5lcnMsIEdpdEh1YlJ1bm5lcnNQcm9wcyB9IGZyb20gJy4vcnVubmVyJztcbmV4cG9ydCB7IENvZGVCdWlsZFJ1bm5lciwgQ29kZUJ1aWxkUnVubmVyUHJvcHMgfSBmcm9tICcuL3Byb3ZpZGVycy9jb2RlYnVpbGQnO1xuZXhwb3J0IHsgTGFtYmRhUnVubmVyLCBMYW1iZGFSdW5uZXJQcm9wcyB9IGZyb20gJy4vcHJvdmlkZXJzL2xhbWJkYSc7XG5leHBvcnQgeyBGYXJnYXRlUnVubmVyLCBGYXJnYXRlUnVubmVyUHJvcHMgfSBmcm9tICcuL3Byb3ZpZGVycy9mYXJnYXRlJztcbmV4cG9ydCB7IElSdW5uZXJQcm92aWRlciwgUnVubmVyUHJvdmlkZXJQcm9wcywgUnVubmVyVmVyc2lvbiwgUnVubmVyUnVudGltZVBhcmFtZXRlcnMsIFJ1bm5lckltYWdlLCBJSW1hZ2VCdWlsZGVyLCBJUnVubmVyUHJvdmlkZXJTdGF0dXMsIElSdW5uZXJJbWFnZVN0YXR1cywgSVJ1bm5lckFtaVN0YXR1cywgQXJjaGl0ZWN0dXJlLCBPcyB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbW1vbic7XG5leHBvcnQgeyBDb2RlQnVpbGRJbWFnZUJ1aWxkZXIsIENvZGVCdWlsZEltYWdlQnVpbGRlclByb3BzIH0gZnJvbSAnLi9wcm92aWRlcnMvaW1hZ2UtYnVpbGRlcnMvY29kZWJ1aWxkJztcbmV4cG9ydCB7IEltYWdlQnVpbGRlckNvbXBvbmVudCwgSW1hZ2VCdWlsZGVyQ29tcG9uZW50UHJvcGVydGllcywgSW1hZ2VCdWlsZGVyQXNzZXQgfSBmcm9tICcuL3Byb3ZpZGVycy9pbWFnZS1idWlsZGVycy9jb21tb24nO1xuZXhwb3J0IHsgQ29udGFpbmVySW1hZ2VCdWlsZGVyLCBDb250YWluZXJJbWFnZUJ1aWxkZXJQcm9wcyB9IGZyb20gJy4vcHJvdmlkZXJzL2ltYWdlLWJ1aWxkZXJzL2NvbnRhaW5lcic7XG5leHBvcnQgeyBXaW5kb3dzQ29tcG9uZW50cyB9IGZyb20gJy4vcHJvdmlkZXJzL2ltYWdlLWJ1aWxkZXJzL3dpbmRvd3MtY29tcG9uZW50cyc7XG5leHBvcnQgeyBMaW51eFVidW50dUNvbXBvbmVudHMgfSBmcm9tICcuL3Byb3ZpZGVycy9pbWFnZS1idWlsZGVycy9saW51eC1jb21wb25lbnRzJztcbmV4cG9ydCB7IFN0YXRpY1J1bm5lckltYWdlIH0gZnJvbSAnLi9wcm92aWRlcnMvaW1hZ2UtYnVpbGRlcnMvc3RhdGljJztcbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLG1DQUE2RDtBQUFwRCx1R0FBQSxhQUFhLE9BQUE7QUFDdEIsbURBQThFO0FBQXJFLDRHQUFBLGVBQWUsT0FBQTtBQUN4Qix1Q0FBNEQ7QUFBbkQsZ0dBQUEsU0FBUyxPQUFBO0FBQ2xCLDZDQUFxRTtBQUE1RCxzR0FBQSxZQUFZLE9BQUE7QUFDckIsK0NBQXdFO0FBQS9ELHdHQUFBLGFBQWEsT0FBQTtBQUN0Qiw2Q0FBcVA7QUFBdE0sdUdBQUEsYUFBYSxPQUFBO0FBQTRJLHNHQUFBLFlBQVksT0FBQTtBQUFFLDRGQUFBLEVBQUUsT0FBQTtBQUN4TixrRUFBeUc7QUFBaEcsa0hBQUEscUJBQXFCLE9BQUE7QUFDOUIsNERBQThIO0FBQXJILCtHQUFBLHFCQUFxQixPQUFBO0FBQzlCLGtFQUF5RztBQUFoRyxrSEFBQSxxQkFBcUIsT0FBQTtBQUM5QixvRkFBa0Y7QUFBekUsdUhBQUEsaUJBQWlCLE9BQUE7QUFDMUIsZ0ZBQW9GO0FBQTNFLHlIQUFBLHFCQUFxQixPQUFBO0FBQzlCLDREQUFzRTtBQUE3RCwyR0FBQSxpQkFBaUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNlY3JldHMgfSBmcm9tICcuL3NlY3JldHMnO1xuZXhwb3J0IHsgR2l0SHViUnVubmVycywgR2l0SHViUnVubmVyc1Byb3BzIH0gZnJvbSAnLi9ydW5uZXInO1xuZXhwb3J0IHsgQ29kZUJ1aWxkUnVubmVyLCBDb2RlQnVpbGRSdW5uZXJQcm9wcyB9IGZyb20gJy4vcHJvdmlkZXJzL2NvZGVidWlsZCc7XG5leHBvcnQgeyBFYzJSdW5uZXIsIEVjMlJ1bm5lclByb3BzIH0gZnJvbSAnLi9wcm92aWRlcnMvZWMyJztcbmV4cG9ydCB7IExhbWJkYVJ1bm5lciwgTGFtYmRhUnVubmVyUHJvcHMgfSBmcm9tICcuL3Byb3ZpZGVycy9sYW1iZGEnO1xuZXhwb3J0IHsgRmFyZ2F0ZVJ1bm5lciwgRmFyZ2F0ZVJ1bm5lclByb3BzIH0gZnJvbSAnLi9wcm92aWRlcnMvZmFyZ2F0ZSc7XG5leHBvcnQgeyBJUnVubmVyUHJvdmlkZXIsIFJ1bm5lclByb3ZpZGVyUHJvcHMsIFJ1bm5lclZlcnNpb24sIFJ1bm5lclJ1bnRpbWVQYXJhbWV0ZXJzLCBSdW5uZXJBbWksIFJ1bm5lckltYWdlLCBJQW1pQnVpbGRlciwgSUltYWdlQnVpbGRlciwgSVJ1bm5lclByb3ZpZGVyU3RhdHVzLCBJUnVubmVySW1hZ2VTdGF0dXMsIElSdW5uZXJBbWlTdGF0dXMsIEFyY2hpdGVjdHVyZSwgT3MgfSBmcm9tICcuL3Byb3ZpZGVycy9jb21tb24nO1xuZXhwb3J0IHsgQ29kZUJ1aWxkSW1hZ2VCdWlsZGVyLCBDb2RlQnVpbGRJbWFnZUJ1aWxkZXJQcm9wcyB9IGZyb20gJy4vcHJvdmlkZXJzL2ltYWdlLWJ1aWxkZXJzL2NvZGVidWlsZCc7XG5leHBvcnQgeyBJbWFnZUJ1aWxkZXJDb21wb25lbnQsIEltYWdlQnVpbGRlckNvbXBvbmVudFByb3BlcnRpZXMsIEltYWdlQnVpbGRlckFzc2V0IH0gZnJvbSAnLi9wcm92aWRlcnMvaW1hZ2UtYnVpbGRlcnMvY29tbW9uJztcbmV4cG9ydCB7IENvbnRhaW5lckltYWdlQnVpbGRlciwgQ29udGFpbmVySW1hZ2VCdWlsZGVyUHJvcHMgfSBmcm9tICcuL3Byb3ZpZGVycy9pbWFnZS1idWlsZGVycy9jb250YWluZXInO1xuZXhwb3J0IHsgV2luZG93c0NvbXBvbmVudHMgfSBmcm9tICcuL3Byb3ZpZGVycy9pbWFnZS1idWlsZGVycy93aW5kb3dzLWNvbXBvbmVudHMnO1xuZXhwb3J0IHsgTGludXhVYnVudHVDb21wb25lbnRzIH0gZnJvbSAnLi9wcm92aWRlcnMvaW1hZ2UtYnVpbGRlcnMvbGludXgtY29tcG9uZW50cyc7XG5leHBvcnQgeyBTdGF0aWNSdW5uZXJJbWFnZSB9IGZyb20gJy4vcHJvdmlkZXJzL2ltYWdlLWJ1aWxkZXJzL3N0YXRpYyc7XG4iXX0=
@@ -173,7 +173,7 @@ class CodeBuildRunner extends common_1.BaseProvider {
173
173
  }
174
174
  exports.CodeBuildRunner = CodeBuildRunner;
175
175
  _a = JSII_RTTI_SYMBOL_1;
176
- CodeBuildRunner[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.CodeBuildRunner", version: "0.6.0" };
176
+ CodeBuildRunner[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.CodeBuildRunner", version: "0.6.2" };
177
177
  /**
178
178
  * Path to Dockerfile for Linux x64 with all the requirements for CodeBuild runner. Use this Dockerfile unless you need to customize it further than allowed by hooks.
179
179
  *
@@ -39,7 +39,7 @@ class RunnerVersion {
39
39
  }
40
40
  exports.RunnerVersion = RunnerVersion;
41
41
  _a = JSII_RTTI_SYMBOL_1;
42
- RunnerVersion[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.RunnerVersion", version: "0.6.0" };
42
+ RunnerVersion[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.RunnerVersion", version: "0.6.2" };
43
43
  /**
44
44
  * CPU architecture enum for an image.
45
45
  */
@@ -88,7 +88,7 @@ class Architecture {
88
88
  }
89
89
  exports.Architecture = Architecture;
90
90
  _b = JSII_RTTI_SYMBOL_1;
91
- Architecture[_b] = { fqn: "@cloudsnorkel/cdk-github-runners.Architecture", version: "0.6.0" };
91
+ Architecture[_b] = { fqn: "@cloudsnorkel/cdk-github-runners.Architecture", version: "0.6.2" };
92
92
  /**
93
93
  * ARM64
94
94
  */
@@ -131,7 +131,7 @@ class Os {
131
131
  }
132
132
  exports.Os = Os;
133
133
  _c = JSII_RTTI_SYMBOL_1;
134
- Os[_c] = { fqn: "@cloudsnorkel/cdk-github-runners.Os", version: "0.6.0" };
134
+ Os[_c] = { fqn: "@cloudsnorkel/cdk-github-runners.Os", version: "0.6.2" };
135
135
  /**
136
136
  * Linux
137
137
  */
@@ -9,7 +9,7 @@ export interface Ec2RunnerProps extends RunnerProviderProps {
9
9
  /**
10
10
  * AMI builder that creates AMIs with GitHub runner pre-configured. On Linux, a user named `runner` is expected to exist with access to Docker.
11
11
  *
12
- * @default AMI builder for Ubuntu Linux
12
+ * @default AMI builder for Ubuntu Linux on the same subnet as configured by {@link vpc} and {@link subnetSelection}
13
13
  */
14
14
  readonly amiBuilder?: IAmiBuilder;
15
15
  /**
@@ -44,8 +44,22 @@ export interface Ec2RunnerProps extends RunnerProviderProps {
44
44
  * Subnet where the runner instances will be launched.
45
45
  *
46
46
  * @default default subnet of account's default VPC
47
+ *
48
+ * @deprecated use {@link vpc} and {@link subnetSelection}
47
49
  */
48
50
  readonly subnet?: ec2.ISubnet;
51
+ /**
52
+ * VPC where runner instances will be launched.
53
+ *
54
+ * @default default account VPC
55
+ */
56
+ readonly vpc?: ec2.IVpc;
57
+ /**
58
+ * Where to place the network interfaces within the VPC. Only the first matched subnet will be used.
59
+ *
60
+ * @default default VPC subnet
61
+ */
62
+ readonly subnetSelection?: ec2.SubnetSelection;
49
63
  /**
50
64
  * Use spot instances to save money. Spot instances are cheaper but not always available and can be stopped prematurely.
51
65
  *
@@ -69,10 +83,6 @@ export declare class Ec2Runner extends BaseProvider implements IRunnerProvider {
69
83
  * Labels associated with this provider.
70
84
  */
71
85
  readonly labels: string[];
72
- /**
73
- * VPC subnet used for hosting launched instances.
74
- */
75
- readonly subnet?: ec2.ISubnet;
76
86
  /**
77
87
  * Security group attached to launched instances.
78
88
  */
@@ -88,6 +98,7 @@ export declare class Ec2Runner extends BaseProvider implements IRunnerProvider {
88
98
  private readonly storageSize;
89
99
  private readonly spot;
90
100
  private readonly spotMaxPrice;
101
+ private readonly subnet?;
91
102
  constructor(scope: Construct, id: string, props: Ec2RunnerProps);
92
103
  /**
93
104
  * Generate step function task(s) to start a new runner.