diff --git a/content/GCP/08_cleaning_up_resources.ipynb b/content/GCP/08_cleaning_up_resources.ipynb index ba4d367..719d73c 100644 --- a/content/GCP/08_cleaning_up_resources.ipynb +++ b/content/GCP/08_cleaning_up_resources.ipynb @@ -148,6 +148,234 @@ "source": [ "gsutil rb \"gs://$BUCKET/\"" ] + }, + { + "cell_type": "markdown", + "id": "710e1e23-1d97-4151-8342-e2f1dae7ebae", + "metadata": {}, + "source": [ + "## Enumerate Allocated Resources\n", + "\n", + "Once we are finished cleaning up we should always make sure that only the resources that we are expecting exist. We can do this by listing (and sorting) the name of all resources. For more information on how to filter this information see `gcloud asset search-all-resources --help`" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "4d3c8009-13f4-46f4-8e70-f56e07f23022", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "//appengine.googleapis.com/apps/just-armor-301114\n", + "//bigquery.googleapis.com/projects/just-armor-301114/datasets/SAFE_Billing\n", + "//bigquery.googleapis.com/projects/just-armor-301114/datasets/SAFE_Billing/tables/cloud_pricing_export\n", + "//bigquery.googleapis.com/projects/just-armor-301114/datasets/SAFE_Billing/tables/gcp_billing_export_v1_01FBF6_A0C37F_BD97C8\n", + "//cloudresourcemanager.googleapis.com/projects/just-armor-301114\n", + "//compute.googleapis.com/projects/just-armor-301114\n", + "//compute.googleapis.com/projects/just-armor-301114/global/firewalls/default-allow-external\n", + "//compute.googleapis.com/projects/just-armor-301114/global/firewalls/default-allow-internal\n", + "//compute.googleapis.com/projects/just-armor-301114/global/networks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-0000b6ff60f03d39\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-04527aad1dc68ba3\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-0a9c3511d5fde3a0\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-152e083cc3d9866c\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-18c5ea15fd1e1c77\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-1ea09ef1b4249b95\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-248907bb31d5f332\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-2ca49decdf294654\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-2d7f0c3c43f9986b\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-36330af3625f2f9b\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-418210f83a5f5129\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-44b26b93f87c2aa1\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-65ae37e2fa124af4\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-6a36f032fa39b0d1\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-754acaac4e9ceebf\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-89050952e3f15ab6\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-8da07c13a493105b\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-92b7aad194016d2e\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-937859cd4a63de11\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-aa97a17d047c7d7c\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-b56032d1d4293846\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-bb110bcf9c50a4b8\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-bf2c27e140403594\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-d4179c98b861ac6a\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-e15ed35dfe589f3b\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-f2b2bf4b3f8e911d\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-f63a6424d9132751\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-fc50dca396d481db\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-fe01d8fe27c6002f\n", + "//compute.googleapis.com/projects/just-armor-301114/global/routes/default-route-fe35693f70ad8f98\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-east1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-east2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-northeast1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-northeast2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-northeast3/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-south1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-south2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-southeast1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/asia-southeast2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/australia-southeast1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/australia-southeast2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/europe-central2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/europe-north1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/europe-west1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/europe-west2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/europe-west3/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/europe-west4/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/europe-west6/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/northamerica-northeast1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/northamerica-northeast2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/southamerica-east1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/southamerica-west1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/us-central1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/us-east1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/us-east4/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/us-west1/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/us-west2/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/us-west3/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/regions/us-west4/subnetworks/default\n", + "//compute.googleapis.com/projects/just-armor-301114/zones/us-west2-c/disks/essentials\n", + "//compute.googleapis.com/projects/just-armor-301114/zones/us-west2-c/instances/essentials\n", + "//dns.googleapis.com/projects/just-armor-301114/managedZones/5691889021211349439\n", + "//iam.googleapis.com/projects/just-armor-301114/serviceAccounts/1002111293252-compute@developer.gserviceaccount.com\n", + "//iam.googleapis.com/projects/just-armor-301114/serviceAccounts/103590716426375679369/keys/70c1222df340394e7b9abf2563d5bd3aeba39036\n", + "//iam.googleapis.com/projects/just-armor-301114/serviceAccounts/103590716426375679369/keys/8fb390e7e246d8927e66d82cc0e449e8d516136d\n", + "//iam.googleapis.com/projects/just-armor-301114/serviceAccounts/107653990538909188092/keys/5985a239b00c93d821f39f7ed9576edeb306ee95\n", + "//iam.googleapis.com/projects/just-armor-301114/serviceAccounts/113723756436176252801/keys/187b16664e3595707c46c131e29edadb1046589a\n", + "//iam.googleapis.com/projects/just-armor-301114/serviceAccounts/just-armor-301114@appspot.gserviceaccount.com\n", + "//iam.googleapis.com/projects/just-armor-301114/serviceAccounts/zero-home-terraform-mac@just-armor-301114.iam.gserviceaccount.com\n", + "//pubsub.googleapis.com/projects/just-armor-301114/topics/Bucket\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/artifactregistry.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/bigquery.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/bigquerydatatransfer.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/bigquerystorage.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/billingbudgets.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudapis.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudasset.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudbilling.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudbuild.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/clouddebugger.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudfunctions.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudprofiler.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudresourcemanager.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudshell.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/cloudtrace.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/composer.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/compute.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/container.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/containerregistry.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/datastore.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/deploymentmanager.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/dns.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/eventarc.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/file.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/iam.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/iamcredentials.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/iap.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/lifesciences.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/logging.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/monitoring.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/oslogin.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/privateca.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/pubsub.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/run.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/runtimeconfig.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/secretmanager.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/servicemanagement.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/serviceusage.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/source.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/sourcerepo.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/sql-component.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/sqladmin.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/stackdriver.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/storage-api.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/storage-component.googleapis.com\n", + "//serviceusage.googleapis.com/projects/1002111293252/services/storage.googleapis.com\n", + "//storage.googleapis.com/essentials-learner-2021-12-13\n" + ] + } + ], + "source": [ + "gcloud asset search-all-resources --format='value(name)' | sort" + ] + }, + { + "cell_type": "markdown", + "id": "3fd12c02-0314-4bec-bd93-2dda99758427", + "metadata": {}, + "source": [ + "This is a lot information and most of it (services, networks, routes etc.) is at no or minimal charge. We can also list by resource \"Type\". Just remember, as you use a new service to add the corresponding resource type and verify that it is listed here." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "5d09ed2a-152f-4040-9253-196a22301584", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "//storage.googleapis.com/essentials-learner-2021-12-13\n", + "//compute.googleapis.com/projects/just-armor-301114/zones/us-west2-c/instances/essentials\n", + "//compute.googleapis.com/projects/just-armor-301114/zones/us-west2-c/disks/essentials\n" + ] + } + ], + "source": [ + "gcloud asset search-all-resources --asset-types='compute.googleapis.com/Disk,compute.googleapis.com/Instance,storage.googleapis.com/Bucket' --format='value(name)'" + ] + }, + { + "cell_type": "markdown", + "id": "c22bc303-cadd-4f12-9cbf-eee7f38466a2", + "metadata": {}, + "source": [ + "We can also remove common resources that have little or no cost." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "d55d5643-26d5-4820-b166-75e619b46ab1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "//appengine.googleapis.com/apps/just-armor-301114\n", + "//bigquery.googleapis.com/projects/just-armor-301114/datasets/SAFE_Billing\n", + "//bigquery.googleapis.com/projects/just-armor-301114/datasets/SAFE_Billing/tables/cloud_pricing_export\n", + "//bigquery.googleapis.com/projects/just-armor-301114/datasets/SAFE_Billing/tables/gcp_billing_export_v1_01FBF6_A0C37F_BD97C8\n", + "//cloudresourcemanager.googleapis.com/projects/just-armor-301114\n", + "//compute.googleapis.com/projects/just-armor-301114\n", + "//compute.googleapis.com/projects/just-armor-301114/zones/us-west2-c/disks/essentials\n", + "//compute.googleapis.com/projects/just-armor-301114/zones/us-west2-c/instances/essentials\n", + "//dns.googleapis.com/projects/just-armor-301114/managedZones/5691889021211349439\n", + "//pubsub.googleapis.com/projects/just-armor-301114/topics/Bucket\n", + "//storage.googleapis.com/essentials-learner-2021-12-13\n" + ] + } + ], + "source": [ + "gcloud asset search-all-resources --format='value(name)' |grep -vE '/(services|networks|routes|subnetworks|firewalls|serviceAccounts)/' | sort" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4257fd1f-d713-45d5-8121-9a666e055274", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {