Skip to content

Commit 1b8e69f

Browse files
authored
chore(preflight): add AWS VPC quota check for Agentless (#1729)
1 parent 0050d42 commit 1b8e69f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+16610
-47
lines changed

go.mod

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
github.com/Masterminds/semver v1.5.0
1414
github.com/Netflix/go-expect v0.0.0-20200312175327-da48e75238e2
1515
github.com/abiosoft/colima v0.5.4
16-
github.com/aws/aws-sdk-go-v2 v1.36.3
16+
github.com/aws/aws-sdk-go-v2 v1.36.5
1717
github.com/aws/aws-sdk-go-v2/config v1.29.14
1818
github.com/aws/aws-sdk-go-v2/service/ec2 v1.222.0
1919
github.com/aws/aws-sdk-go-v2/service/ec2instanceconnect v1.28.2
@@ -61,9 +61,10 @@ require (
6161
github.com/aws/aws-sdk-go-v2/service/eks v1.64.0
6262
github.com/aws/aws-sdk-go-v2/service/iam v1.42.0
6363
github.com/aws/aws-sdk-go-v2/service/organizations v1.38.3
64+
github.com/aws/aws-sdk-go-v2/service/servicequotas v1.28.3
6465
github.com/aws/aws-sdk-go-v2/service/ssm v1.59.0
6566
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19
66-
github.com/aws/smithy-go v1.22.3
67+
github.com/aws/smithy-go v1.22.4
6768
github.com/gabriel-vasile/mimetype v1.4.8
6869
github.com/go-git/go-git/v5 v5.13.0
6970
github.com/go-resty/resty/v2 v2.11.0
@@ -94,8 +95,8 @@ require (
9495
github.com/agext/levenshtein v1.2.1 // indirect
9596
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
9697
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
97-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
98-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
98+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect
99+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect
99100
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
100101
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
101102
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect

go.sum

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,18 +70,18 @@ github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6
7070
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
7171
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
7272
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
73-
github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM=
74-
github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg=
73+
github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0=
74+
github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0=
7575
github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM=
7676
github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g=
7777
github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM=
7878
github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ=
7979
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw=
8080
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M=
81-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q=
82-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY=
83-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0=
84-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q=
81+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s=
82+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo=
83+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM=
84+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8=
8585
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
8686
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
8787
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.48.4 h1:pQpinmWv9jEisDR6/DccOf2cXdAf/CAwQ39nfJfJDlE=
@@ -100,6 +100,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2
100100
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY=
101101
github.com/aws/aws-sdk-go-v2/service/organizations v1.38.3 h1:rAUHsUFmux71j/4wQ5nUHsXyJxSMRgMlDnmFfahDhSk=
102102
github.com/aws/aws-sdk-go-v2/service/organizations v1.38.3/go.mod h1:iYC/SPpI4WveHr4ZzPFWTmXRODyJub5Aif75W7Ll+yM=
103+
github.com/aws/aws-sdk-go-v2/service/servicequotas v1.28.3 h1:FDzX6WOfsz45IVvbP5O987/hdzjciDPek+AO9BOfDXk=
104+
github.com/aws/aws-sdk-go-v2/service/servicequotas v1.28.3/go.mod h1:y10lwaaUXvDg/W5tn2WN5WQEMw/2T4tg7AW5jISZVw0=
103105
github.com/aws/aws-sdk-go-v2/service/ssm v1.59.0 h1:KWArCwA/WkuHWKfygkNz0B6YS6OvdgoJUaJHX0Qby1s=
104106
github.com/aws/aws-sdk-go-v2/service/ssm v1.59.0/go.mod h1:PUWUl5MDiYNQkUHN9Pyd9kgtA/YhbxnSnHP+yQqzrM8=
105107
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8=
@@ -108,8 +110,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0c
108110
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs=
109111
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY=
110112
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4=
111-
github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k=
112-
github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
113+
github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
114+
github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
113115
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
114116
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
115117
github.com/briandowns/spinner v1.17.0 h1:7HjHI07APcVZBT71J2UvJl3CAvYCnqqCrxW5gXSDOVA=

lwpreflight/aws/aws.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ func New(params Params) (*Preflight, error) {
7777

7878
if params.Agentless {
7979
integrationTypes = append(integrationTypes, Agentless)
80+
tasks = append(tasks, CheckVPCQuota)
8081
}
8182
if params.Config {
8283
integrationTypes = append(integrationTypes, Config)

lwpreflight/aws/constants.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ var RequiredPermissions = map[IntegrationType][]string{
115115
"secretsmanager:GetResourcePolicy",
116116
"secretsmanager:GetSecretValue",
117117
"secretsmanager:PutSecretValue",
118+
"servicequotas:GetServiceQuota",
118119
},
119120
Config: {
120121
"cloudformation:CreateStack",

lwpreflight/aws/constraint.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package aws
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"github.com/aws/aws-sdk-go-v2/aws"
8+
"github.com/aws/aws-sdk-go-v2/service/ec2"
9+
"github.com/aws/aws-sdk-go-v2/service/servicequotas"
10+
)
11+
12+
// For AWS Agentless only
13+
func CheckVPCQuota(p *Preflight) error {
14+
p.verboseWriter.Write(fmt.Sprintf("Discovering VPC quota for region %s", p.awsConfig.Region))
15+
16+
ctx := context.Background()
17+
18+
quotaSvc := servicequotas.NewFromConfig(p.awsConfig)
19+
quotaOutput, err := quotaSvc.GetServiceQuota(ctx, &servicequotas.GetServiceQuotaInput{
20+
QuotaCode: aws.String("L-F678F1CE"), // Quota code for VPCs per Region
21+
ServiceCode: aws.String("vpc"),
22+
})
23+
if err != nil {
24+
return err
25+
}
26+
27+
ec2Svc := ec2.NewFromConfig(p.awsConfig)
28+
vpcsOutput, err := ec2Svc.DescribeVpcs(ctx, nil)
29+
if err != nil {
30+
return err
31+
}
32+
33+
if len(vpcsOutput.Vpcs) >= int(*quotaOutput.Quota.Value) {
34+
p.errors[Agentless] = append(
35+
p.errors[Agentless],
36+
fmt.Sprintf("VPC Quota limit exceeded in region %s", p.awsConfig.Region),
37+
)
38+
}
39+
40+
return nil
41+
}

vendor/github.com/AzureAD/microsoft-authentication-library-for-go/LICENSE

Lines changed: 21 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/stream.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)