122 lines
3.8 KiB
Markdown
122 lines
3.8 KiB
Markdown
# AWS RDS API Reference
|
|
|
|
## Core API Operations
|
|
|
|
### Describe Operations
|
|
- `describeDBInstances` - List database instances
|
|
- `describeDBParameterGroups` - List parameter groups
|
|
- `describeDBSnapshots` - List database snapshots
|
|
- `describeDBSubnetGroups` - List subnet groups
|
|
|
|
### Instance Management
|
|
- `createDBInstance` - Create new database instance
|
|
- `modifyDBInstance` - Modify existing instance
|
|
- `deleteDBInstance` - Delete database instance
|
|
|
|
### Parameter Groups
|
|
- `createDBParameterGroup` - Create parameter group
|
|
- `modifyDBParameterGroup` - Modify parameters
|
|
- `deleteDBParameterGroup` - Delete parameter group
|
|
|
|
### Snapshots
|
|
- `createDBSnapshot` - Create database snapshot
|
|
- `restoreDBInstanceFromDBSnapshot` - Restore from snapshot
|
|
- `deleteDBSnapshot` - Delete snapshot
|
|
|
|
## Key Data Models
|
|
|
|
### DBInstance
|
|
```java
|
|
String dbInstanceIdentifier() // Instance name
|
|
String dbInstanceArn() // ARN identifier
|
|
String engine() // Database engine
|
|
String engineVersion() // Engine version
|
|
String dbInstanceClass() // Instance type
|
|
int allocatedStorage() // Storage size in GB
|
|
Endpoint endpoint() // Connection endpoint
|
|
String dbInstanceStatus() // Instance status
|
|
boolean multiAZ() // Multi-AZ enabled
|
|
boolean storageEncrypted() // Storage encrypted
|
|
```
|
|
|
|
### DBParameter
|
|
```java
|
|
String parameterName() // Parameter name
|
|
String parameterValue() // Parameter value
|
|
String description() // Description
|
|
int applyMethod() // Apply method (immediate/reboot)
|
|
```
|
|
|
|
### CreateDbInstanceRequest Builder
|
|
```java
|
|
CreateDbInstanceRequest.builder()
|
|
.dbInstanceIdentifier(identifier)
|
|
.engine("postgres") // Database engine
|
|
.engineVersion("15.2") // Engine version
|
|
.dbInstanceClass("db.t3.micro") // Instance type
|
|
.allocatedStorage(20) // Storage size
|
|
.masterUsername(username) // Admin username
|
|
.masterUserPassword(password) // Admin password
|
|
.publiclyAccessible(false) // Public access
|
|
.storageEncrypted(true) // Storage encryption
|
|
.multiAZ(true) // High availability
|
|
.backupRetentionPeriod(7) // Backup retention
|
|
.deletionProtection(true) // Protection from deletion
|
|
.build()
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
### Common Exceptions
|
|
- `DBInstanceNotFoundFault` - Instance doesn't exist
|
|
- `DBSnapshotAlreadyExistsFault` - Snapshot name conflicts
|
|
- `InsufficientDBInstanceCapacity` - Instance type unavailable
|
|
- `InvalidParameterValueException` - Invalid configuration value
|
|
- `StorageQuotaExceeded` - Storage limit reached
|
|
|
|
### Error Response Structure
|
|
```java
|
|
try {
|
|
rdsClient.createDBInstance(request);
|
|
} catch (RdsException e) {
|
|
// AWS specific error handling
|
|
String errorCode = e.awsErrorDetails().errorCode();
|
|
String errorMessage = e.awsErrorDetails().errorMessage();
|
|
|
|
switch (errorCode) {
|
|
case "DBInstanceNotFoundFault":
|
|
// Handle missing instance
|
|
break;
|
|
case "InvalidParameterValueException":
|
|
// Handle invalid parameters
|
|
break;
|
|
default:
|
|
// Generic error handling
|
|
}
|
|
}
|
|
```
|
|
|
|
## Pagination Support
|
|
|
|
### List Instances with Pagination
|
|
```java
|
|
DescribeDbInstancesRequest request = DescribeDbInstancesRequest.builder()
|
|
.maxResults(100) // Limit results per page
|
|
.build();
|
|
|
|
String marker = null;
|
|
do {
|
|
if (marker != null) {
|
|
request = request.toBuilder()
|
|
.marker(marker)
|
|
.build();
|
|
}
|
|
|
|
DescribeDbInstancesResponse response = rdsClient.describeDBInstances(request);
|
|
List<DBInstance> instances = response.dbInstances();
|
|
|
|
// Process instances
|
|
|
|
marker = response.marker();
|
|
} while (marker != null);
|
|
``` |