diff --git a/plugins/source/aws/docs/tables/aws_directconnect_gateways.md b/plugins/source/aws/docs/tables/aws_directconnect_gateways.md index baa9ee30b1ec5a..a65d8633bf310e 100644 --- a/plugins/source/aws/docs/tables/aws_directconnect_gateways.md +++ b/plugins/source/aws/docs/tables/aws_directconnect_gateways.md @@ -2,7 +2,7 @@ https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DirectConnectGateway.html -The primary key for this table is **arn**. +The composite primary key for this table is (**account_id**, **region**, **arn**). ## Relations @@ -18,8 +18,8 @@ The following tables depend on aws_directconnect_gateways: |_cq_sync_time|Timestamp| |_cq_id|UUID| |_cq_parent_id|UUID| -|account_id|String| -|region|String| +|account_id (PK)|String| +|region (PK)|String| |arn (PK)|String| |id|String| |amazon_side_asn|Int| diff --git a/plugins/source/aws/resources/services/directconnect/gateways.go b/plugins/source/aws/resources/services/directconnect/gateways.go index c2fafd22e71b8d..fc10f5c3508b12 100644 --- a/plugins/source/aws/resources/services/directconnect/gateways.go +++ b/plugins/source/aws/resources/services/directconnect/gateways.go @@ -15,12 +15,12 @@ func Gateways() *schema.Table { Multiplex: client.ServiceAccountRegionMultiplexer("directconnect"), Transform: transformers.TransformWithStruct(&types.DirectConnectGateway{}), Columns: []schema.Column{ - client.DefaultAccountIDColumn(false), - client.DefaultRegionColumn(false), + client.DefaultAccountIDColumn(true), + client.DefaultRegionColumn(true), { Name: "arn", Type: schema.TypeString, - Resolver: resolveGatewayARN(), + Resolver: resolveGatewayARN, CreationOptions: schema.ColumnCreationOptions{ PrimaryKey: true, }, diff --git a/plugins/source/aws/resources/services/directconnect/gateways_fetch.go b/plugins/source/aws/resources/services/directconnect/gateways_fetch.go index 0ba64a18cc0334..723c351534f121 100644 --- a/plugins/source/aws/resources/services/directconnect/gateways_fetch.go +++ b/plugins/source/aws/resources/services/directconnect/gateways_fetch.go @@ -2,8 +2,10 @@ package directconnect import ( "context" + "strings" "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/arn" "github.com/aws/aws-sdk-go-v2/service/directconnect" "github.com/aws/aws-sdk-go-v2/service/directconnect/types" "github.com/cloudquery/cloudquery/plugins/source/aws/client" @@ -66,8 +68,14 @@ func fetchDirectconnectGatewayAttachments(ctx context.Context, meta schema.Clien return nil } -func resolveGatewayARN() schema.ColumnResolver { - return client.ResolveARNWithAccount(client.DirectConnectService, func(resource *schema.Resource) ([]string, error) { - return []string{"dx-gateway", *resource.Item.(types.DirectConnectGateway).DirectConnectGatewayId}, nil - }) +func resolveGatewayARN(_ context.Context, meta schema.ClientMeta, resource *schema.Resource, c schema.Column) error { + cl := meta.(*client.Client) + gw := resource.Item.(types.DirectConnectGateway) + + return resource.Set(c.Name, arn.ARN{ + Partition: cl.Partition, + Service: "directconnect", + AccountID: *gw.OwnerAccount, + Resource: strings.Join([]string{"dx-gateway", *gw.DirectConnectGatewayId}, "/"), + }.String()) }