Reading AWS API Reference Docs Like an SDK Developer
The AWS API reference is written for the REST API, not your language.
Busca en todas las páginas de la documentación
The AWS API reference is written for the REST API, not your language.
Once you can translate a reference page into an SDK call, you can use any of the 200-plus AWS services from any SDK, even ones you have never touched.
Every AWS service has an API reference documenting its operations, request parameters, response shapes, and errors.
That reference is the source of truth. The boto3 and SDK v3 documentation are generated views of the same underlying model (Smithy), so they agree with it.
The mental translation is small. An operation name becomes a method or a command, and the parameter names stay almost identical.
The main thing to learn is casing. Operation names differ by language convention, but request and response field names do not.
Learn to read three parts of any reference page: the request parameters (what you send), the response elements (what you get), and the errors (what can go wrong).
Read the operation name and required parameters from the reference, then write the equivalent call.
# --- Python (boto3) ---
# API reference operation: "GetObject" -> boto3 method get_object
import boto3
s3 = boto3.client("s3")
resp = s3.get_object(Bucket="my-bucket", Key="report.pdf") # required params
print(resp["ContentType"]) # response element// --- TypeScript (AWS SDK v3) ---
// API reference operation: "GetObject" -> GetObjectCommand
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
const s3 = new S3Client({});
const resp = await s3.send(new GetObjectCommand({ Bucket: "my-bucket", Key: "report.pdf" }));
console.log(resp.ContentType); // response element, same name as the referenceWhen to reach for this:
Here is the full translation for a DynamoDB Query, showing how required keys, optional keys, and paginated responses map across.
# --- Python (boto3) ---
# Reference: DynamoDB "Query"
# Required: TableName, KeyConditionExpression
# Optional: ExpressionAttributeValues, Limit
# Response: Items (list), LastEvaluatedKey (paginated marker)
import boto3
ddb = boto3.client("dynamodb", region_name="us-east-1")
resp = ddb.query(
TableName="Orders",
KeyConditionExpression="customerId = :c",
ExpressionAttributeValues={":c": {"S": "cust-42"}},
Limit=25,
)
for item in resp.get("Items", []):
print(item)
print("more pages?" , "LastEvaluatedKey" in resp)// --- TypeScript (AWS SDK v3) ---
// Same "Query" operation and identical field names, PascalCase preserved.
import { DynamoDBClient, QueryCommand } from "@aws-sdk/client-dynamodb";
const ddb = new DynamoDBClient({ region: "us-east-1" });
const resp = await ddb.send(new QueryCommand({
TableName: "Orders",
KeyConditionExpression: "customerId = :c",
ExpressionAttributeValues: { ":c": { S: "cust-42" } },
Limit: 25,
}));
for (const item of resp.Items ?? []) console.log(item);
console.log("more pages?", resp.LastEvaluatedKey !== undefined);What this demonstrates:
Query maps to query in boto3 and QueryCommand in SDK v3.TableName, KeyConditionExpression) keeps its PascalCase from the reference.Items, LastEvaluatedKey) also match the reference names exactly.LastEvaluatedKey in the response is the reference's signal that the operation paginates.| Thing | API reference | boto3 | SDK v3 |
|---|---|---|---|
| Operation | ListObjectsV2 | list_objects_v2 | ListObjectsV2Command |
| Client | S3 | boto3.client("s3") | new S3Client() |
| Request field | MaxKeys | MaxKeys | MaxKeys |
| Response field | Contents | Contents | Contents |
ClientError codes (boto3) or typed exception classes (SDK v3)..get() in Python and ?? [] or optional chaining in TypeScript.ClientError codes or typed SDK v3 exceptions.NextToken, Marker, or LastEvaluatedKey in the response means there is more data. Fix: use a paginator instead of reading one page.boto3.client mirrors the reference; boto3.resource is a higher-level abstraction with different names. Fix: match the reference with the client API.| Alternative | Use When | Don't Use When |
|---|---|---|
| boto3 method reference | Working in Python, want exact parameter names | You need TypeScript types |
| SDK v3 API docs | Working in TypeScript, want input/output types | You want the canonical, language-neutral contract |
| Service API reference | You need the authoritative source or error list | A quick language-specific lookup is enough |
The service API reference. The boto3 and SDK v3 docs are generated from the same model, so they agree, but the API reference is the canonical contract including errors and constraints.
The API's PascalCase operation becomes snake_case in boto3 (get_object) and a PascalCase Command in SDK v3 (GetObjectCommand). The base name is the same.
No. Request and response field names stay in the reference's PascalCase in both boto3 and SDK v3. Only the operation name follows language conventions.
The reference marks each request parameter as required or optional. Send all required parameters; add optional ones as needed.
Look for a token in the response, such as NextToken, Marker, or LastEvaluatedKey. Its presence means more results exist, and you should use a paginator.
Each operation's reference page lists the errors it can return. These map to ClientError codes in boto3 and typed exception classes in SDK v3.
Many response elements are optional and only appear under certain conditions. The reference tells you which are guaranteed; guard optional ones in code.
boto3.client maps one-to-one to the API reference. boto3.resource is a higher-level object-oriented layer with different method names and is not available for every service.
Yes. SDK v3 publishes per-command input and output TypeScript types generated from the same model, so they mirror the reference field names and give you autocomplete.
Search for the service name plus "API Reference," for example "Amazon SQS API Reference." Each service publishes its own operation catalog.
Often yes for Python. It lists every method with exact parameter names and short examples, which is quicker to skim than the full REST reference.
That is rare, because SDKs are generated from the same model. If it happens, it is usually a very new operation; update the SDK client package to the latest version.
Stack versions: This page was written for boto3 1.43.x (Python 3.10+) and the AWS SDK for JavaScript v3 (Node.js 18+).
Revisado por Chris St. John·Última actualización: 23 jul 2026