Skip to content

Commit 1c99896

Browse files
author
Jeff Carter
committed
add IoT SiteWise, DynamoDBStreams, and ImageBuilder
1 parent c94481e commit 1c99896

17 files changed

+585
-13
lines changed

cmd/awsets/go.sum

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ github.com/aws/aws-sdk-go-v2/service/docdb v0.29.0 h1:oFPAXQ2knLeFjWaDDcb53ta9/O
7373
github.com/aws/aws-sdk-go-v2/service/docdb v0.29.0/go.mod h1:6lnW/v9QNpz3KVlLb0Q1pJhybYcURdp9aozs0MWZwp8=
7474
github.com/aws/aws-sdk-go-v2/service/dynamodb v0.29.0 h1:d5yqntamqBYCLo5K/KUfjWXaWG1NADl3wpKbEHzQ/AU=
7575
github.com/aws/aws-sdk-go-v2/service/dynamodb v0.29.0/go.mod h1:GnrvWDFrLYlFuAHVFORuS8LFOU4Nhy+zsEFPB4aXl7o=
76+
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v0.29.0 h1:Mez0GZO9FZNXWmt7k7MduHyqiwd9CD1gNZRGoQ+FIrM=
77+
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v0.29.0/go.mod h1:eP8Iry27nkQxFLgScoBZIaVU2rFG9oxFZsTNurygLuI=
7678
github.com/aws/aws-sdk-go-v2/service/ec2 v0.29.0 h1:Cce76s5ELe4B5lcxJGmCNncRRUNu1PI11GoLx6cesxM=
7779
github.com/aws/aws-sdk-go-v2/service/ec2 v0.29.0/go.mod h1:85Da92ykdcG4mD+cz4Vp7D3VsKf0/Bl6WHrE0V0jBig=
7880
github.com/aws/aws-sdk-go-v2/service/ecr v0.29.0 h1:90pUygW5pNWDPevIhGW1ZQTyQLj+0wRulp+LSWu3C+w=
@@ -105,6 +107,8 @@ github.com/aws/aws-sdk-go-v2/service/greengrass v0.29.0 h1:rWd6Ik73ca9R7VXpRoeM+
105107
github.com/aws/aws-sdk-go-v2/service/greengrass v0.29.0/go.mod h1:Qime32S/PdxuoB2kPTFjkUUD41BUZuZ4WoQEz8/Sh8E=
106108
github.com/aws/aws-sdk-go-v2/service/iam v0.29.0 h1:w5tnMJZPZ0UvKNuS48fszCuK65DWiSx1cFnBbv8A45A=
107109
github.com/aws/aws-sdk-go-v2/service/iam v0.29.0/go.mod h1:lcprpUAWnKttfq6rYtp59O6MihrOv2C5rbIKBYnzz5k=
110+
github.com/aws/aws-sdk-go-v2/service/imagebuilder v0.29.0 h1:2mSRtCmcILnVPmIT34whFkQ59L3FsK9Wr888aGj3U1Y=
111+
github.com/aws/aws-sdk-go-v2/service/imagebuilder v0.29.0/go.mod h1:7KcoKWovQs8dAWt9xMXOn+kK8r5VyE4GMa6gwKr7TPk=
108112
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v0.3.0 h1:OGNwNNeQvOZsa+zAK5nE7r6e0serfSAFznoXqbvbzFE=
109113
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v0.3.0/go.mod h1:bMiNrEKNefchodwRJnuwaiAZj2NJq8ZHAYASve6mbFs=
110114
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v0.1.1 h1:mX0AC4zkkDMNLxzF56aov9zb/35qa9hc6MmWlwA9JRo=
@@ -113,6 +117,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v0.3.1 h1:5dV7pN0xCrnecvb
113117
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v0.3.1/go.mod h1:XHXNMjAkjOXqnmixax5P9IsLhJd6mEU+yrsGls4b5zk=
114118
github.com/aws/aws-sdk-go-v2/service/iot v0.29.0 h1:dBRwX6zWGOhLYVBtovSegwHvWs8jyXjGr8VLXOZcAU8=
115119
github.com/aws/aws-sdk-go-v2/service/iot v0.29.0/go.mod h1:y1bAjY+iAJ9vX4k3ELVLZp5PFDhduko3u0hDis9N2LM=
120+
github.com/aws/aws-sdk-go-v2/service/iotsitewise v0.29.0 h1:tGPEPTKhkg1/q47V6xgGRT89i4t1wrYam6eebKKJXJw=
121+
github.com/aws/aws-sdk-go-v2/service/iotsitewise v0.29.0/go.mod h1:JKGwnJ85nCXo8TkPfYXX6INGIqOC2t+hIcCBodPB1Cc=
116122
github.com/aws/aws-sdk-go-v2/service/kafka v0.29.0 h1:e4hbi5dgxtRwpalIr2wI/FBts/fdfu8NNXDspjurxgU=
117123
github.com/aws/aws-sdk-go-v2/service/kafka v0.29.0/go.mod h1:XSUuPcRyDpjwQYRG8aAKzPLqjMJN7/Uqq6jOAsEk5zM=
118124
github.com/aws/aws-sdk-go-v2/service/kinesis v0.29.0 h1:YCMdSI9ierV/qxfOuygfZv8Ju1ma0mjyexEJIR4Z5Eo=

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ require (
3535
github.com/aws/aws-sdk-go-v2/service/dax v0.29.0
3636
github.com/aws/aws-sdk-go-v2/service/docdb v0.29.0
3737
github.com/aws/aws-sdk-go-v2/service/dynamodb v0.29.0
38+
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v0.29.0
3839
github.com/aws/aws-sdk-go-v2/service/ec2 v0.29.0
3940
github.com/aws/aws-sdk-go-v2/service/ecr v0.29.0
4041
github.com/aws/aws-sdk-go-v2/service/ecs v0.29.0
@@ -51,7 +52,9 @@ require (
5152
github.com/aws/aws-sdk-go-v2/service/glue v0.29.0
5253
github.com/aws/aws-sdk-go-v2/service/greengrass v0.29.0
5354
github.com/aws/aws-sdk-go-v2/service/iam v0.29.0
55+
github.com/aws/aws-sdk-go-v2/service/imagebuilder v0.29.0
5456
github.com/aws/aws-sdk-go-v2/service/iot v0.29.0
57+
github.com/aws/aws-sdk-go-v2/service/iotsitewise v0.29.0
5558
github.com/aws/aws-sdk-go-v2/service/kafka v0.29.0
5659
github.com/aws/aws-sdk-go-v2/service/kinesis v0.29.0
5760
github.com/aws/aws-sdk-go-v2/service/kms v0.29.0
@@ -72,6 +75,8 @@ require (
7275
github.com/aws/aws-sdk-go-v2/service/sqs v0.29.0
7376
github.com/aws/aws-sdk-go-v2/service/ssm v0.29.0
7477
github.com/aws/aws-sdk-go-v2/service/sts v0.29.0
78+
//github.com/aws/aws-sdk-go-v2/service/timestreamquery v0.29.0
79+
//github.com/aws/aws-sdk-go-v2/service/timestreamwrite v0.29.0
7580
github.com/aws/aws-sdk-go-v2/service/transfer v0.29.0
7681
github.com/aws/aws-sdk-go-v2/service/waf v0.29.0
7782
github.com/aws/aws-sdk-go-v2/service/wafregional v0.29.0

go.sum

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ github.com/aws/aws-sdk-go-v2/service/docdb v0.29.0 h1:oFPAXQ2knLeFjWaDDcb53ta9/O
6262
github.com/aws/aws-sdk-go-v2/service/docdb v0.29.0/go.mod h1:6lnW/v9QNpz3KVlLb0Q1pJhybYcURdp9aozs0MWZwp8=
6363
github.com/aws/aws-sdk-go-v2/service/dynamodb v0.29.0 h1:d5yqntamqBYCLo5K/KUfjWXaWG1NADl3wpKbEHzQ/AU=
6464
github.com/aws/aws-sdk-go-v2/service/dynamodb v0.29.0/go.mod h1:GnrvWDFrLYlFuAHVFORuS8LFOU4Nhy+zsEFPB4aXl7o=
65+
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v0.29.0 h1:Mez0GZO9FZNXWmt7k7MduHyqiwd9CD1gNZRGoQ+FIrM=
66+
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v0.29.0/go.mod h1:eP8Iry27nkQxFLgScoBZIaVU2rFG9oxFZsTNurygLuI=
6567
github.com/aws/aws-sdk-go-v2/service/ec2 v0.29.0 h1:Cce76s5ELe4B5lcxJGmCNncRRUNu1PI11GoLx6cesxM=
6668
github.com/aws/aws-sdk-go-v2/service/ec2 v0.29.0/go.mod h1:85Da92ykdcG4mD+cz4Vp7D3VsKf0/Bl6WHrE0V0jBig=
6769
github.com/aws/aws-sdk-go-v2/service/ecr v0.29.0 h1:90pUygW5pNWDPevIhGW1ZQTyQLj+0wRulp+LSWu3C+w=
@@ -94,6 +96,8 @@ github.com/aws/aws-sdk-go-v2/service/greengrass v0.29.0 h1:rWd6Ik73ca9R7VXpRoeM+
9496
github.com/aws/aws-sdk-go-v2/service/greengrass v0.29.0/go.mod h1:Qime32S/PdxuoB2kPTFjkUUD41BUZuZ4WoQEz8/Sh8E=
9597
github.com/aws/aws-sdk-go-v2/service/iam v0.29.0 h1:w5tnMJZPZ0UvKNuS48fszCuK65DWiSx1cFnBbv8A45A=
9698
github.com/aws/aws-sdk-go-v2/service/iam v0.29.0/go.mod h1:lcprpUAWnKttfq6rYtp59O6MihrOv2C5rbIKBYnzz5k=
99+
github.com/aws/aws-sdk-go-v2/service/imagebuilder v0.29.0 h1:2mSRtCmcILnVPmIT34whFkQ59L3FsK9Wr888aGj3U1Y=
100+
github.com/aws/aws-sdk-go-v2/service/imagebuilder v0.29.0/go.mod h1:7KcoKWovQs8dAWt9xMXOn+kK8r5VyE4GMa6gwKr7TPk=
97101
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v0.3.0 h1:OGNwNNeQvOZsa+zAK5nE7r6e0serfSAFznoXqbvbzFE=
98102
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v0.3.0/go.mod h1:bMiNrEKNefchodwRJnuwaiAZj2NJq8ZHAYASve6mbFs=
99103
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v0.1.1 h1:mX0AC4zkkDMNLxzF56aov9zb/35qa9hc6MmWlwA9JRo=
@@ -102,6 +106,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v0.3.1 h1:5dV7pN0xCrnecvb
102106
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v0.3.1/go.mod h1:XHXNMjAkjOXqnmixax5P9IsLhJd6mEU+yrsGls4b5zk=
103107
github.com/aws/aws-sdk-go-v2/service/iot v0.29.0 h1:dBRwX6zWGOhLYVBtovSegwHvWs8jyXjGr8VLXOZcAU8=
104108
github.com/aws/aws-sdk-go-v2/service/iot v0.29.0/go.mod h1:y1bAjY+iAJ9vX4k3ELVLZp5PFDhduko3u0hDis9N2LM=
109+
github.com/aws/aws-sdk-go-v2/service/iotsitewise v0.29.0 h1:tGPEPTKhkg1/q47V6xgGRT89i4t1wrYam6eebKKJXJw=
110+
github.com/aws/aws-sdk-go-v2/service/iotsitewise v0.29.0/go.mod h1:JKGwnJ85nCXo8TkPfYXX6INGIqOC2t+hIcCBodPB1Cc=
105111
github.com/aws/aws-sdk-go-v2/service/kafka v0.29.0 h1:e4hbi5dgxtRwpalIr2wI/FBts/fdfu8NNXDspjurxgU=
106112
github.com/aws/aws-sdk-go-v2/service/kafka v0.29.0/go.mod h1:XSUuPcRyDpjwQYRG8aAKzPLqjMJN7/Uqq6jOAsEk5zM=
107113
github.com/aws/aws-sdk-go-v2/service/kinesis v0.29.0 h1:YCMdSI9ierV/qxfOuygfZv8Ju1ma0mjyexEJIR4Z5Eo=

lister/dynamodbstreams_stream.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package lister
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/aws/aws-sdk-go-v2/aws"
7+
"github.com/aws/aws-sdk-go-v2/service/dynamodbstreams"
8+
"github.com/trek10inc/awsets/arn"
9+
"github.com/trek10inc/awsets/option"
10+
"github.com/trek10inc/awsets/resource"
11+
)
12+
13+
type AWSDynamoDBStreamStream struct {
14+
}
15+
16+
func init() {
17+
i := AWSDynamoDBStreamStream{}
18+
listers = append(listers, i)
19+
}
20+
21+
func (l AWSDynamoDBStreamStream) Types() []resource.ResourceType {
22+
return []resource.ResourceType{
23+
resource.DynamoDbStreamStream,
24+
}
25+
}
26+
27+
func (l AWSDynamoDBStreamStream) List(cfg option.AWSetsConfig) (*resource.Group, error) {
28+
svc := dynamodbstreams.NewFromConfig(cfg.AWSCfg)
29+
30+
rg := resource.NewGroup()
31+
err := Paginator(func(nt *string) (*string, error) {
32+
res, err := svc.ListStreams(cfg.Context, &dynamodbstreams.ListStreamsInput{
33+
ExclusiveStartStreamArn: nt,
34+
Limit: aws.Int32(100),
35+
})
36+
if err != nil {
37+
return nil, err
38+
}
39+
for _, stream := range res.Streams {
40+
v, err := svc.DescribeStream(cfg.Context, &dynamodbstreams.DescribeStreamInput{
41+
StreamArn: stream.StreamArn,
42+
})
43+
if err != nil {
44+
return nil, fmt.Errorf("failed to describe ddb stream %s: %w", *stream.TableName, err)
45+
}
46+
streamArn := arn.ParseP(v.StreamDescription.StreamArn)
47+
r := resource.New(cfg, resource.DynamoDbStreamStream, streamArn.ResourceId, streamArn.ResourceId, v.StreamDescription)
48+
r.AddRelation(resource.DynamoDbTable, v.StreamDescription.TableName, "")
49+
rg.AddResource(r)
50+
}
51+
return res.LastEvaluatedStreamArn, nil
52+
})
53+
return rg, err
54+
}

lister/imagebuilder_component.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package lister
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/aws/aws-sdk-go-v2/aws"
7+
"github.com/aws/aws-sdk-go-v2/service/imagebuilder"
8+
"github.com/trek10inc/awsets/arn"
9+
"github.com/trek10inc/awsets/option"
10+
"github.com/trek10inc/awsets/resource"
11+
)
12+
13+
type AWSImageBuilderComponent struct {
14+
}
15+
16+
func init() {
17+
i := AWSImageBuilderComponent{}
18+
listers = append(listers, i)
19+
}
20+
21+
func (l AWSImageBuilderComponent) Types() []resource.ResourceType {
22+
return []resource.ResourceType{
23+
resource.ImageBuilderComponent,
24+
}
25+
}
26+
27+
func (l AWSImageBuilderComponent) List(cfg option.AWSetsConfig) (*resource.Group, error) {
28+
29+
svc := imagebuilder.NewFromConfig(cfg.AWSCfg)
30+
rg := resource.NewGroup()
31+
err := Paginator(func(nt *string) (*string, error) {
32+
res, err := svc.ListComponents(cfg.Context, &imagebuilder.ListComponentsInput{
33+
MaxResults: aws.Int32(100),
34+
NextToken: nt,
35+
})
36+
if err != nil {
37+
return nil, fmt.Errorf("failed to list imagebuilder components: %w", err)
38+
}
39+
for _, cv := range res.ComponentVersionList {
40+
v, err := svc.GetComponent(cfg.Context, &imagebuilder.GetComponentInput{
41+
ComponentBuildVersionArn: cv.Arn,
42+
})
43+
if err != nil {
44+
return nil, fmt.Errorf("failed to get imagebuilder component %s: %w", *cv.Name, err)
45+
}
46+
cArn := arn.ParseP(v.Component.Arn)
47+
r := resource.NewVersion(cfg, resource.ImageBuilderComponent, cArn.ResourceId, cArn.ResourceVersion, v.Component.Name, v.Component)
48+
r.AddARNRelation(resource.KmsKey, v.Component.KmsKeyId)
49+
rg.AddResource(r)
50+
}
51+
return res.NextToken, nil
52+
})
53+
return rg, err
54+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package lister
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/trek10inc/awsets/arn"
7+
8+
"github.com/aws/aws-sdk-go-v2/service/imagebuilder"
9+
10+
"github.com/aws/aws-sdk-go-v2/aws"
11+
"github.com/trek10inc/awsets/option"
12+
"github.com/trek10inc/awsets/resource"
13+
)
14+
15+
type AWSImageBuilderDistributionConfig struct {
16+
}
17+
18+
func init() {
19+
i := AWSImageBuilderDistributionConfig{}
20+
listers = append(listers, i)
21+
}
22+
23+
func (l AWSImageBuilderDistributionConfig) Types() []resource.ResourceType {
24+
return []resource.ResourceType{
25+
resource.ImageBuilderDistributionConfiguration,
26+
}
27+
}
28+
29+
func (l AWSImageBuilderDistributionConfig) List(cfg option.AWSetsConfig) (*resource.Group, error) {
30+
31+
svc := imagebuilder.NewFromConfig(cfg.AWSCfg)
32+
rg := resource.NewGroup()
33+
err := Paginator(func(nt *string) (*string, error) {
34+
res, err := svc.ListDistributionConfigurations(cfg.Context, &imagebuilder.ListDistributionConfigurationsInput{
35+
MaxResults: aws.Int32(100),
36+
NextToken: nt,
37+
})
38+
if err != nil {
39+
return nil, fmt.Errorf("failed to list imagebuilder distribution configs: %w", err)
40+
}
41+
for _, config := range res.DistributionConfigurationSummaryList {
42+
configRes, err := svc.GetDistributionConfiguration(cfg.Context, &imagebuilder.GetDistributionConfigurationInput{
43+
DistributionConfigurationArn: config.Arn,
44+
})
45+
if err != nil {
46+
return nil, fmt.Errorf("failed to get imagebuilder distribution config %s: %w", *config.Name, err)
47+
}
48+
v := configRes.DistributionConfiguration
49+
configArn := arn.ParseP(v.Arn)
50+
r := resource.New(cfg, resource.ImageBuilderDistributionConfiguration, configArn.ResourceId, v.Name, v)
51+
for _, dist := range v.Distributions {
52+
if dist.AmiDistributionConfiguration != nil {
53+
r.AddARNRelation(resource.KmsKey, dist.AmiDistributionConfiguration.KmsKeyId)
54+
}
55+
}
56+
rg.AddResource(r)
57+
}
58+
return res.NextToken, nil
59+
})
60+
return rg, err
61+
}

lister/imagebuilder_image.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package lister
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/aws/aws-sdk-go-v2/aws"
7+
"github.com/aws/aws-sdk-go-v2/service/imagebuilder"
8+
"github.com/trek10inc/awsets/arn"
9+
"github.com/trek10inc/awsets/option"
10+
"github.com/trek10inc/awsets/resource"
11+
)
12+
13+
type AWSImageBuilderImage struct {
14+
}
15+
16+
func init() {
17+
i := AWSImageBuilderImage{}
18+
listers = append(listers, i)
19+
}
20+
21+
func (l AWSImageBuilderImage) Types() []resource.ResourceType {
22+
return []resource.ResourceType{
23+
resource.ImageBuilderImage,
24+
}
25+
}
26+
27+
func (l AWSImageBuilderImage) List(cfg option.AWSetsConfig) (*resource.Group, error) {
28+
29+
svc := imagebuilder.NewFromConfig(cfg.AWSCfg)
30+
rg := resource.NewGroup()
31+
err := Paginator(func(nt *string) (*string, error) {
32+
res, err := svc.ListImages(cfg.Context, &imagebuilder.ListImagesInput{
33+
MaxResults: aws.Int32(100),
34+
NextToken: nt,
35+
})
36+
if err != nil {
37+
return nil, fmt.Errorf("failed to list imagebuilder images: %w", err)
38+
}
39+
for _, ivl := range res.ImageVersionList {
40+
v, err := svc.GetImage(cfg.Context, &imagebuilder.GetImageInput{
41+
ImageBuildVersionArn: ivl.Arn,
42+
})
43+
if err != nil {
44+
return nil, fmt.Errorf("failed to get imagebuilder image %s: %w", *ivl.Name, err)
45+
}
46+
imArn := arn.ParseP(v.Image.Arn)
47+
r := resource.New(cfg, resource.ImageBuilderImage, imArn.ResourceId, v.Image.Name, v.Image)
48+
r.AddARNRelation(resource.ImageBuilderImagePipeline, v.Image.SourcePipelineArn)
49+
50+
// This response includes the full recipe, but only building the relationship to the ARN, then querying
51+
// the recipes separately to pick up any recipes that don't have images (yet?)
52+
r.AddARNRelation(resource.ImageBuilderImageRecipe, v.Image.ImageRecipe.Arn)
53+
54+
// This response includes the full infrastructure config, but only building the relationship to the ARN,
55+
// then querying the configurations separately to pick up any configs that don't have images (yet?)
56+
r.AddARNRelation(resource.ImageBuilderInfrastructureConfiguration, v.Image.InfrastructureConfiguration.Arn)
57+
58+
// This response includes the full distribution config, but only building the relationship to the ARN,
59+
// then querying the configurations separately to pick up any configs that don't have images (yet?)
60+
r.AddARNRelation(resource.ImageBuilderDistributionConfiguration, v.Image.DistributionConfiguration.Arn)
61+
rg.AddResource(r)
62+
}
63+
return res.NextToken, nil
64+
})
65+
return rg, err
66+
}

