diff --git a/.changelog/30360.txt b/.changelog/30360.txt new file mode 100644 index 000000000000..ed88e90857c4 --- /dev/null +++ b/.changelog/30360.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_scheduler_schedule: Mark `arn` property of `dead_letter_config` as a required property +``` diff --git a/internal/service/scheduler/flex.go b/internal/service/scheduler/flex.go index e6a904d57dfd..e98f3038af6f 100644 --- a/internal/service/scheduler/flex.go +++ b/internal/service/scheduler/flex.go @@ -103,7 +103,7 @@ func expandECSParameters(ctx context.Context, tfMap map[string]interface{}) *typ a.LaunchType = types.LaunchType(v) } - if v, ok := tfMap["network_configuration"].([]interface{}); ok && len(v) > 0 { + if v, ok := tfMap["network_configuration"].([]interface{}); ok && len(v) > 0 && v[0] != nil { a.NetworkConfiguration = expandNetworkConfiguration(v[0].(map[string]interface{})) } @@ -611,15 +611,15 @@ func expandTarget(ctx context.Context, tfMap map[string]interface{}) *types.Targ a.Arn = aws.String(v) } - if v, ok := tfMap["dead_letter_config"].([]interface{}); ok && len(v) > 0 { + if v, ok := tfMap["dead_letter_config"].([]interface{}); ok && len(v) > 0 && v[0] != nil { a.DeadLetterConfig = expandDeadLetterConfig(v[0].(map[string]interface{})) } - if v, ok := tfMap["ecs_parameters"].([]interface{}); ok && len(v) > 0 { + if v, ok := tfMap["ecs_parameters"].([]interface{}); ok && len(v) > 0 && v[0] != nil { a.EcsParameters = expandECSParameters(ctx, v[0].(map[string]interface{})) } - if v, ok := tfMap["eventbridge_parameters"].([]interface{}); ok && len(v) > 0 { + if v, ok := tfMap["eventbridge_parameters"].([]interface{}); ok && len(v) > 0 && v[0] != nil { a.EventBridgeParameters = expandEventBridgeParameters(v[0].(map[string]interface{})) } @@ -627,7 +627,7 @@ func expandTarget(ctx context.Context, tfMap map[string]interface{}) *types.Targ a.Input = aws.String(v) } - if v, ok := tfMap["kinesis_parameters"].([]interface{}); ok && len(v) > 0 { + if v, ok := tfMap["kinesis_parameters"].([]interface{}); ok && len(v) > 0 && v[0] != nil { a.KinesisParameters = expandKinesisParameters(v[0].(map[string]interface{})) } @@ -635,15 +635,15 @@ func expandTarget(ctx context.Context, tfMap map[string]interface{}) *types.Targ a.RoleArn = aws.String(v) } - if v, ok := tfMap["retry_policy"].([]interface{}); ok && len(v) > 0 { + if v, ok := tfMap["retry_policy"].([]interface{}); ok && len(v) > 0 && v[0] != nil { a.RetryPolicy = expandRetryPolicy(v[0].(map[string]interface{})) } - if v, ok := tfMap["sagemaker_pipeline_parameters"].([]interface{}); ok && len(v) > 0 { + if v, ok := tfMap["sagemaker_pipeline_parameters"].([]interface{}); ok && len(v) > 0 && v[0] != nil { a.SageMakerPipelineParameters = expandSageMakerPipelineParameters(v[0].(map[string]interface{})) } - if v, ok := tfMap["sqs_parameters"].([]interface{}); ok && len(v) > 0 { + if v, ok := tfMap["sqs_parameters"].([]interface{}); ok && len(v) > 0 && v[0] != nil { a.SqsParameters = expandSQSParameters(v[0].(map[string]interface{})) } diff --git a/internal/service/scheduler/schedule.go b/internal/service/scheduler/schedule.go index 26319537916d..811c45110dd1 100644 --- a/internal/service/scheduler/schedule.go +++ b/internal/service/scheduler/schedule.go @@ -151,7 +151,7 @@ func resourceSchedule() *schema.Resource { Schema: map[string]*schema.Schema{ "arn": { Type: schema.TypeString, - Optional: true, + Required: true, ValidateDiagFunc: validation.ToDiagFunc(verify.ValidARN), }, }, diff --git a/website/docs/r/scheduler_schedule.html.markdown b/website/docs/r/scheduler_schedule.html.markdown index a831ab2c4959..0d63c00ebdbc 100644 --- a/website/docs/r/scheduler_schedule.html.markdown +++ b/website/docs/r/scheduler_schedule.html.markdown @@ -107,7 +107,7 @@ The following arguments are optional: #### dead_letter_config Configuration Block -* `arn` - (Optional) ARN of the SQS queue specified as the destination for the dead-letter queue. +* `arn` - (Required) ARN of the SQS queue specified as the destination for the dead-letter queue. #### ecs_parameters Configuration Block