Skip to content

Commit 394205f

Browse files
tas50claude
andcommitted
⭐ Expand Redshift and EMR with subnet groups, events, steps, and more
Redshift additions (4 new top-level resources): - subnetGroup: cluster subnet groups with VPC, subnets, and status - eventSubscription: SNS event notifications with categories and severity - scheduledAction: scheduled resize/pause/resume with cron schedules - snapshotSchedule: automated snapshot schedule definitions EMR additions (1 account-level + 3 per-cluster resources): - blockPublicAccessConfiguration: account-level security setting - step: cluster job steps with status, JAR, args, and timeline - instanceGroup: cluster topology (MASTER/CORE/TASK) with instance types - bootstrapAction: initialization scripts with args Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a60836a commit 394205f

File tree

6 files changed

+2055
-3
lines changed

6 files changed

+2055
-3
lines changed

providers/aws/resources/aws.lr

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3801,6 +3801,8 @@ private aws.ecs.taskDefinition.ephemeralStorage {
38013801
aws.emr {
38023802
// List of EMR clusters
38033803
clusters() []aws.emr.cluster
3804+
// Block public access configuration (account-level)
3805+
blockPublicAccessConfiguration() dict
38043806
}
38053807

38063808
// Amazon EMR cluster
@@ -3833,6 +3835,12 @@ private aws.emr.cluster @defaults("arn") {
38333835
masterPublicDnsName() string
38343836
// KMS key used for log encryption
38353837
logEncryptionKmsKey() aws.kms.key
3838+
// Steps associated with the cluster
3839+
steps() []aws.emr.cluster.step
3840+
// Instance groups in the cluster
3841+
instanceGroups() []aws.emr.cluster.instanceGroup
3842+
// Bootstrap actions for the cluster
3843+
bootstrapActions() []aws.emr.cluster.bootstrapAction
38363844
}
38373845

38383846
// EMR cluster encryption configuration from the security configuration
@@ -3847,6 +3855,62 @@ private aws.emr.cluster.encryptionConfiguration @defaults("atRestEnabled inTrans
38473855
inTransitConfiguration dict
38483856
}
38493857

3858+
// Amazon EMR cluster step
3859+
private aws.emr.cluster.step @defaults("name status") {
3860+
// Step identifier
3861+
id string
3862+
// Step name
3863+
name string
3864+
// Action to take on failure: TERMINATE_CLUSTER, CANCEL_AND_WAIT, CONTINUE
3865+
actionOnFailure string
3866+
// Step execution state: PENDING, CANCEL_PENDING, RUNNING, COMPLETED, CANCELLED, FAILED, INTERRUPTED
3867+
status string
3868+
// Path to the JAR file for the step
3869+
jar string
3870+
// Arguments passed to the step
3871+
args []string
3872+
// When the step was created
3873+
createdAt time
3874+
// When the step started running
3875+
startedAt time
3876+
// When the step finished
3877+
endedAt time
3878+
}
3879+
3880+
// Amazon EMR cluster instance group
3881+
private aws.emr.cluster.instanceGroup @defaults("name instanceGroupType instanceType") {
3882+
// Instance group identifier
3883+
id string
3884+
// Instance group name
3885+
name string
3886+
// Group type: MASTER, CORE, TASK
3887+
instanceGroupType string
3888+
// EC2 instance type (e.g., m5.xlarge)
3889+
instanceType string
3890+
// Market type: ON_DEMAND, SPOT
3891+
market string
3892+
// Target number of instances
3893+
requestedInstanceCount int
3894+
// Currently running instances
3895+
runningInstanceCount int
3896+
// Instance group state
3897+
status string
3898+
// Spot bid price (if market is SPOT)
3899+
bidPrice string
3900+
// Whether EBS optimization is enabled
3901+
ebsOptimized bool
3902+
}
3903+
3904+
// Amazon EMR cluster bootstrap action
3905+
private aws.emr.cluster.bootstrapAction @defaults("name scriptPath") {
3906+
// Bootstrap action name
3907+
name string
3908+
// Path to the bootstrap script (S3 or local)
3909+
scriptPath string
3910+
// Arguments passed to the bootstrap script
3911+
args []string
3912+
}
3913+
38503914
// Amazon EventBridge
38513915
aws.eventbridge @defaults("eventBuses") {
38523916
// List of EventBridge event buses
@@ -5663,6 +5727,14 @@ private aws.elasticache.serverlessCache @defaults("name description status engin
56635727
aws.redshift @defaults("clusters") {
56645728
// List of clusters
56655729
clusters() []aws.redshift.cluster
5730+
// List of cluster subnet groups
5731+
subnetGroups() []aws.redshift.subnetGroup
5732+
// List of event notification subscriptions
5733+
eventSubscriptions() []aws.redshift.eventSubscription
5734+
// List of scheduled actions (resize, pause, resume)
5735+
scheduledActions() []aws.redshift.scheduledAction
5736+
// List of snapshot schedules
5737+
snapshotSchedules() []aws.redshift.snapshotSchedule
56665738
}
56675739

56685740
// Amazon Redshift cluster
@@ -5794,6 +5866,90 @@ private aws.redshift.snapshot @defaults("arn clusterIdentifier status createdAt"
57945866
kmsKey() aws.kms.key
57955867
}
57965868

5869+
// Amazon Redshift cluster subnet group
5870+
private aws.redshift.subnetGroup @defaults("name status") {
5871+
// Subnet group name
5872+
name string
5873+
// Description of the subnet group
5874+
description string
5875+
// Region where the subnet group exists
5876+
region string
5877+
// Status of the subnet group (e.g., Complete)
5878+
status string
5879+
// Subnets in this group
5880+
subnets []dict
5881+
// Supported cluster IP address types
5882+
supportedClusterIpAddressTypes []string
5883+
// VPC associated with this subnet group
5884+
vpc() aws.vpc
5885+
// Tags for the subnet group
5886+
tags map[string]string
5887+
}
5888+
5889+
// Amazon Redshift event notification subscription
5890+
private aws.redshift.eventSubscription @defaults("name status") {
5891+
// Subscription name
5892+
name string
5893+
// Region where the subscription exists
5894+
region string
5895+
// Whether the subscription is enabled
5896+
enabled bool
5897+
// List of event categories for the subscription
5898+
eventCategories []string
5899+
// Event severity filter (ERROR or INFO)
5900+
severity string
5901+
// ARN of the SNS topic for notifications
5902+
snsTopicArn string
5903+
// List of source IDs the subscription applies to
5904+
sourceIds []string
5905+
// Type of source (cluster, cluster-snapshot, cluster-parameter-group, cluster-security-group, scheduled-action)
5906+
sourceType string
5907+
// Subscription status (active, no-permission, topic-not-exist)
5908+
status string
5909+
// When the subscription was created
5910+
createdAt time
5911+
// Tags for the subscription
5912+
tags map[string]string
5913+
}
5914+
5915+
// Amazon Redshift scheduled action (resize, pause, resume)
5916+
private aws.redshift.scheduledAction @defaults("name state") {
5917+
// Scheduled action name
5918+
name string
5919+
// Region where the action exists
5920+
region string
5921+
// Description of the scheduled action
5922+
description string
5923+
// Cron-like schedule expression
5924+
schedule string
5925+
// State of the action: ACTIVE, DISABLED
5926+
state string
5927+
// IAM role ARN used to run the action
5928+
iamRole string
5929+
// Start time of the action schedule
5930+
startTime time
5931+
// End time of the action schedule
5932+
endTime time
5933+
// Target action details (resize, pause, or resume parameters)
5934+
targetAction dict
5935+
}
5936+
5937+
// Amazon Redshift snapshot schedule
5938+
private aws.redshift.snapshotSchedule @defaults("id description") {
5939+
// Schedule identifier
5940+
id string
5941+
// Region where the schedule exists
5942+
region string
5943+
// Description of the schedule
5944+
description string
5945+
// List of cron-like schedule definitions
5946+
scheduleDefinitions []string
5947+
// Number of clusters associated with this schedule
5948+
associatedClusterCount int
5949+
// Tags for the schedule
5950+
tags map[string]string
5951+
}
5952+
57975953
// Amazon Route 53 DNS service
57985954
aws.route53 {
57995955
// List of all hosted zones in the account

0 commit comments

Comments
 (0)