ОК, у меня сработало следующее:
gcloud projects create ${PROJECT}
gcloud iam service-accounts create ${ROBOT} --project=${PROJECT}
ID=$(\
gcloud iam service-accounts describe \
${ROBOT}@${PROJECT}.iam.gserviceaccount.com \
--project=${PROJECT} \
--format="value(uniqueId)") && echo ${ID}
gcloud iam service-accounts delete ${ROBOT}@${PROJECT}.iam.gserviceaccount.com \
--project=${PROJECT}
gcloud alpha iam service-accounts undelete ${ID} --project=${PROJECT}
выход:
restoredAccount:
email: ${ROBOT}@${PROJECT}.iam.gserviceaccount.com
etag: ...
name: projects/${PROJECT}/serviceAccounts/${ROBOT}@${PROJECT}.iam.gserviceaccount.com
oauth2ClientId: '${ID}'
projectId: ${PROJECT}
uniqueId: '${ID}'
Я тоже пробовал это на учетной записи Compute Engine по умолчанию, думая, что она может вести себя по-другому, но это Также восстанавливается:
NUM=$(gcloud projects describe ${PROJECT} \
--format="value(projectNumber)")
ID=$(\
gcloud iam service-accounts describe \
${NUM}-compute@developer.gserviceaccount.com \
--project=${PROJECT} \
--format="value(uniqueId)") && echo ${ID}
gcloud iam service-accounts delete ${NUM}-compute@developer.gserviceaccount.com \
--project=${PROJECT}
gcloud alpha iam service-accounts undelete ${ID} --project=${PROJECT}
Подано FR с помощью средства отслеживания проблем Google, поскольку, как представляется, нет способа (!?) перечислить удаленные учетные записи служб, чтобы найти уникальный идентификатор после удаление учетной записи.