diff --git a/content/GCP/07_monitoring_costs.ipynb b/content/GCP/07_monitoring_costs.ipynb index e971611..e4d1f57 100644 --- a/content/GCP/07_monitoring_costs.ipynb +++ b/content/GCP/07_monitoring_costs.ipynb @@ -23,13 +23,197 @@ "```" ] }, + { + "cell_type": "markdown", + "id": "cdfc0b3b-8bc3-44a3-a712-1005531c9d30", + "metadata": {}, + "source": [ + "## Enumerate Allocated Resources\n", + "\n", + "Before we clean up we should always make sure that we can see the resources we created and that after destroying them they are actually removed. This is the most powerful tool for managing cost as it gives a real-time indication on what is running.\n", + "\n", + "We can do this by listing the name of all resources (you can also get all the details for every resource). For more information on how to filter this information see `gcloud asset search-all-resources --help`. **Note: The resource list updates are often delayed.**" + ] + }, + { + "cell_type": "markdown", + "id": "18482bf1-c059-4946-b540-10022abab8c3", + "metadata": {}, + "source": [ + "First, we just list every single resource and sort it." + ] + }, { "cell_type": "code", - "execution_count": null, - "id": "1c5f78a5-ec20-46a8-9fc4-eb8fcc6c4482", + "execution_count": 4, + "id": "bee03b96-53f6-47c0-bcbf-0bf73fe99f73", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "//cloudresourcemanager.googleapis.com/projects/essentials-project-335018\n", + "//compute.googleapis.com/projects/essentials-project-335018\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/firewalls/default-allow-icmp\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/firewalls/default-allow-internal\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/firewalls/default-allow-rdp\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/firewalls/default-allow-ssh\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/networks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-026a26ff3e7b8291\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-0de54427d8115731\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-25e455ae2742fadd\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-29f6f8e5afe7eec3\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-2e031a808fb5c309\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-2f64262dcf6c2b01\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-35affd8ef359d282\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-3e179d55aa7a9312\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-4d0f16a3e97fd5ff\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-652acc5329dbfeae\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-6a75a97222655f3a\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-7d67fd6f0db9e78d\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-92f4928b25f3339f\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-93f19fa060dd07b0\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-951072b4e7869d60\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-9647a69124af3a9d\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-9aad70cb0a157c15\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-a1756848ee4c91f9\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-a8406cb97cda576b\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-bc1a73e144b265a1\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-beb7cf2071614bc7\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-d6d7479aa3edfbaa\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-e1998a2a25002f09\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-e2db952ee9e05045\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-e8baa00ef9d1f1ec\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-e97a548861a5bb5d\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-efb583a306f2e63e\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-f534dbfe59970bd5\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-fc29d50e7bb3cad4\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-fc66c490b29216e2\n", + "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-fcea5cc3384e3a2c\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-east1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-east2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-northeast1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-northeast2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-northeast3/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-south1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-south2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-southeast1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-southeast2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/australia-southeast1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/australia-southeast2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-central2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-north1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west3/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west4/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west6/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/northamerica-northeast1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/northamerica-northeast2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/southamerica-east1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/southamerica-west1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/us-central1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/us-east1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/us-east4/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/us-east7/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/us-west1/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/us-west2/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/us-west3/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/regions/us-west4/subnetworks/default\n", + "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/disks/essentials\n", + "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/instances/essentials\n", + "//iam.googleapis.com/projects/essentials-project-335018/serviceAccounts/281138444384-compute@developer.gserviceaccount.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/bigquery.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/bigquerystorage.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/cloudapis.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/cloudasset.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/clouddebugger.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/cloudtrace.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/compute.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/datastore.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/logging.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/monitoring.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/oslogin.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/servicemanagement.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/serviceusage.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/sql-component.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/storage-api.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/storage-component.googleapis.com\n", + "//serviceusage.googleapis.com/projects/281138444384/services/storage.googleapis.com\n" + ] + } + ], + "source": [ + "gcloud asset search-all-resources --format='value(name)' | sort" + ] + }, + { + "cell_type": "markdown", + "id": "ee12bccd-5bcb-4b4f-8a31-9d0ae14b07c4", "metadata": {}, - "outputs": [], - "source": [] + "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. It is important to always ensure that you see a resource before you remove it so you can use the command (stored in a script) in the future." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7ac47880-3760-4da0-a56d-8d59a0a51f24", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/instances/essentials\n", + "//compute.googleapis.com/projects/essentials-project-335018/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": "7902e352-b833-49d0-bdfc-959236bdd888", + "metadata": {}, + "source": [ + "We can also approach the problem from another direction by removing known common resources that have little or no cost." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "57caf876-c8b0-4263-bb96-19adcbba779a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "//cloudresourcemanager.googleapis.com/projects/essentials-project-335018\n", + "//compute.googleapis.com/projects/essentials-project-335018\n", + "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/disks/essentials\n", + "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/instances/essentials\n" + ] + } + ], + "source": [ + "gcloud asset search-all-resources --format='value(name)' |grep -vE '/(services|networks|routes|subnetworks|firewalls|serviceAccounts)/' | sort" + ] + }, + { + "cell_type": "markdown", + "id": "d63531f1-160d-48b5-8aff-c7d92f97d34a", + "metadata": {}, + "source": [ + "Now we can see that the list of resources is what we expect. Of interest here is the \"disk\" associated with the virtual machine. If these are not removed as well they can run up costs if you don't know where to look." + ] } ], "metadata": { diff --git a/content/GCP/08_cleaning_up_resources.ipynb b/content/GCP/08_cleaning_up_resources.ipynb index a72364d..4ad5883 100644 --- a/content/GCP/08_cleaning_up_resources.ipynb +++ b/content/GCP/08_cleaning_up_resources.ipynb @@ -18,11 +18,61 @@ " * \n", "\n", "**Objectives:**\n", - " * \n", + " * This Episode is used to cleanup resources created by the Lesson.\n", "\n", "```" ] }, + { + "cell_type": "markdown", + "id": "7621ba3b-c110-48aa-8300-14bbe5ee845f", + "metadata": {}, + "source": [ + "## Enumerating Existing Resources\n", + "\n", + "We will first use the method from the previous lesson (see if you can do this on your own first) to check which resources are currently running so we can verify that they get removed." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c8ee7307-4ed5-437f-b4e2-400b64190399", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/instances/essentials\n", + "//compute.googleapis.com/projects/essentials-project-335018/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": "code", + "execution_count": 6, + "id": "67f75321-d684-4930-bd16-8112d4ced868", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "//cloudresourcemanager.googleapis.com/projects/essentials-project-335018\n", + "//compute.googleapis.com/projects/essentials-project-335018\n", + "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/disks/essentials\n", + "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/instances/essentials\n" + ] + } + ], + "source": [ + "gcloud asset search-all-resources --format='value(name)' |grep -vE '/(services|networks|routes|subnetworks|firewalls|serviceAccounts)/' | sort" + ] + }, { "cell_type": "markdown", "id": "d43bd86d-acf7-416a-9b35-506f5625f2c3", @@ -30,15 +80,26 @@ "source": [ "## Cleanup Buckets\n", "\n", - "This Episode is used to cleanup resources created by the Lesson. Note, this will clean buckets created on any day.\n", - "\n", "First set the environment variables and verify them. If they are previously set you can just verify them." ] }, { "cell_type": "code", - "execution_count": 1, - "id": "86c5804d-b8ae-49d8-b67c-61360a922590", + "execution_count": 9, + "id": "03226ee4-00d3-4944-b60c-bd1ad62f1077", + "metadata": {}, + "outputs": [], + "source": [ + "ACCOUNT=$(gcloud config list --format='value(core.account)')\n", + "PROJECT=$(gcloud config list --format='value(core.project)')\n", + "BUCKET=\"essentials-${USER}-*\"\n", + "REGION=\"us-west2\"" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "75bf0dd4-4a62-497a-b491-2bc80285aa44", "metadata": {}, "outputs": [ { @@ -51,25 +112,23 @@ } ], "source": [ - "ACCOUNT=$(gcloud config list --format='value(core.account)')\n", - "PROJECT=$(gcloud config list --format='value(core.project)')\n", - "BUCKET=\"essentials-${USER}-*\"\n", - "REGION=\"us-west2\"\n", "echo \"Account: $ACCOUNT, Project: $PROJECT, Region: $REGION\"\n", "echo \"Bucket: $BUCKET\"" ] }, { "cell_type": "markdown", - "id": "218cc720-bf36-49a4-b98a-11024f5b391c", + "id": "b4b93fcb-d72b-4b7c-ab40-5e5ad83fce86", "metadata": {}, "source": [ - "List the buckets we will be deleting." + "## Cleanup Buckets\n", + "\n", + "We will now list the buckets that we will be deleting. Note the wild-card (GLOB) from above will match all dates (and all strings)." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 11, "id": "93add660-5bdb-4393-a05a-031ec301d7f8", "metadata": {}, "outputs": [], @@ -95,7 +154,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 12, "id": "24616c20-ae7e-4d0f-9f9c-6c8752891fa7", "metadata": {}, "outputs": [ @@ -151,128 +210,18 @@ }, { "cell_type": "markdown", - "id": "710e1e23-1d97-4151-8342-e2f1dae7ebae", + "id": "4bf0ed5b-b4f3-4061-ae65-50bf9d2500f7", "metadata": {}, "source": [ - "## Enumerate Allocated Resources\n", + "## Enumerating 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": 6, - "id": "4d3c8009-13f4-46f4-8e70-f56e07f23022", - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "//cloudresourcemanager.googleapis.com/projects/essentials-project-335018\n", - "//compute.googleapis.com/projects/essentials-project-335018\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/firewalls/default-allow-icmp\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/firewalls/default-allow-internal\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/firewalls/default-allow-rdp\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/firewalls/default-allow-ssh\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/networks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-026a26ff3e7b8291\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-0de54427d8115731\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-25e455ae2742fadd\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-29f6f8e5afe7eec3\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-2e031a808fb5c309\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-2f64262dcf6c2b01\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-35affd8ef359d282\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-4d0f16a3e97fd5ff\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-652acc5329dbfeae\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-6a75a97222655f3a\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-7d67fd6f0db9e78d\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-92f4928b25f3339f\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-93f19fa060dd07b0\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-951072b4e7869d60\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-9647a69124af3a9d\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-9aad70cb0a157c15\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-a1756848ee4c91f9\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-a8406cb97cda576b\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-bc1a73e144b265a1\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-beb7cf2071614bc7\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-d6d7479aa3edfbaa\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-e1998a2a25002f09\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-e2db952ee9e05045\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-e8baa00ef9d1f1ec\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-e97a548861a5bb5d\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-efb583a306f2e63e\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-f534dbfe59970bd5\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-fc29d50e7bb3cad4\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-fc66c490b29216e2\n", - "//compute.googleapis.com/projects/essentials-project-335018/global/routes/default-route-fcea5cc3384e3a2c\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-east1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-east2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-northeast1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-northeast2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-northeast3/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-south1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-south2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-southeast1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/asia-southeast2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/australia-southeast1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/australia-southeast2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-central2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-north1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west3/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west4/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/europe-west6/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/northamerica-northeast1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/northamerica-northeast2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/southamerica-east1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/southamerica-west1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/us-central1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/us-east1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/us-east4/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/us-west1/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/us-west2/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/us-west3/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/regions/us-west4/subnetworks/default\n", - "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/disks/essentials\n", - "//compute.googleapis.com/projects/essentials-project-335018/zones/us-west2-c/instances/essentials\n", - "//iam.googleapis.com/projects/essentials-project-335018/serviceAccounts/281138444384-compute@developer.gserviceaccount.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/bigquery.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/bigquerystorage.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/clouddebugger.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/cloudtrace.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/compute.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/datastore.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/logging.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/servicemanagement.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/serviceusage.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/sql-component.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/storage-api.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/storage-component.googleapis.com\n", - "//serviceusage.googleapis.com/projects/281138444384/services/storage.googleapis.com\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." + "Now we will check that all the resources were removed." ] }, { "cell_type": "code", "execution_count": 7, - "id": "5d09ed2a-152f-4040-9253-196a22301584", + "id": "b088681d-633d-4991-ba7d-2ecfb41c36dd", "metadata": {}, "outputs": [ { @@ -288,18 +237,10 @@ "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": 8, - "id": "d55d5643-26d5-4820-b166-75e619b46ab1", + "id": "74d0e8e7-f097-41c5-88fe-929edcb0c1c1", "metadata": {}, "outputs": [ { @@ -316,14 +257,6 @@ "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": {