Skip to content

Commit b7c452d

Browse files
Extend aws package (#54)
* Added route53 zone * Test with 1.5.7 * Test changes * Test changes * Test changes * Test changes * Test changes * Test changes * Test changes * Test changes * Test changes * Test changes * Added rds helpers * Added backup API * Added ec2 get instances method * Add cloudtrail * Added tests * Added tests * Added efs * Added msk * Added ses * Added test account ID to reference * Update test/fixtures/atmos/components/terraform/terraform-basic-configuration/main.tf Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update pkg/aws/ses.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update pkg/atmos/component-helper/atmos_options.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update pkg/aws/route53.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Added rds * Added rds * Added rds * Added rds * Added rds * Added rds --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1 parent 2fd3da0 commit b7c452d

File tree

15 files changed

+340
-1
lines changed

15 files changed

+340
-1
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ jobs:
3535
uses: cloudposse/github-action-setup-atmos@v2
3636
with:
3737
install-wrapper: false
38+
# TODO: Remove this once the issue is fixed https://github.com/cloudposse/atmos/issues/1064
39+
atmos-version: 1.161.0
3840

3941
- name: Get dependencies
4042
run: go mod download

go.mod

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,27 +36,33 @@ require (
3636
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32 // indirect
3737
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 // indirect
3838
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
39-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 // indirect
39+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 // indirect
4040
github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 // indirect
4141
github.com/aws/aws-sdk-go-v2/service/amplify v1.28.8 // indirect
4242
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 // indirect
43+
github.com/aws/aws-sdk-go-v2/service/backup v1.40.10 // indirect
44+
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.47.4 // indirect
4345
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 // indirect
46+
github.com/aws/aws-sdk-go-v2/service/docdb v1.40.10 // indirect
4447
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 // indirect
4548
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 // indirect
4649
github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 // indirect
50+
github.com/aws/aws-sdk-go-v2/service/efs v1.34.11 // indirect
4751
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.12 // indirect
4852
github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 // indirect
4953
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect
5054
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 // indirect
5155
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5 // indirect
5256
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 // indirect
5357
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 // indirect
58+
github.com/aws/aws-sdk-go-v2/service/kafka v1.38.16 // indirect
5459
github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 // indirect
5560
github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 // indirect
5661
github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 // indirect
5762
github.com/aws/aws-sdk-go-v2/service/route53 v1.46.2 // indirect
5863
github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 // indirect
5964
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 // indirect
65+
github.com/aws/aws-sdk-go-v2/service/sesv2 v1.41.5 // indirect
6066
github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 // indirect
6167
github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 // indirect
6268
github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 // indirect

go.sum

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,22 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvK
3030
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
3131
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 h1:JX70yGKLj25+lMC5Yyh8wBtvB01GDilyRuJvXJ4piD0=
3232
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24/go.mod h1:+Ln60j9SUTD0LEwnhEB0Xhg61DHqplBrbZpLgyjoEHg=
33+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 h1:OIHj/nAhVzIXGzbAE+4XmZ8FPvro3THr6NlqErJc3wY=
34+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32/go.mod h1:LiBEsDo34OJXqdDlRGsilhlIiXR7DL+6Cx2f4p1EgzI=
3335
github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 h1:fDg0RlN30Xf/yYzEUL/WXqhmgFsjVb/I3230oCfyI5w=
3436
github.com/aws/aws-sdk-go-v2/service/acm v1.30.6/go.mod h1:zRR6jE3v/TcbfO8C2P+H0Z+kShiKKVaVyoIl8NQRjyg=
3537
github.com/aws/aws-sdk-go-v2/service/amplify v1.28.8 h1:wg7HSb3XnRAcom2v3nqxyAhmySVwKkHIkaUiEIbV6vc=
3638
github.com/aws/aws-sdk-go-v2/service/amplify v1.28.8/go.mod h1:d0nnjwZRjEV9f6I8PEbBv0o3xjzVNLvlOYVxQs+FeEw=
3739
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 h1:1KzQVZi7OTixxaVJ8fWaJAUBjme+iQ3zBOCZhE4RgxQ=
3840
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU=
41+
github.com/aws/aws-sdk-go-v2/service/backup v1.40.10 h1:/qkt3SKl7VUI48CV47dMdJGte/kg6YIs9HGucKRomY4=
42+
github.com/aws/aws-sdk-go-v2/service/backup v1.40.10/go.mod h1:Vdu4P8UrQhIh69PlgCuJFVicDJgy4Z6i0lAEpJLBw2Q=
43+
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.47.4 h1:4hiC8jzPP89L+MTljvKs1LLC12gKJLMJwysjOrbJz1E=
44+
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.47.4/go.mod h1:Kj+z0vXRl21DsnPR+lA5DjVWCaRTvAmwQ/shTGHeY84=
3945
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 h1:OREVd94+oXW5a+3SSUAo4K0L5ci8cucCLu+PSiek8OU=
4046
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU=
47+
github.com/aws/aws-sdk-go-v2/service/docdb v1.40.10 h1:M+Pc9FI5Inm5P7IisViLbw8tnLyTvteTeuwN0mWPX8U=
48+
github.com/aws/aws-sdk-go-v2/service/docdb v1.40.10/go.mod h1:T0Kj3lj/4DSrtuqAt0yFLbhv5qydUgXEuL8enHpxpcg=
4149
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 h1:vucMirlM6D+RDU8ncKaSZ/5dGrXNajozVwpmWNPn2gQ=
4250
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1/go.mod h1:fceORfs010mNxZbQhfqUjUeHlTwANmIT4mvHamuUaUg=
4351
github.com/aws/aws-sdk-go-v2/service/ec2 v1.202.4 h1:gdFRXlTMgV0+yrhQLAJKb+vX2K32Vw3n2TntDd+8AEM=
@@ -46,6 +54,8 @@ github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 h1:zg+3FGHA0PBs0KM25qE/rOf2o5zs
4654
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6/go.mod h1:ZSq54Z9SIsOTf1Efwgw1msilSs4XVEfVQiP9nYVnKpM=
4755
github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 h1:7/vgFWplkusJN/m+3QOa+W9FNRqa8ujMPNmdufRaJpg=
4856
github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0/go.mod h1:dPTOvmjJQ1T7Q+2+Xs2KSPrMvx+p0rpyV+HsQVnUK4o=
57+
github.com/aws/aws-sdk-go-v2/service/efs v1.34.11 h1:PgeGNM3l3fg7UlFpIFEogySDrYsAeMVePZcHJJw5eVo=
58+
github.com/aws/aws-sdk-go-v2/service/efs v1.34.11/go.mod h1:pH1iibM/aigOyMTkB9RFdGDXbofNRaLzh1qoh2fIp6E=
4959
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.12 h1:PLoBTtHl376mmxe5NSMUx1UD8yiM+BgIi9yJ1SgibHk=
5060
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.12/go.mod h1:h7JSZfD6QGeaAWpTk0+e1hQw2Venf5gh7UlUTEAiZL8=
5161
github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 h1:hfkzDZHBp9jAT4zcd5mtqckpU4E3Ax0LQaEWWk1VgN8=
@@ -60,6 +70,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 h1:SYVGSFQH
6070
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13/go.mod h1:kizuDaLX37bG5WZaoxGPQR/LNFXpxp0vsUnqfkWXfNE=
6171
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 h1:P1doBzv5VEg1ONxnJss1Kh5ZG/ewoIE4MQtKKc6Crgg=
6272
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5/go.mod h1:NOP+euMW7W3Ukt28tAxPuoWao4rhhqJD3QEBk7oCg7w=
73+
github.com/aws/aws-sdk-go-v2/service/kafka v1.38.16 h1:r1mu+ZsoNt+3AuqYMyG2JoMkt6pYhfrzY34ENMVm6Uc=
74+
github.com/aws/aws-sdk-go-v2/service/kafka v1.38.16/go.mod h1:HLgqO1+m+EYx7ldJjwYSMwOHV1+RPsIVBtpsv3MM/zI=
6375
github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjkkD1eQTMA1KHWk+E=
6476
github.com/aws/aws-sdk-go-v2/service/kms v1.37.6/go.mod h1:YJDdlK0zsyxVBxGU48AR/Mi8DMrGdc1E3Yij4fNrONA=
6577
github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 h1:BXt75frE/FYtAmEDBJRBa2HexOw+oAZWZl6QknZEFgg=
@@ -72,6 +84,8 @@ github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 h1:Q2ax8S21clKOnHhhr933xm3JxdJeb
7284
github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow=
7385
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 h1:1KDMKvOKNrpD667ORbZ/+4OgvUoaok1gg/MLzrHF9fw=
7486
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6/go.mod h1:DmtyfCfONhOyVAJ6ZMTrDSFIeyCBlEO93Qkfhxwbxu0=
87+
github.com/aws/aws-sdk-go-v2/service/sesv2 v1.41.5 h1:4Axfv4Ytz7gMiAigzbS3NXWcXRFFHBZB8vFcG7oYRsk=
88+
github.com/aws/aws-sdk-go-v2/service/sesv2 v1.41.5/go.mod h1:taGBqRDPFzem7/4UB0O8Sua9i1gRXg9fEWgUMKXeunA=
7589
github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 h1:lEUtRHICiXsd7VRwRjXaY7MApT2X4Ue0Mrwe6XbyBro=
7690
github.com/aws/aws-sdk-go-v2/service/sns v1.33.6/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8=
7791
github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 h1:39WvSrVq9DD6UHkD+fx5x19P5KpRQfNdtgReDVNbelc=

pkg/atmos/component-helper/atmos_options.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/cloudposse/test-helpers/pkg/atmos"
99
c "github.com/cloudposse/test-helpers/pkg/atmos/component-helper/config"
1010
"github.com/stretchr/testify/require"
11+
"github.com/gruntwork-io/terratest/modules/aws"
1112
)
1213

1314
func getAtmosOptions(t *testing.T, config *c.Config, componentName string, stackName string, vars *map[string]interface{}) *atmos.Options {
@@ -20,6 +21,9 @@ func getAtmosOptions(t *testing.T, config *c.Config, componentName string, stack
2021
require.NoError(t, err)
2122
}
2223

24+
accountID := aws.GetAccountId(t)
25+
require.NotEmpty(t, accountID)
26+
2327
atmosOptions := &atmos.Options{
2428
AtmosBasePath: config.TempDir,
2529
Component: componentName,
@@ -33,6 +37,7 @@ func getAtmosOptions(t *testing.T, config *c.Config, componentName string, stack
3337
"ATMOS_BASE_PATH": config.TempDir,
3438
"ATMOS_CLI_CONFIG_PATH": config.TempDir,
3539
"COMPONENT_HELPER_STATE_DIR": config.StateDir,
40+
"TEST_ACCOUNT_ID": accountID,
3641
},
3742
}
3843
return atmosOptions

pkg/aws/backup.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package aws
2+
3+
import (
4+
"testing"
5+
6+
"github.com/aws/aws-sdk-go-v2/service/backup"
7+
"github.com/stretchr/testify/require"
8+
"github.com/gruntwork-io/terratest/modules/aws"
9+
)
10+
11+
func NewBackupClient(t *testing.T, region string) *backup.Client {
12+
client, err := NewBackupClientE(t, region)
13+
require.NoError(t, err)
14+
15+
return client
16+
}
17+
18+
func NewBackupClientE(t *testing.T, region string) (*backup.Client, error) {
19+
sess, err := aws.NewAuthenticatedSession(region)
20+
if err != nil {
21+
return nil, err
22+
}
23+
return backup.NewFromConfig(*sess), nil
24+
}

pkg/aws/cloudtrail.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package aws
2+
3+
import (
4+
"testing"
5+
6+
"github.com/aws/aws-sdk-go-v2/service/cloudtrail"
7+
"github.com/gruntwork-io/terratest/modules/aws"
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
func NewCloudTrailClient(t *testing.T, region string) *cloudtrail.Client {
12+
client, err := NewCloudTrailClientE(t, region)
13+
require.NoError(t, err)
14+
15+
return client
16+
}
17+
18+
func NewCloudTrailClientE(t *testing.T, region string) (*cloudtrail.Client, error) {
19+
sess, err := aws.NewAuthenticatedSession(region)
20+
if err != nil {
21+
return nil, err
22+
}
23+
return cloudtrail.NewFromConfig(*sess), nil
24+
}

pkg/aws/documentdb.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package aws
2+
3+
import (
4+
"github.com/aws/aws-sdk-go-v2/service/docdb"
5+
"github.com/gruntwork-io/terratest/modules/aws"
6+
"github.com/stretchr/testify/require"
7+
"testing"
8+
)
9+
10+
func NewDocDBClient(t *testing.T, region string) *docdb.Client {
11+
client, err := NewDocDBClientE(t, region)
12+
require.NoError(t, err)
13+
14+
return client
15+
}
16+
17+
func NewDocDBClientE(t *testing.T, region string) (*docdb.Client, error) {
18+
sess, err := aws.NewAuthenticatedSession(region)
19+
if err != nil {
20+
return nil, err
21+
}
22+
return docdb.NewFromConfig(*sess), nil
23+
}

pkg/aws/ec2.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/aws/aws-sdk-go-v2/service/ec2"
99
"github.com/aws/aws-sdk-go-v2/service/ec2/types"
1010
"github.com/gruntwork-io/terratest/modules/aws"
11+
"github.com/stretchr/testify/assert"
1112
)
1213

1314
func GetNatGatewaysByVpcIdE(t *testing.T, ctx context.Context, vpcId string, awsRegion string) ([]types.NatGateway, error) {
@@ -25,3 +26,14 @@ func GetNatGatewaysByVpcIdE(t *testing.T, ctx context.Context, vpcId string, aws
2526
}
2627
return response.NatGateways, nil
2728
}
29+
30+
// GetPrivateIpsOfEc2InstancesE gets the private IP address of the given EC2 Instance in the given region. Returns a map of instance ID to IP address.
31+
func GetEc2Instances(t *testing.T, ctx context.Context, instanceID string, awsRegion string) types.Instance {
32+
ec2Client := aws.NewEc2Client(t, awsRegion)
33+
// TODO: implement pagination for cases that extend beyond limit (1000 instances)
34+
input := ec2.DescribeInstancesInput{InstanceIds: []string{instanceID}}
35+
output, err := ec2Client.DescribeInstances(ctx, &input)
36+
assert.NoError(t, err)
37+
38+
return output.Reservations[0].Instances[0]
39+
}

pkg/aws/efs.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package aws
2+
3+
import (
4+
"testing"
5+
6+
"github.com/aws/aws-sdk-go-v2/service/efs"
7+
"github.com/gruntwork-io/terratest/modules/aws"
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
12+
func NewEFSClient(t *testing.T, region string) *efs.Client {
13+
client, err := NewEFSClientE(t, region)
14+
require.NoError(t, err)
15+
16+
return client
17+
}
18+
19+
func NewEFSClientE(t *testing.T, region string) (*efs.Client, error) {
20+
sess, err := aws.NewAuthenticatedSession(region)
21+
if err != nil {
22+
return nil, err
23+
}
24+
return efs.NewFromConfig(*sess), nil
25+
}

pkg/aws/msk.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package aws
2+
3+
import (
4+
"testing"
5+
6+
"github.com/aws/aws-sdk-go-v2/service/kafka"
7+
"github.com/stretchr/testify/require"
8+
"github.com/gruntwork-io/terratest/modules/aws"
9+
)
10+
11+
func NewMSKClient(t *testing.T, region string) *kafka.Client {
12+
client, err := NewMSKClientE(t, region)
13+
require.NoError(t, err)
14+
15+
return client
16+
}
17+
18+
func NewMSKClientE(t *testing.T, region string) (*kafka.Client, error) {
19+
sess, err := aws.NewAuthenticatedSession(region)
20+
if err != nil {
21+
return nil, err
22+
}
23+
return kafka.NewFromConfig(*sess), nil
24+
}

0 commit comments

Comments
 (0)