fix: [core] Hard code version number in user agent string (#98)#533
Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR addresses a long-standing issue by implementing a hard-coded version number for the user agent string in AWS Lambda Runtime requests. Instead of showing "Swift-Lambda/Unknown", the runtime will now identify itself as "Swift-Lambda/2.0" to the Lambda service.
Key changes:
- Created a new
Versionenum to centralize version management - Updated the user agent string to use the version number instead of "Unknown"
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| Sources/AWSLambdaRuntime/Version.swift | New file containing a Version enum with static version string "2.0" |
| Sources/AWSLambdaRuntime/ControlPlaneRequestEncoder.swift | Updated user agent string to interpolate the version from Version.current |
| static let CRLF: String = "\r\n" | ||
|
|
||
| static let userAgent = "Swift-Lambda/Unknown" | ||
| static let userAgent = "Swift-Lambda/\(Version.current)" |
There was a problem hiding this comment.
String interpolation is performed every time this static property is accessed. Consider using a computed property or pre-computing the string to avoid repeated interpolation overhead.
| static let userAgent = "Swift-Lambda/\(Version.current)" | |
| static let userAgent: String = { | |
| return "Swift-Lambda/\(Version.current)" | |
| }() |
There was a problem hiding this comment.
Don't think this is true.
There was a problem hiding this comment.
I don't think neither. Typical hallucination :-)
|
|
||
| /// The version of the AWS Lambda Runtime. | ||
| /// | ||
| /// This is used in the User Agent header when making requests to the AWS Lambda data Plane. |
There was a problem hiding this comment.
"data Plane" should be "Data Plane" - both words should be capitalized when referring to the AWS Lambda Data Plane as a proper noun.
| /// This is used in the User Agent header when making requests to the AWS Lambda data Plane. | |
| /// This is used in the User Agent header when making requests to the AWS Lambda Data Plane. |
| static let CRLF: String = "\r\n" | ||
|
|
||
| static let userAgent = "Swift-Lambda/Unknown" | ||
| static let userAgent = "Swift-Lambda/\(Version.current)" |
There was a problem hiding this comment.
Don't think this is true.
Add a hard coded version number to the user agent string, for an eventual identification by the Lambda service
Motivation:
It's an issue that was open more than 5 years ago and was never addressed. At the time, the consensus was to pickup a version number for the Package.swift file and the maintainer at the time decided to wait for Swift to implement this.
Five years later, and several major version of Swift later, this is still not available. I decided to move on and implement a less optimal solution. This can be replaced in the future if package version ever becomes part of Package.swift.
Modifications:
Add a version enum to isolate the versioning in one place. I decided to keep it simple and not over engineering it with major, minor, patch and pre-release. At the time, it's a simple string. This is all what we need for usage in the user agent string.
Result:
User agent now identifies as
Swift-Lambda/2,0instead ofSwift-Lambda/unknown