0
# AWS Java SDK BOM
1
2
The AWS Java SDK BOM (Bill of Materials) provides centralized dependency management for all AWS SDK for Java service clients and components, enabling consistent versioning across 379 AWS service modules without requiring explicit version declarations for each dependency.
3
4
## Overview
5
6
The AWS Java SDK BOM is a Maven dependency management artifact that simplifies version control for the comprehensive AWS SDK for Java ecosystem. This BOM manages 379 individual AWS service client libraries, ensuring version compatibility and eliminating dependency conflicts across the entire AWS service catalog. It serves as the single source of truth for version alignment in enterprise applications using multiple AWS services, from core infrastructure services like S3 and EC2 to specialized services like machine learning, IoT, and analytics platforms.
7
8
**Key Features:**
9
- **Centralized Version Management**: Single BOM import manages all 379 AWS service client versions
10
- **Conflict Prevention**: Eliminates version mismatches between AWS SDK components
11
- **Simplified Dependency Declarations**: No version numbers required for individual AWS service dependencies
12
- **Complete AWS Coverage**: Includes all available AWS services in Java SDK v1.x
13
- **Enterprise Ready**: Designed for large-scale applications using multiple AWS services
14
15
## Package Information
16
17
- **Package Name**: aws-java-sdk-bom
18
- **Group ID**: com.amazonaws
19
- **Package Type**: Maven BOM (Bill of Materials)
20
- **Language**: Java (Dependency Management)
21
- **Version**: 1.12.789
22
- **Installation**: Import via Maven `<dependencyManagement>`
23
24
## Core Integration
25
26
### Maven BOM Import
27
28
```xml { .api }
29
<dependencyManagement>
30
<dependencies>
31
<dependency>
32
<groupId>com.amazonaws</groupId>
33
<artifactId>aws-java-sdk-bom</artifactId>
34
<version>1.12.789</version>
35
<type>pom</type>
36
<scope>import</scope>
37
</dependency>
38
</dependencies>
39
</dependencyManagement>
40
```
41
42
### Service Dependencies Declaration
43
44
After importing the BOM, declare AWS SDK service dependencies without versions:
45
46
```xml { .api }
47
<dependencies>
48
<dependency>
49
<groupId>com.amazonaws</groupId>
50
<artifactId>aws-java-sdk-s3</artifactId>
51
<!-- Version managed by BOM -->
52
</dependency>
53
<dependency>
54
<groupId>com.amazonaws</groupId>
55
<artifactId>aws-java-sdk-ec2</artifactId>
56
<!-- Version managed by BOM -->
57
</dependency>
58
<dependency>
59
<groupId>com.amazonaws</groupId>
60
<artifactId>aws-java-sdk-dynamodb</artifactId>
61
<!-- Version managed by BOM -->
62
</dependency>
63
</dependencies>
64
```
65
66
## Basic Usage
67
68
### Complete Maven Configuration Example
69
70
```xml
71
<?xml version="1.0" encoding="UTF-8"?>
72
<project xmlns="http://maven.apache.org/POM/4.0.0">
73
<modelVersion>4.0.0</modelVersion>
74
75
<groupId>com.example</groupId>
76
<artifactId>my-aws-app</artifactId>
77
<version>1.0.0</version>
78
79
<properties>
80
<java.version>1.8</java.version>
81
</properties>
82
83
<!-- Import AWS SDK BOM for version management -->
84
<dependencyManagement>
85
<dependencies>
86
<dependency>
87
<groupId>com.amazonaws</groupId>
88
<artifactId>aws-java-sdk-bom</artifactId>
89
<version>1.12.789</version>
90
<type>pom</type>
91
<scope>import</scope>
92
</dependency>
93
</dependencies>
94
</dependencyManagement>
95
96
<!-- Declare specific AWS services needed -->
97
<dependencies>
98
<dependency>
99
<groupId>com.amazonaws</groupId>
100
<artifactId>aws-java-sdk-s3</artifactId>
101
</dependency>
102
<dependency>
103
<groupId>com.amazonaws</groupId>
104
<artifactId>aws-java-sdk-dynamodb</artifactId>
105
</dependency>
106
</dependencies>
107
</project>
108
```
109
110
## Architecture
111
112
The AWS Java SDK BOM leverages Maven's dependency management capabilities to provide a sophisticated versioning strategy for the extensive AWS SDK ecosystem:
113
114
### Dependency Management Strategy
115
1. **Version Alignment**: All 379 AWS SDK modules use a single version variable `${awsjavasdk.version}` (1.12.789)
116
2. **Conflict Resolution**: Prevents version conflicts between AWS SDK components and their transitive dependencies
117
3. **Transitive Management**: Manages versions of shared dependencies like Jackson, Apache HTTP Client, and other common libraries
118
4. **No Runtime Impact**: BOM itself adds no runtime dependencies or classes to your application
119
120
### BOM Scope and Coverage
121
- **Core Infrastructure**: Essential AWS SDK components (core, models, SWF libraries)
122
- **Service Clients**: Complete coverage of all 379 AWS service-specific client libraries
123
- **Version Synchronization**: Ensures compatibility testing across the entire AWS service catalog
124
- **Dependency Inheritance**: Child projects automatically inherit managed versions without explicit declarations
125
126
### Integration Patterns
127
The BOM follows Maven's standard `import` scope pattern, allowing developers to:
128
- Import once in `<dependencyManagement>` section
129
- Declare service-specific dependencies without version numbers
130
- Override BOM-managed versions when necessary (though not recommended)
131
- Combine with other BOMs while maintaining AWS SDK version consistency
132
133
## Capabilities
134
135
### Core SDK Components
136
137
Essential infrastructure components managed by the BOM:
138
139
```xml { .api }
140
<!-- Core SDK functionality -->
141
<dependency>
142
<groupId>com.amazonaws</groupId>
143
<artifactId>aws-java-sdk-core</artifactId>
144
</dependency>
145
146
<!-- Data models for all services -->
147
<dependency>
148
<groupId>com.amazonaws</groupId>
149
<artifactId>aws-java-sdk-models</artifactId>
150
</dependency>
151
152
<!-- Simple Workflow libraries -->
153
<dependency>
154
<groupId>com.amazonaws</groupId>
155
<artifactId>aws-java-sdk-swf-libraries</artifactId>
156
</dependency>
157
```
158
159
### Compute Services
160
161
EC2, Lambda, containers, and compute platforms:
162
163
```xml { .api }
164
<!-- Elastic Compute Cloud -->
165
<dependency>
166
<groupId>com.amazonaws</groupId>
167
<artifactId>aws-java-sdk-ec2</artifactId>
168
</dependency>
169
170
<!-- AWS Lambda -->
171
<dependency>
172
<groupId>com.amazonaws</groupId>
173
<artifactId>aws-java-sdk-lambda</artifactId>
174
</dependency>
175
176
<!-- Elastic Container Service -->
177
<dependency>
178
<groupId>com.amazonaws</groupId>
179
<artifactId>aws-java-sdk-ecs</artifactId>
180
</dependency>
181
182
<!-- Elastic Kubernetes Service -->
183
<dependency>
184
<groupId>com.amazonaws</groupId>
185
<artifactId>aws-java-sdk-eks</artifactId>
186
</dependency>
187
188
<!-- AWS Batch -->
189
<dependency>
190
<groupId>com.amazonaws</groupId>
191
<artifactId>aws-java-sdk-batch</artifactId>
192
</dependency>
193
```
194
195
### Storage Services
196
197
S3, EFS, and other storage solutions:
198
199
```xml { .api }
200
<!-- Simple Storage Service -->
201
<dependency>
202
<groupId>com.amazonaws</groupId>
203
<artifactId>aws-java-sdk-s3</artifactId>
204
</dependency>
205
206
<!-- S3 Control -->
207
<dependency>
208
<groupId>com.amazonaws</groupId>
209
<artifactId>aws-java-sdk-s3control</artifactId>
210
</dependency>
211
212
<!-- Elastic File System -->
213
<dependency>
214
<groupId>com.amazonaws</groupId>
215
<artifactId>aws-java-sdk-efs</artifactId>
216
</dependency>
217
218
<!-- FSx -->
219
<dependency>
220
<groupId>com.amazonaws</groupId>
221
<artifactId>aws-java-sdk-fsx</artifactId>
222
</dependency>
223
224
<!-- Glacier -->
225
<dependency>
226
<groupId>com.amazonaws</groupId>
227
<artifactId>aws-java-sdk-glacier</artifactId>
228
</dependency>
229
```
230
231
### Database Services
232
233
DynamoDB, RDS, and specialized databases:
234
235
```xml { .api }
236
<!-- DynamoDB -->
237
<dependency>
238
<groupId>com.amazonaws</groupId>
239
<artifactId>aws-java-sdk-dynamodb</artifactId>
240
</dependency>
241
242
<!-- Relational Database Service -->
243
<dependency>
244
<groupId>com.amazonaws</groupId>
245
<artifactId>aws-java-sdk-rds</artifactId>
246
</dependency>
247
248
<!-- Amazon Neptune -->
249
<dependency>
250
<groupId>com.amazonaws</groupId>
251
<artifactId>aws-java-sdk-neptune</artifactId>
252
</dependency>
253
254
<!-- DocumentDB -->
255
<dependency>
256
<groupId>com.amazonaws</groupId>
257
<artifactId>aws-java-sdk-docdb</artifactId>
258
</dependency>
259
260
<!-- Timestream -->
261
<dependency>
262
<groupId>com.amazonaws</groupId>
263
<artifactId>aws-java-sdk-timestreamwrite</artifactId>
264
</dependency>
265
```
266
267
### Security & Identity Services
268
269
IAM, KMS, and security management:
270
271
```xml { .api }
272
<!-- Identity and Access Management -->
273
<dependency>
274
<groupId>com.amazonaws</groupId>
275
<artifactId>aws-java-sdk-iam</artifactId>
276
</dependency>
277
278
<!-- Key Management Service -->
279
<dependency>
280
<groupId>com.amazonaws</groupId>
281
<artifactId>aws-java-sdk-kms</artifactId>
282
</dependency>
283
284
<!-- Security Token Service -->
285
<dependency>
286
<groupId>com.amazonaws</groupId>
287
<artifactId>aws-java-sdk-sts</artifactId>
288
</dependency>
289
290
<!-- Secrets Manager -->
291
<dependency>
292
<groupId>com.amazonaws</groupId>
293
<artifactId>aws-java-sdk-secretsmanager</artifactId>
294
</dependency>
295
```
296
297
### Messaging & Queuing Services
298
299
SQS, SNS, and event-driven architectures:
300
301
```xml { .api }
302
<!-- Simple Queue Service -->
303
<dependency>
304
<groupId>com.amazonaws</groupId>
305
<artifactId>aws-java-sdk-sqs</artifactId>
306
</dependency>
307
308
<!-- Simple Notification Service -->
309
<dependency>
310
<groupId>com.amazonaws</groupId>
311
<artifactId>aws-java-sdk-sns</artifactId>
312
</dependency>
313
314
<!-- Amazon EventBridge -->
315
<dependency>
316
<groupId>com.amazonaws</groupId>
317
<artifactId>aws-java-sdk-eventbridge</artifactId>
318
</dependency>
319
320
<!-- Kinesis -->
321
<dependency>
322
<groupId>com.amazonaws</groupId>
323
<artifactId>aws-java-sdk-kinesis</artifactId>
324
</dependency>
325
```
326
327
### Machine Learning Services
328
329
SageMaker, Rekognition, and AI/ML platforms:
330
331
```xml { .api }
332
<!-- Amazon SageMaker -->
333
<dependency>
334
<groupId>com.amazonaws</groupId>
335
<artifactId>aws-java-sdk-sagemaker</artifactId>
336
</dependency>
337
338
<!-- Amazon Rekognition -->
339
<dependency>
340
<groupId>com.amazonaws</groupId>
341
<artifactId>aws-java-sdk-rekognition</artifactId>
342
</dependency>
343
344
<!-- Amazon Comprehend -->
345
<dependency>
346
<groupId>com.amazonaws</groupId>
347
<artifactId>aws-java-sdk-comprehend</artifactId>
348
</dependency>
349
350
<!-- Amazon Bedrock -->
351
<dependency>
352
<groupId>com.amazonaws</groupId>
353
<artifactId>aws-java-sdk-bedrock</artifactId>
354
</dependency>
355
```
356
357
## Managed Dependencies
358
359
### Complete Service Coverage
360
361
The BOM manages versions for **379 AWS service modules**, including:
362
363
- **Compute**: EC2, Lambda, ECS, EKS, Batch, Lightsail, App Runner
364
- **Storage**: S3, EFS, FSx, Glacier, Storage Gateway, S3 Outposts
365
- **Database**: RDS, DynamoDB, DocumentDB, Neptune, Timestream, MemoryDB, Keyspaces
366
- **Networking**: CloudFront, Route53, Direct Connect, VPC Lattice, Network Firewall
367
- **Security**: IAM, KMS, Secrets Manager, WAF, Shield, GuardDuty, Security Hub
368
- **Analytics**: Athena, EMR, Kinesis, QuickSight, Glue, Lake Formation
369
- **Machine Learning**: SageMaker, Rekognition, Comprehend, Polly, Textract, Bedrock
370
- **IoT**: IoT Core, IoT Analytics, IoT Events, IoT Device Management, IoT Fleet Hub
371
- **Developer Tools**: CodeCommit, CodeBuild, CodeDeploy, CodePipeline, CodeArtifact
372
- **Management**: CloudFormation, CloudTrail, CloudWatch, Config, Systems Manager
373
- **Application Integration**: EventBridge, SQS, SNS, Step Functions, API Gateway
374
375
### Version Management Strategy
376
377
```xml { .api }
378
<!-- All dependencies use consistent versioning -->
379
<dependency>
380
<artifactId>aws-java-sdk-[service]</artifactId>
381
<groupId>com.amazonaws</groupId>
382
<version>${awsjavasdk.version}</version>
383
<optional>false</optional>
384
</dependency>
385
```
386
387
The `${awsjavasdk.version}` variable ensures all 379 modules use version `1.12.789`, providing:
388
389
- **Compatibility Guarantee**: All components tested together
390
- **Conflict Prevention**: No version mismatches between AWS SDK modules
391
- **Simplified Maintenance**: Single version upgrade point
392
- **Transitive Alignment**: Consistent dependency resolution
393
394
## Special Considerations
395
396
### BOM Limitations
397
398
As a dependency management tool, the BOM:
399
400
- **No Runtime Code**: Contains no executable classes or interfaces
401
- **Maven Specific**: Designed for Maven dependency management
402
- **Version Locked**: All managed dependencies use the same version
403
- **Import Required**: Must be imported via `<dependencyManagement>` scope
404
405
### Migration Notice
406
407
**Important**: AWS SDK for Java 1.x is in maintenance mode as of July 31, 2024, and will reach end-of-support on December 31, 2025. AWS recommends migrating to [AWS SDK for Java 2.x](https://sdk.amazonaws.com/java/api/latest/) for continued support and new features.
408
409
### Java Version Requirements
410
411
- **Minimum Java Version**: Java 1.8+
412
- **Recommended**: Java 11 or later for optimal performance
413
- **Compatibility**: Tested on OpenJDK and Oracle JDK
414
415
## Error Handling
416
417
### Common BOM Issues
418
419
**Version Conflicts**: If you experience version conflicts, ensure the BOM is imported in `<dependencyManagement>` before other BOMs:
420
421
```xml
422
<dependencyManagement>
423
<dependencies>
424
<!-- AWS BOM should be first -->
425
<dependency>
426
<groupId>com.amazonaws</groupId>
427
<artifactId>aws-java-sdk-bom</artifactId>
428
<version>1.12.789</version>
429
<type>pom</type>
430
<scope>import</scope>
431
</dependency>
432
<!-- Other BOMs after -->
433
</dependencies>
434
</dependencyManagement>
435
```
436
437
**Missing Service**: If a service client is not available, verify the artifactId matches the managed dependency list. All 379 service modules use the pattern `aws-java-sdk-[service-name]`.