diff --git a/pkg/convertor.go b/pkg/convertor.go index 385b4fd..838e3c6 100644 --- a/pkg/convertor.go +++ b/pkg/convertor.go @@ -76,11 +76,20 @@ func computeResourceID(resource parser.TerraformResource) string { return fmt.Sprintf("%s/%s/%s", v("service_namespace"), v("resource_id"), v("scalable_dimension")) case "aws_appautoscaling_policy": return fmt.Sprintf("%s/%s/%s/%s", v("service_namespace"), v("resource_id"), v("scalable_dimension"), v("name")) + case "aws_ecs_service": + return fmt.Sprintf("%s/%s", getEcsClusterNameFromARN(v("cluster")), v("name")) default: return v("id") } } +func getEcsClusterNameFromARN(arn string) string { + if parts := strings.Split(arn, "/"); len(parts) == 2 { + return parts[1] + } + return "" +} + func computeResourceIDForAWSSecurityGroupRole(resource parser.TerraformResource) string { // Required Fields securityGroupId := fmt.Sprint(resource.AttributeValues["security_group_id"]) diff --git a/pkg/convertor_test.go b/pkg/convertor_test.go index 915ba22..eba1d39 100644 --- a/pkg/convertor_test.go +++ b/pkg/convertor_test.go @@ -413,6 +413,22 @@ func Test_ComputeTerraformImportForResource(t *testing.T) { SupportsImport: true, }, }, + { + name: "For aws_ecs_service", + terraformResource: parser.TerraformResource{ + Address: "aws_ecs_service.test", + Type: "aws_ecs_service", + AttributeValues: map[string]any{ + "name": "service_name", + "cluster": "arn:aws:ecs:us-west-2:0123456789:cluster/cluster_name", + }, + }, + expected: TerraformImport{ + ResourceAddress: "aws_ecs_service.test", + ResourceID: "cluster_name/service_name", + SupportsImport: true, + }, + }, { name: "For everything else", terraformResource: parser.TerraformResource{