diff --git a/pkg/convertor.go b/pkg/convertor.go index 8f7fcf7..8efa0e0 100644 --- a/pkg/convertor.go +++ b/pkg/convertor.go @@ -50,6 +50,8 @@ func computeResourceID(resource parser.TerraformResource) string { return fmt.Sprintf("%s/%s/%s", getValue("rest_api_id"), getValue("resource_id"), getValue("http_method")) case "aws_route_table_association": return fmt.Sprintf("%s/%s", getValue("subnet_id"), getValue("route_table_id")) + case "aws_iam_user_policy_attachment": + return fmt.Sprintf("%s/%s", getValue("user"), getValue("policy_arn")) default: return getValue("id") } diff --git a/pkg/convertor_test.go b/pkg/convertor_test.go index 48f7a95..2d8bb3f 100644 --- a/pkg/convertor_test.go +++ b/pkg/convertor_test.go @@ -215,6 +215,22 @@ func Test_ComputeTerraformImportForResource(t *testing.T) { SupportsImport: true, }, }, + { + name: "For aws_iam_user_policy_attachment", + terraformResource: parser.TerraformResource{ + Address: "aws_iam_user_policy_attachment.test", + Type: "aws_iam_user_policy_attachment", + AttributeValues: map[string]any{ + "policy_arn": "policy_arn", + "user": "user", + }, + }, + expected: TerraformImport{ + ResourceAddress: "aws_iam_user_policy_attachment.test", + ResourceID: "user/policy_arn", + SupportsImport: true, + }, + }, { name: "For everything else", terraformResource: parser.TerraformResource{