Skip to main content
Keep an AWS S3 client unchanged while Cloud Adapter translates supported requests to Google Cloud Storage. This quickstart writes one object through the S3 API, verifies it natively in Google Cloud, exercises a translated not-found response, and removes the test object.
AWS API requests pass through Tensor9 Cloud Adapter to Google Cloud services.AWS API requests pass through Tensor9 Cloud Adapter to Google Cloud services.

Start this route locally

Use the directed S3 to Cloud Storage mapping in the shared startup steps:
1

Install or update the Tensor9 CLI

Install the customer CLI with Homebrew, then confirm the binary is available:
If tensor9 is already installed, run brew upgrade tensor9 instead of the install command.
2

Authenticate with Tensor9

A Tensor9 API key is required. Use the key issued during onboarding, or email [email protected] to request one for your organization. Do not share your account or key with another customer or organization.If your secret manager has already supplied T9_API_KEY, skip the prompt. Otherwise, enter your key at a hidden prompt in the terminal where you will run tensor9:
Check that the variable is set without printing it, then verify your Tensor9 identity:
Confirm that the reported identity belongs to the intended customer account. Do not continue if authentication fails or the account is wrong. Keep shell tracing disabled while using the key. Do not paste the key into commands, shell profiles, source files, screenshots or support messages.See Install and Authenticate for the planned license lifecycle, entitlements and credential boundaries.
3

Confirm the directed service mapping

Confirm that you exported the canonical origin and backend service names supplied by this quickstart:
Then inspect the mapping before starting a process:
Read the supported operations and limitations for that direction. A similarly named service in the target cloud is not enough. If no directed profile exists, choose another mapping before continuing.
4

Prepare target-cloud access

Authenticate with the target cloud using its standard credential chain. The adapter uses that target identity when it calls the backend service.Keep credentials in your shell, workload identity, or local credential store. Do not put secrets in the command line, source code, or screenshots.
5

Start the service adapter

Run one service adapter as a foreground process:
Leave this terminal open. This is the current foreground launcher, not the pending Docker launcher for local development mode. It calls your actual target-cloud services; it is separate from the in-memory emulator. Acquisition and license renewal require Tensor9 authentication. Keep the endpoint local to your test.
6

Copy the listening endpoint

When the command reports its listening endpoint, copy that exact value into a second terminal:
Keep the endpoint local to the test unless you have deliberately configured network access and authentication for another machine.
7

Run one bounded request

Continue with this page’s client or tool instructions. Point only the service under test at T9_CLOUD_ADAPTER_ENDPOINT, then perform one operation whose target effect you can verify independently.Check both sides: read the origin-shaped response and inspect the native target resource. A successful client response alone does not prove that the target state is correct.
8

Stop the local adapter

Return to the first terminal and press Control-C. Confirm the process exits before deleting the test resource with the target cloud’s native client.If the request failed, preserve the request ID, adapter endpoint, operation name, target request ID, and any x-t9-explain-* receipt headers before stopping the process.

What you will prove

This test does not migrate existing objects, versions, bucket policies, or signed links.

Before you begin

You need an installed AWS-origin Cloud Adapter endpoint, a configured S3 to Cloud Storage service adapter, an origin-side test identity, a Google Cloud runtime identity with access to one test bucket, AWS CLI v2, and gcloud for native verification. Review S3 on Google Cloud. The core object lifecycle is supported. Multipart upload is composed through temporary objects; ListMultipartUploads and UploadPartCopy are outside this target profile. Bucket policy, ACL, retention, and legal-hold behavior are not provided by this object endpoint.

Set test values

Use the origin-facing bucket name in AWS commands and the native bucket name in Google Cloud commands. They may differ. AWS_REQUEST_CHECKSUM_CALCULATION=WHEN_REQUIRED keeps this smoke test on the required S3 checksum path. Validate optional flexible-checksum behavior separately if your application enables it. The commands below use an explicit --endpoint-url. To route every S3 client in the process instead, set AWS_ENDPOINT_URL_S3="$T9_CLOUD_ADAPTER_ENDPOINT" and omit the command-level override.

Verify target access first

Confirm that your verification identity can see the target bucket without using Cloud Adapter:
This is a read-only verification identity. The adapter’s runtime identity is configured separately and should have only the target permissions needed by the mapped operations.

Write through the S3 API

Keep the ETag and command timestamp from the response. The normal AWS CLI output does not expose arbitrary response headers; use an SDK with structured, redacted response metadata when a support workflow requires them. Do not log authorization headers or request bodies.

Read it through both sides

The S3 ETag and Cloud Storage generation are not interchangeable identifiers. Use each API’s returned identity in its own context.

Exercise the error mapping

Expect an AWS-shaped not-found error. S3 can return permission denied instead when the caller lacks permission to establish that the object is missing. First separate that origin-side authorization case from the adapter’s Google Cloud backend permission. If the request times out, inspect Cloud Storage before retrying a mutation.

Inspect an explanation

Use the S3 to Cloud Storage service profile to confirm the selected operation’s coverage, then follow Understanding Behavior with Explain. A hypothetical explanation is the safe first choice when you are investigating how a covered request would map. The shorthand x-t9-explain: true executes the request as well as explaining it, so do not attach it to the completed upload merely to recreate evidence. The S3 to Cloud Storage worked investigation shows how to read the origin result, explanation report and native object observation together. An explanation receipt is not proof that a write committed or that a retry is safe.

Clean up

The final describe should report that the current object is no longer readable. Versioned or soft-delete-enabled targets can retain prior versions or recovery state; use an unversioned disposable target for this quickstart or remove the created version explicitly. Remove only the files and object created by this test; retain the shared bucket unless its owner authorizes deletion.

Before production traffic

Inventory the application’s S3 operations, conditional headers, pagination, metadata, multipart behavior, versioning, and retry policy. Test each documented operation with representative sizes. Plan data migration separately because a new target bucket starts empty. Establish target quotas, lifecycle policy, observability, backup, and an uncertain-write procedure. Next, read the complete S3 target profile, then add the lifecycle to CI/CD.