Google Cloud provides many platforms you can use to host your applications. Your apps can benefit from many powerful services provided by Google Cloud. In this module, you learn how to access these services for your apps and scripts. You learn about Cloud APIs and the Google Cloud SDK, which lets you programmatically include these features in your apps. Cloud Client Libraries provide an optimized developer experience by using each supported language's natural conventions and styles. You also learn about Cloud Code, which will help you develop your Google Cloud applications within integrated development environments. Cloud APIs provide programmatic interfaces to Google Cloud Services. You can use a Google Cloud resource or service in your application by calling a corresponding Cloud API. Cloud APIs let you use powerful features like compute, networking, storage and machine learning in your applications. Cloud APIs can be called by using HTTP requests with JavaScript Objects Notation, or JSON, payloads. They can also be called by using Google Remote Procedure Call, or gRPC, requests. gRPC is an open source, remote procedure call framework that can be run anywhere and uses an efficient binary requests structure. To call Cloud APIs, the caller must supply application credentials. These credentials are validated to ensure that an application is allowed to access your Google Cloud project and resources. The Google Cloud SDK is used to interact with Google Cloud products and services. The SDK features are in two categories: command line-tools and language-specific Cloud Client Libraries. These tools and libraries use Cloud APIs to communicate with Google Cloud. The Google Cloud Command Line Interface, or gcloud CLI, provides tools to manage Google Cloud services from the command line or in automated scripts. These tools provide the functionality of the Cloud APIs in an easy-to-use command-line interface. They automate the process of sending credentials in the Cloud API calls and combine multiple Cloud API calls when required to complete a single common task. You can use the gcloud CLI to perform most tasks allowed by the Cloud APIs. For example, you can manage virtual machines or deploy applications to run on Google Cloud. The gcloud CLI includes three primary command-line tools: gcloud, gsutil, and bq. The gcloud CLI tool lets you perform most common tasks on Google Cloud, including creating and managing resources for many services. This example command, gcloud compute instances list, shows all the Compute Engine virtual machine instances for your project. gsutil is a command-line tool used to manage Cloud Storage. Google's Cloud Storage provides reliable, secure, and highly performant object storage. You can use gsutil to create and manage storage buckets and upload, download, and delete objects. You can also move, copy and rename objects and manage access to stored objects. This gsutil example copies a file from your local machine into a Cloud Storage bucket. bq is a command-line tool for BigQuery, Google Cloud's serverless, highly scalable, and cost-effective data warehouse .bq can be used to manage datasets, tables, and other BigQuery entities, but its primary purpose is running queries. This example query searches for all occurrences of a word in a sample public dataset that contains the complete word index of Shakespeare's works. The Cloud Client Libraries lets you access Google Cloud resources from your applications. Using a Cloud Client Library is easier than making direct API calls. The Cloud Client Libraries provide an optimized developer experience by handling low-level communication with the server, including authentication. They also provide retry logic for transient network failures. These libraries use the natural conventions and style for each of the supported languages. Many libraries also give you performance benefits by automatically calling the gRPC Cloud APIs. Cloud Client Libraries are available for many of the most popular programming languages. Supported languages include Python, Node.js, Java, Go, PHP, Ruby, C++ and the .NET languages including C#. If your application uses any of these languages, you will probably want to use the corresponding Cloud Client Library. Here's an example of using the Python Cloud Client Library to create a Cloud Storage bucket. Every package provides a client that interacts with an API. Your application runs with a particular identity, which is typically a service account. This example imports the Cloud Storage client library, instantiates the client by using the default credentials provided by the service account, and creates a cloud bucket. The Cloud Client Libraries let you easily manage your Google Cloud resources are using the natural style of the language you have chosen. You can download and install the Google Cloud SDK on Linux, macOS X, and Windows. The Google Cloud SDK is initialized by running 'gcloud init'. After it's initialized, you can immediately start using the Google Cloud SDK. You can install and manage SDK components and use the gcloud CLI interactive shell, which provides prompt completion and suggests command options. You can also script gcloud CLI commands to automate your processes. Cloud Shell is a free admin machine with browser-based command-line access that is used from the Google Cloud Console. It provides you with a temporary virtual machine instance that has 5GB of persistent disk storage. When you start Cloud Shell, it provisions a Compute Engine virtual machine that runs a Debian-based Linux operating system. Cloud Shell instances are provisioned on a per-user, per-session basis. The instances persist only while your Cloud Shell session is active and terminate after an hour of inactivity. When a new instance needs to be provisioned, it retains the persistent disk that was used with the previous instance. The Google Cloud SDK comes pre-installed in Cloud Shell with built-in authorization to your Cloud Console projects and resources. Cloud Shell comes with a built-in code editor, based on Theia, that you can use to browse file directories and view and edit files within your VM. You can use Cloud Code to help you develop your cloud applications in your favorite integrated development environment, or IDE. Cloud Code is a set of IDE plugins that make it easier to create, deploy, and debug cloud-native applications for Google Cloud. Cloud Code is available for the Cloud Shell Editor, Visual Studio Code and the JetBrains IDEs, which include IntelliJ for Java and PyCharm for Python development. Cloud code streamlines common workflows within the IDE by merging non-trivial tasks into a simple user interface inside your IDE. Cloud Code integrates with Secret Manager, which is Google Cloud's Service for securely storing passwords, keys, certificates, and other sensitive data. This integration lets you manage your sensitive data within the IDE. You can also manage Cloud APIs from the IDE. You can browse the available Cloud APIs and see Cloud Client Library documentation specific to your programming language. You can also find and copy code samples that use the Cloud APIs. Cloud Code for Kubernetes lets you develop your Kubernetes applications in your IDE. You can run and debug your applications in a local cluster or on Google Kubernetes Engine (GKE). Cloud Code's Kubernetes Explorer provides you with an easy way to visualize and manage your Kubernetes resources within the IDE. You don't need to remember the associated CLI commands. For example, you can right-click on a pod and stream its logs or open an interactive terminal. If you have developed or deployed Kubernetes applications, you know that YAML configuration files for Kubernetes can be complex and require detailed schemas. Cloud Code's YAML authoring assistance simplifies the process of creating and editing these configuration files by providing autocomplete and inline documentation. Cloud Code also works with Cloud Run, Google Cloud's fully managed serverless product with autoscaling that scales down to zero. You can use Cloud Code to develop your Cloud Run service and then use the Cloud Run Emulator to run and debug it locally. When you are ready to deploy your service, you can deploy it from the IDE. You can also use Cloud Run Explorer to manage your Cloud Run services from the IDE. The gcloud CLI includes local emulators for several of the Google Cloud services that you can use in your applications. You can use the "gcloud beta emulators" commands to install and manage emulators. You do not need to change your application code when you switch between using a local emulator and the Google Cloud service. When you set specified environment variables, the Cloud Client Libraries used by your application will automatically connect to the local emulator instead of the Google Cloud Service. The local emulators let you develop your code without requiring a connection to the corresponding services, and you will not consume project resources. Local emulators are currently available for Bigtable, Datastore, Firestore, Pub/Sub, and Cloud Spanner.