Terraform service catalog from sigle to multiple shares, existing account share lost

previous code:

resource "aws_servicecatalog_portfolio_share" "this_share" {
  principal_id = "123456789"
  portfolio_id = aws_servicecatalog_portfolio.this_portfolio.id
  type         = "ACCOUNT"
}

Change to:

resource "aws_servicecatalog_portfolio_share" "this_share" {
  for_each     = ["4567890123","123456789","0987654321"]
  principal_id = each.value
  portfolio_id = aws_servicecatalog_portfolio.this_portfolio.id
  type         = "ACCOUNT"
}

Output from “terraform plan”:

aws_servicecatalog_portfolio_share.this_share will be destroyed

(because resource uses count or for_each)

  • resource “aws_servicecatalog_portfolio_share” “this_share” {
  • accept_language = “en” → null
  • accepted = true → null
  • id = “port-asdfhlkaswre:ACCOUNT:123456789” → null
  • portfolio_id = “port-asdfhlkaswre” → null
  • principal_id = “123456789” → null
  • share_principals = false → null
  • share_tag_options = false → null
  • type = “ACCOUNT” → null
  • wait_for_acceptance = false → null

aws_servicecatalog_portfolio_share.this_share[“123456789”] will be created

  • resource “aws_servicecatalog_portfolio_share” “this_share” {
  • accept_language = “en”
  • accepted = (known after apply)
  • id = (known after apply)
  • portfolio_id = “port-asdfhlkaswre”
  • principal_id = “123456789”
  • share_principals = false
  • share_tag_options = false
  • type = “ACCOUNT”
  • wait_for_acceptance = false

What happened:
shares for both “4567890123” & “0987654321” accounts are created but share for “123456789” account not created.

My question: what might we did wrong? thanks