or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

account-settings.mdalias-version-management.mdclient-management.mdconcurrency-performance.mdevent-source-mapping.mdfunction-invocation.mdfunction-management.mdfunction-url-management.mdhigh-level-invocation.mdindex.mdlayer-management.mdpermissions-policies.mdruntime-management.mdsecurity-code-signing.mdtagging.mdwaiters-polling.md

alias-version-management.mddocs/

0

# Alias and Version Management

1

2

Comprehensive version control and alias management for Lambda functions, enabling immutable versioning, traffic splitting, and deployment strategies through function aliases and version publishing.

3

4

## Capabilities

5

6

### Version Publishing

7

8

Creates an immutable version from the current function code and configuration.

9

10

```java { .api }

11

/**

12

* Creates an immutable version from current function code and configuration

13

* @param request Version publishing parameters including function name and description

14

* @return PublishVersionResult containing version configuration details

15

* @throws ServiceException if service encounters an error

16

* @throws ResourceNotFoundException if function does not exist

17

* @throws InvalidParameterValueException if parameters are invalid

18

*/

19

PublishVersionResult publishVersion(PublishVersionRequest request);

20

21

public class PublishVersionRequest {

22

/** Function name (required) - name, ARN, or partial ARN */

23

private String functionName;

24

/** SHA256 hash of ZIP file (optional) - ensures version consistency */

25

private String codeSha256;

26

/** Version description (optional) - up to 256 characters */

27

private String description;

28

/** Whether to publish function (optional, default: false) */

29

private Boolean revisionId;

30

}

31

32

public class PublishVersionResult {

33

/** Function name */

34

private String functionName;

35

/** Function ARN */

36

private String functionArn;

37

/** Runtime environment */

38

private Runtime runtime;

39

/** IAM role ARN */

40

private String role;

41

/** Function handler */

42

private String handler;

43

/** SHA256 of function code */

44

private String codeSha256;

45

/** Function code size in bytes */

46

private Long codeSize;

47

/** Function description */

48

private String description;

49

/** Timeout in seconds */

50

private Integer timeout;

51

/** Memory size in MB */

52

private Integer memorySize;

53

/** Last modified timestamp */

54

private String lastModified;

55

/** Version number */

56

private String version;

57

/** VPC configuration */

58

private VpcConfigResponse vpcConfig;

59

/** Dead letter queue configuration */

60

private DeadLetterConfig deadLetterConfig;

61

/** Environment variables */

62

private EnvironmentResponse environment;

63

/** KMS key ARN */

64

private String kmsKeyArn;

65

/** X-Ray tracing configuration */

66

private TracingConfigResponse tracingConfig;

67

/** Function state */

68

private State state;

69

/** State reason */

70

private String stateReason;

71

/** State reason code */

72

private StateReasonCode stateReasonCode;

73

/** Last update status */

74

private LastUpdateStatus lastUpdateStatus;

75

/** Last update status reason */

76

private String lastUpdateStatusReason;

77

/** Architecture */

78

private Architecture architecture;

79

}

80

```

81

82

### List Function Versions

83

84

Lists all versions for a specific function.

85

86

```java { .api }

87

/**

88

* Lists all versions for a specific function

89

* @param request Version listing parameters including function name and pagination

90

* @return ListVersionsByFunctionResult containing version list and pagination info

91

* @throws ServiceException if service encounters an error

92

* @throws ResourceNotFoundException if function does not exist

93

*/

94

ListVersionsByFunctionResult listVersionsByFunction(ListVersionsByFunctionRequest request);

95

96

public class ListVersionsByFunctionRequest {

97

/** Function name (required) - name, ARN, or partial ARN */

98

private String functionName;

99

/** Pagination marker (optional) */

100

private String marker;

101

/** Maximum items to return (optional, range: 1-50) */

102

private Integer maxItems;

103

}

104

105

public class ListVersionsByFunctionResult {

106

/** Pagination marker for next page */

107

private String nextMarker;

108

/** List of function versions */

109

private List<FunctionConfiguration> versions;

110

}

111

```

112

113

### Alias Creation

114

115

Creates a function alias with optional traffic splitting support.

116

117

