Skip to content

Commit d6e211f

Browse files
committed
add AwsLambdaApi.updateFunctionConfiguration
1 parent a44cd5d commit d6e211f

File tree

4 files changed

+57
-16
lines changed

4 files changed

+57
-16
lines changed

.github/workflows/pages.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
unset-current-credentials: true
2626
- id: release
2727
name: Create and upload new Github Pages content
28-
uses: encalmo/[email protected].0
28+
uses: encalmo/[email protected].3
2929
with:
3030
tag-prefix: 'version'
3131
version-bump: 'keep'

.github/workflows/release.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
unset-current-credentials: true
3737
- id: release
3838
name: Create and upload new release bundles
39-
uses: encalmo/[email protected].0
39+
uses: encalmo/[email protected].3
4040
with:
4141
tag-prefix: 'version'
4242
version-bump: ${{ inputs.version-bump || 'patch' }}

AwsLambdaApi.scala

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,47 @@ object AwsLambdaApi {
156156
}
157157
}
158158

159+
/** Modify the version-specific settings of a Lambda function.
160+
*
161+
* When you update a function, Lambda provisions an instance of the function and its supporting resources. If your
162+
* function connects to a VPC, this process can take a minute. During this time, you can't modify the function, but
163+
* you can still invoke it.
164+
*/
165+
inline def updateFunctionConfiguration(
166+
lambdaArn: String,
167+
runtime: Option[Runtime] = None,
168+
handler: Option[String] = None,
169+
memorySize: Option[Int] = None,
170+
timeout: Option[Int] = None
171+
)(using aws: AwsClient) =
172+
AwsClient.invoke(s"updateFunctionConfiguration") {
173+
val (revisionId, codeSha256) = {
174+
val response = aws.lambda
175+
.updateFunctionConfiguration(
176+
UpdateFunctionConfigurationRequest
177+
.builder()
178+
.functionName(lambdaArn)
179+
.optionally(runtime, _.runtime)
180+
.optionally(handler, _.handler)
181+
.optionally(memorySize, b => i => b.memorySize(Integer.valueOf(i)))
182+
.optionally(timeout, b => i => b.timeout(Integer.valueOf(i)))
183+
.build()
184+
)
185+
(response.revisionId(), response.codeSha256())
186+
}
187+
val status = aws.lambda
188+
.waiter()
189+
.waitUntilFunctionUpdatedV2(
190+
GetFunctionRequest.builder().functionName(lambdaArn).build()
191+
)
192+
.matched()
193+
if (status.response().isPresent()) {
194+
(revisionId, codeSha256)
195+
} else {
196+
throw status.exception().get()
197+
}
198+
}
199+
159200
/** Updates a Lambda function's code. If code signing is enabled for the function, the code package must be signed by
160201
* a trusted publisher.
161202
*/

project.scala

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
//> using scala 3.6.3
22
//> using exclude scripts
33
//> using toolkit 0.7.0
4-
//> using dep "software.amazon.awssdk:bom:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
5-
//> using dep "software.amazon.awssdk:iam:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
6-
//> using dep "software.amazon.awssdk:sts:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
7-
//> using dep "software.amazon.awssdk:sso:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
8-
//> using dep "software.amazon.awssdk:ssooidc:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
9-
//> using dep "software.amazon.awssdk:dynamodb:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
10-
//> using dep "software.amazon.awssdk:sqs:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
11-
//> using dep "software.amazon.awssdk:secretsmanager:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
12-
//> using dep "software.amazon.awssdk:kms:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
13-
//> using dep "software.amazon.awssdk:s3:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
14-
//> using dep "software.amazon.awssdk:lambda:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
15-
//> using dep "software.amazon.awssdk:apigateway:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
16-
//> using dep "software.amazon.awssdk:apigatewayv2:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
17-
//> using dep "software.amazon.awssdk:url-connection-client:2.31.1,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
4+
//> using dep "software.amazon.awssdk:bom:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
5+
//> using dep "software.amazon.awssdk:iam:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
6+
//> using dep "software.amazon.awssdk:sts:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
7+
//> using dep "software.amazon.awssdk:sso:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
8+
//> using dep "software.amazon.awssdk:ssooidc:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
9+
//> using dep "software.amazon.awssdk:dynamodb:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
10+
//> using dep "software.amazon.awssdk:sqs:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
11+
//> using dep "software.amazon.awssdk:secretsmanager:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
12+
//> using dep "software.amazon.awssdk:kms:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
13+
//> using dep "software.amazon.awssdk:s3:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
14+
//> using dep "software.amazon.awssdk:lambda:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
15+
//> using dep "software.amazon.awssdk:apigateway:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
16+
//> using dep "software.amazon.awssdk:apigatewayv2:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
17+
//> using dep "software.amazon.awssdk:url-connection-client:2.31.6,exclude=software.amazon.awssdk%apache-client,exclude=software.amazon.awssdk%netty-nio-client"
1818
//> using dep org.slf4j:slf4j-nop:2.0.17
1919
//> using test.dep org.scalameta::munit::1.1.0
2020
//> using test.dep org.encalmo::setup-aws-credentials:0.9.2

0 commit comments

Comments
 (0)