lister/imagebuilder_imagepipeline.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package lister
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/aws/aws-sdk-go-v2/aws"
7+
"github.com/aws/aws-sdk-go-v2/service/imagebuilder"
8+
"github.com/trek10inc/awsets/arn"
9+
"github.com/trek10inc/awsets/option"
10+
"github.com/trek10inc/awsets/resource"
11+
)
12+
13+
type AWSImageBuilderImagePipeline struct {
14+
}
15+
16+
func init() {
17+
i := AWSImageBuilderImagePipeline{}
18+
listers = append(listers, i)
19+
}
20+
21+
func (l AWSImageBuilderImagePipeline) Types() []resource.ResourceType {
22+
return []resource.ResourceType{
23+
resource.ImageBuilderImagePipeline,
24+
}
25+
}
26+
27+
func (l AWSImageBuilderImagePipeline) List(cfg option.AWSetsConfig) (*resource.Group, error) {
28+
29+
svc := imagebuilder.NewFromConfig(cfg.AWSCfg)
30+
rg := resource.NewGroup()
31+
err := Paginator(func(nt *string) (*string, error) {
32+
res, err := svc.ListImagePipelines(cfg.Context, &imagebuilder.ListImagePipelinesInput{
33+
MaxResults: aws.Int32(100),
34+
NextToken: nt,
35+
})
36+
if err != nil {
37+
return nil, fmt.Errorf("failed to list imagebuilder image pipelines: %w", err)
38+
}
39+
for _, v := range res.ImagePipelineList {
40+
plArn := arn.ParseP(v.Arn)
41+
r := resource.New(cfg, resource.ImageBuilderImagePipeline, plArn.ResourceId, v.Name, v)
42+
r.AddARNRelation(resource.ImageBuilderImageRecipe, v.ImageRecipeArn)
43+
rg.AddResource(r)
44+
}
45+
return res.NextToken, nil
46+
})
47+
return rg, err
48+
}

0 commit comments

Comments
 (0)