```java { .api }

118

/**

119

* Creates a function alias with traffic splitting capabilities

120

* @param request Alias creation parameters including name, version, and traffic weights

121

* @return CreateAliasResult containing alias configuration details

122

* @throws ServiceException if service encounters an error

123

* @throws ResourceConflictException if alias already exists

124

* @throws InvalidParameterValueException if parameters are invalid

125

*/

126

CreateAliasResult createAlias(CreateAliasRequest request);

127

128

public class CreateAliasRequest {

129

/** Function name (required) - name, ARN, or partial ARN */

130

private String functionName;

131

/** Alias name (required) - 1-128 characters, pattern: (?!^[0-9]+$)([a-zA-Z0-9-_]+) */

132

private String name;

133

/** Function version (required) - version number or $LATEST */

134

private String functionVersion;

135

/** Alias description (optional) - up to 256 characters */

136

private String description;

137

/** Additional version weights for traffic splitting (optional) */

138

private Map<String, Double> additionalVersionWeights;

139

/** Routing configuration (optional) */

140

private AliasRoutingConfiguration routingConfig;

141

}

142

143

public class CreateAliasResult {

144

/** Alias ARN */

145

private String aliasArn;

146

/** Alias name */

147

private String name;

148

/** Function version */

149

private String functionVersion;

150

/** Alias description */

151

private String description;

152

/** Additional version weights */

153

private Map<String, Double> additionalVersionWeights;

154

/** Routing configuration */

155

private AliasRoutingConfiguration routingConfig;

156

/** Revision ID */

157

private String revisionId;

158

}

159

160

public class AliasRoutingConfiguration {

161

/** Additional version weights for traffic routing */

162

private Map<String, Double> additionalVersionWeights;

163

}

164

```

165

166

### Alias Updates

167

168

Updates existing alias configuration including version and traffic weights.

169

170

```java { .api }

171

/**

172

* Updates existing alias configuration

173

* @param request Alias update parameters including name, version, and traffic weights

174

* @return UpdateAliasResult containing updated alias configuration

175

* @throws ServiceException if service encounters an error

176

* @throws ResourceNotFoundException if alias does not exist

177

* @throws InvalidParameterValueException if parameters are invalid

178

*/

179

UpdateAliasResult updateAlias(UpdateAliasRequest request);

180

181

public class UpdateAliasRequest {

182

/** Function name (required) - name, ARN, or partial ARN */

183

private String functionName;

184

/** Alias name (required) */

185

private String name;

186

/** Function version (optional) - version number or $LATEST */

187

private String functionVersion;

188

/** Alias description (optional) */

189

private String description;

190

/** Additional version weights (optional) */

191

private Map<String, Double> additionalVersionWeights;

192

/** Routing configuration (optional) */

193

private AliasRoutingConfiguration routingConfig;

194

/** Revision ID for optimistic locking (optional) */

195

private String revisionId;

196

}

197

198

public class UpdateAliasResult {

199

/** Alias ARN */

200

private String aliasArn;

201

/** Alias name */

202

private String name;

203

/** Function version */

204

private String functionVersion;

205

/** Alias description */

206

private String description;

207

/** Additional version weights */

208

private Map<String, Double> additionalVersionWeights;

209

/** Routing configuration */

210

private AliasRoutingConfiguration routingConfig;

211

/** Revision ID */

212

private String revisionId;

213

}

214

```

215

216

### Alias Retrieval

217

218

Retrieves configuration details for a specific alias.

219

220

```java { .api }

221

/**

222

* Retrieves alias configuration details

223

* @param request Alias retrieval parameters including function and alias names

224

* @return GetAliasResult containing alias configuration

225

* @throws ServiceException if service encounters an error

226

* @throws ResourceNotFoundException if alias does not exist

227

*/

228

GetAliasResult getAlias(GetAliasRequest request);

229

230

public class GetAliasRequest {

231

/** Function name (required) - name, ARN, or partial ARN */

232

private String functionName;

233

/** Alias name (required) */

234

private String name;

235

}

236

237

public class GetAliasResult {

238

/** Alias ARN */

239

private String aliasArn;

240

/** Alias name */

241

private String name;

242

/** Function version */

243

private String functionVersion;

244

/** Alias description */

245

private String description;

246

/** Additional version weights */

247

private Map<String, Double> additionalVersionWeights;

248

/** Routing configuration */

249

private AliasRoutingConfiguration routingConfig;

250

/** Revision ID */

251

private String revisionId;

252

}

253

```

254

255

### Alias Deletion

256

257

Deletes a function alias.

258

259

```java { .api }

260

/**

261

* Deletes a function alias

262

* @param request Alias deletion parameters including function and alias names

263

* @return DeleteAliasResult indicating successful deletion

264

* @throws ServiceException if service encounters an error

265

* @throws ResourceNotFoundException if alias does not exist

266

*/

267

DeleteAliasResult deleteAlias(DeleteAliasRequest request);

268

269

public class DeleteAliasRequest {

270

/** Function name (required) - name, ARN, or partial ARN */

271

private String functionName;

272

/** Alias name (required) */

273

private String name;

274

}

275

276

public class DeleteAliasResult {

277

// Empty result indicating successful deletion

278

}

279

```

280

281

### Alias Listing

282

283

Lists all aliases for a specific function.

284

285

