Skip to content

Commit a4ef661

Browse files
authored
feat(aws): Add Support for Eventbridge scheduler (#4693)
#### Summary <!-- Explain what problem this PR addresses --> <!--
1 parent 7903539 commit a4ef661

File tree

18 files changed

+619
-0
lines changed

18 files changed

+619
-0
lines changed

plugins/source/aws/client/mocks/scheduler.go

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

plugins/source/aws/client/services.go

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

plugins/source/aws/client/services/scheduler.go

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

plugins/source/aws/codegen/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ func generateResources() ([]*recipes.Resource, error) {
7979
resources = append(resources, recipes.Route53Resources()...)
8080
resources = append(resources, recipes.S3Resources()...)
8181
resources = append(resources, recipes.SagemakerResources()...)
82+
resources = append(resources, recipes.SchedulerResources()...)
8283
resources = append(resources, recipes.SecretsManagerResources()...)
8384
resources = append(resources, recipes.ServiceCatalogResources()...)
8485
resources = append(resources, recipes.ServiceQuotasResources()...)
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package recipes
2+
3+
import (
4+
"github.com/aws/aws-sdk-go-v2/service/scheduler"
5+
"github.com/aws/aws-sdk-go-v2/service/scheduler/types"
6+
"github.com/cloudquery/plugin-sdk/codegen"
7+
"github.com/cloudquery/plugin-sdk/schema"
8+
)
9+
10+
func SchedulerResources() []*Resource {
11+
mx := `client.ServiceAccountRegionMultiplexer("scheduler")`
12+
resources := []*Resource{
13+
{
14+
SubService: "schedule_groups",
15+
Struct: new(types.ScheduleGroupSummary),
16+
Multiplex: mx,
17+
PKColumns: []string{"arn"},
18+
ExtraColumns: append(
19+
defaultRegionalColumns,
20+
[]codegen.ColumnDefinition{
21+
22+
{
23+
Name: "tags",
24+
Type: schema.TypeJSON,
25+
Resolver: `resolveSchedulerScheduleTags()`,
26+
},
27+
}...),
28+
},
29+
{
30+
SubService: "schedules",
31+
Struct: new(scheduler.GetScheduleOutput),
32+
Multiplex: mx,
33+
PKColumns: []string{"arn"},
34+
SkipFields: []string{"ResultMetadata"},
35+
ExtraColumns: append(
36+
defaultRegionalColumns,
37+
[]codegen.ColumnDefinition{
38+
39+
{
40+
Name: "tags",
41+
Type: schema.TypeJSON,
42+
Resolver: `resolveSchedulerScheduleTags()`,
43+
},
44+
}...),
45+
PreResourceResolver: "getSchedule",
46+
},
47+
}
48+
for _, r := range resources {
49+
r.Service = "scheduler"
50+
r.Description = "https://docs.aws.amazon.com/scheduler/latest/APIReference/API_" + r.StructName() + ".html"
51+
}
52+
return resources
53+
}

plugins/source/aws/codegen/services/clients.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ import (
7272
"github.com/aws/aws-sdk-go-v2/service/s3"
7373
"github.com/aws/aws-sdk-go-v2/service/s3control"
7474
"github.com/aws/aws-sdk-go-v2/service/sagemaker"
75+
"github.com/aws/aws-sdk-go-v2/service/scheduler"
7576
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
7677
"github.com/aws/aws-sdk-go-v2/service/servicecatalog"
7778
"github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry"
@@ -163,6 +164,7 @@ var clients = []interface{}{
163164
&s3.Client{},
164165
&s3control.Client{},
165166
&sagemaker.Client{},
167+
&scheduler.Client{},
166168
&secretsmanager.Client{},
167169
&servicecatalog.Client{},
168170
&servicecatalogappregistry.Client{},

plugins/source/aws/docs/tables/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,8 @@
391391
| [aws_sagemaker_models](aws_sagemaker_models.md) |
392392
| [aws_sagemaker_notebook_instances](aws_sagemaker_notebook_instances.md) |
393393
| [aws_sagemaker_training_jobs](aws_sagemaker_training_jobs.md) |
394+
| [aws_scheduler_schedule_groups](aws_scheduler_schedule_groups.md) |
395+
| [aws_scheduler_schedules](aws_scheduler_schedules.md) |
394396
| [aws_secretsmanager_secrets](aws_secretsmanager_secrets.md) |
395397
| [aws_servicecatalog_portfolios](aws_servicecatalog_portfolios.md) |
396398
| [aws_servicecatalog_products](aws_servicecatalog_products.md) |
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Table: aws_scheduler_schedule_groups
2+
3+
https://docs.aws.amazon.com/scheduler/latest/APIReference/API_ScheduleGroupSummary.html
4+
5+
The primary key for this table is **arn**.
6+
7+
8+
## Columns
9+
| Name | Type |
10+
| ------------- | ------------- |
11+
|_cq_source_name|String|
12+
|_cq_sync_time|Timestamp|
13+
|_cq_id|UUID|
14+
|_cq_parent_id|UUID|
15+
|account_id|String|
16+
|region|String|
17+
|tags|JSON|
18+
|arn (PK)|String|
19+
|creation_date|Timestamp|
20+
|last_modification_date|Timestamp|
21+
|name|String|
22+
|state|String|
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Table: aws_scheduler_schedules
2+
3+
https://docs.aws.amazon.com/scheduler/latest/APIReference/API_GetScheduleOutput.html
4+
5+
The primary key for this table is **arn**.
6+
7+
8+
## Columns
9+
| Name | Type |
10+
| ------------- | ------------- |
11+
|_cq_source_name|String|
12+
|_cq_sync_time|Timestamp|
13+
|_cq_id|UUID|
14+
|_cq_parent_id|UUID|
15+
|account_id|String|
16+
|region|String|
17+
|tags|JSON|
18+
|arn (PK)|String|
19+
|creation_date|Timestamp|
20+
|description|String|
21+
|end_date|Timestamp|
22+
|flexible_time_window|JSON|
23+
|group_name|String|
24+
|kms_key_arn|String|
25+
|last_modification_date|Timestamp|
26+
|name|String|
27+
|schedule_expression|String|
28+
|schedule_expression_timezone|String|
29+
|start_date|Timestamp|
30+
|state|String|
31+
|target|JSON|

plugins/source/aws/go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ require (
7575
github.com/aws/aws-sdk-go-v2/service/s3 v1.29.2
7676
github.com/aws/aws-sdk-go-v2/service/s3control v1.25.1
7777
github.com/aws/aws-sdk-go-v2/service/sagemaker v1.54.0
78+
github.com/aws/aws-sdk-go-v2/service/scheduler v1.0.1
7879
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.5
7980
github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.14.19
8081
github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.14.3

0 commit comments

Comments
 (0)