```java { .api }

286

/**

287

* Lists all aliases for a specific function

288

* @param request Alias listing parameters including function name and pagination

289

* @return ListAliasesResult containing alias list and pagination info

290

* @throws ServiceException if service encounters an error

291

* @throws ResourceNotFoundException if function does not exist

292

*/

293

ListAliasesResult listAliases(ListAliasesRequest request);

294

295

public class ListAliasesRequest {

296

/** Function name (required) - name, ARN, or partial ARN */

297

private String functionName;

298

/** Function version (optional) - filter aliases by version */

299

private String functionVersion;

300

/** Pagination marker (optional) */

301

private String marker;

302

/** Maximum items to return (optional, range: 1-50) */

303

private Integer maxItems;

304

}

305

306

public class ListAliasesResult {

307

/** Pagination marker for next page */

308

private String nextMarker;

309

/** List of function aliases */

310

private List<AliasConfiguration> aliases;

311

}

312

313

public class AliasConfiguration {

314

/** Alias ARN */

315

private String aliasArn;

316

/** Alias name */

317

private String name;

318

/** Function version */

319

private String functionVersion;

320

/** Alias description */

321

private String description;

322

/** Additional version weights */

323

private Map<String, Double> additionalVersionWeights;

324

/** Routing configuration */

325

private AliasRoutingConfiguration routingConfig;

326

/** Revision ID */

327

private String revisionId;

328

}

329

```

330

331

## Usage Examples

332

333

### Publishing a Version

334

335

```java

336

AWSLambda lambdaClient = AWSLambdaClientBuilder.defaultClient();

337

338

PublishVersionRequest request = new PublishVersionRequest()

339

.withFunctionName("my-function")

340

.withDescription("Production release v1.2.0")

341

.withCodeSha256("abc123def456..."); // Optional: ensure specific code version

342

343

PublishVersionResult result = lambdaClient.publishVersion(request);

344

System.out.println("Published version: " + result.getVersion());

345

```

346

347

### Creating an Alias with Traffic Splitting

348

349

```java

350

// Create alias with 90% traffic to version 2, 10% to version 1

351

Map<String, Double> weights = new HashMap<>();

352

weights.put("1", 0.1);

353

354

CreateAliasRequest request = new CreateAliasRequest()

355

.withFunctionName("my-function")

356

.withName("live")

357

.withFunctionVersion("2")

358

.withDescription("Production alias")

359

.withAdditionalVersionWeights(weights);

360

361

CreateAliasResult result = lambdaClient.createAlias(request);

362

System.out.println("Created alias ARN: " + result.getAliasArn());

363

```

364

365

### Gradually Shifting Traffic

366

367

```java

368

// Shift traffic from version 1 to version 2 (50/50 split)

369

Map<String, Double> newWeights = new HashMap<>();

370

newWeights.put("1", 0.5);

371

372

UpdateAliasRequest request = new UpdateAliasRequest()

373

.withFunctionName("my-function")

374

.withName("live")

375

.withFunctionVersion("2")

376

.withAdditionalVersionWeights(newWeights);

377

378

UpdateAliasResult result = lambdaClient.updateAlias(request);

379

```

380

381

### Listing Function Versions

382

383

```java

384

ListVersionsByFunctionRequest request = new ListVersionsByFunctionRequest()

385

.withFunctionName("my-function")

386

.withMaxItems(10);

387

388

ListVersionsByFunctionResult result = lambdaClient.listVersionsByFunction(request);

389

for (FunctionConfiguration version : result.getVersions()) {

390

System.out.println("Version " + version.getVersion() +

391

": " + version.getDescription());

392

}

393

```

394

395

## Exception Handling

396

397

Common exceptions when working with aliases and versions:

398

399

- **ResourceNotFoundException**: Function or alias does not exist

400

- **ResourceConflictException**: Alias name already exists during creation

401

- **InvalidParameterValueException**: Invalid function name, alias name, or version

402

- **ServiceException**: General service errors

403

- **TooManyRequestsException**: Rate limiting exceeded

404

- **ResourceNotReadyException**: Function is not ready for version publishing

405

406

## Best Practices

407

408

### Version Management

409

- Use meaningful descriptions when publishing versions

410

- Include code SHA256 hash to ensure version consistency

411

- Implement automated version publishing in CI/CD pipelines

412

- Keep version history manageable by periodically reviewing old versions

413

414

### Alias Strategy

415

- Use aliases for environment separation (dev, staging, prod)

416

- Implement blue-green deployments using traffic splitting

417

- Use descriptive alias names that indicate their purpose

418

- Monitor traffic distribution when using weighted routing

419

420

### Traffic Splitting

421

- Start with small traffic percentages for canary deployments

422

- Monitor metrics and error rates during traffic shifts

423

- Use CloudWatch alarms to automatically rollback on errors

424

- Gradually increase traffic to new versions based on success metrics