Skip to content

Commit c314f95

Browse files
authored
[fix] Retry connection timeouts to IMDSv2 (#130)
1 parent e63809c commit c314f95

10 files changed

Lines changed: 118 additions & 112 deletions

File tree

Cargo.lock

Lines changed: 97 additions & 96 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/dependencies/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
aws-lambda-powertools[tracer,parser]==3.4.0
1+
aws-lambda-powertools[tracer,parser]==3.4.1
22
cryptography==43.0.3
33
hpke==0.3.2
44
pksuid==1.1.2

api/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.black]
22
line-length = 120
3-
target-version = ['py312']
3+
target-version = ['py313']
44
include = '\.pyi?$'
55
extend-exclude = '''
66
(

api/requirements-dev.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
black==24.10.0
2-
aws-lambda-powertools[all,aws-sdk]==3.4.0
2+
aws-lambda-powertools[all,aws-sdk]==3.4.1
33
boto3-stubs[dynamodb,kms]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
aws-lambda-powertools==3.4.0
1+
aws-lambda-powertools==3.4.1

canary/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.black]
22
line-length = 120
3-
target-version = ['py312']
3+
target-version = ['py313']
44
include = '\.pyi?$'
55
extend-exclude = '''
66
(

canary/requirements-dev.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
black==24.10.0
2-
aws-lambda-powertools[all,aws-sdk]==3.4.0
2+
aws-lambda-powertools[all,aws-sdk]==3.4.1
33
boto3-stubs[dynamodb,kms]

enclave/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ path = "src/main.rs"
1414

1515
[dependencies]
1616
anyhow = { version = "=1.0.95", default-features = false }
17-
aws-lc-rs = { version = "=1.12.0", default-features = false }
17+
aws-lc-rs = { version = "=1.12.2", default-features = false }
1818
byteorder = { version = "=1.5.0", default-features = false }
1919
cel-interpreter = { version = "=0.9.0", default-features = false, features = ["json", "chrono"] }
2020
chrono = { version = "=0.4.39", default-features = false, features = ["now"] }
21-
data-encoding = { version = "=2.6.0", default-features = false, features = ["alloc"] }
21+
data-encoding = { version = "=2.7.0", default-features = false, features = ["alloc"] }
2222
serde = { version = "=1.0.217", default-features = false, features = ["derive"] }
23-
serde_json = { version = "=1.0.134", default-features = false }
24-
rustls = { version = "=0.23.20", default-features = false, features = ["aws_lc_rs"] }
23+
serde_json = { version = "=1.0.137", default-features = false }
24+
rustls = { version = "=0.23.21", default-features = false, features = ["aws_lc_rs"] }
2525
vsock = { version = "=0.5.1", default-features = false }
2626
zeroize = { version = "=1.8.1", default-features = false, features = ["zeroize_derive"] }

parent/Cargo.toml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,17 @@ path = "src/main.rs"
1515

1616
[dependencies]
1717
anyhow = { version = "=1.0.95", default-features = false }
18-
aws-config = { version = "=1.5.12", default-features = false, features = ["rustls", "rt-tokio", "behavior-version-latest"] }
18+
aws-config = { version = "=1.5.15", default-features = false, features = ["rustls", "rt-tokio", "behavior-version-latest"] }
1919
aws-credential-types = { version = "=1.2.1", default-features = false }
20+
aws-smithy-runtime-api = { version = "=1.7.3", default-features = false, features = ["client"] }
2021
axum = { version = "=0.8.1", default-features = false, features = ["http1", "json", "tokio", "tracing"] }
2122
byteorder = { version = "=1.5.0", default-features = false }
22-
clap = { version = "=4.5.23", default-features = false, features = ["std", "derive", "env"] }
23+
clap = { version = "=4.5.27", default-features = false, features = ["std", "derive", "env"] }
2324
fastrand = { version = "=2.3.0", default-features = false }
2425
serde = { version = "=1.0.217", default-features = false, features = ["derive"] }
25-
serde_json = { version = "=1.0.134", default-features = false }
26-
thiserror = { version = "=2.0.9", default-features = false }
27-
tokio = { version = "=1.42.0", default-features = false, features = ["rt-multi-thread", "process", "tracing"] }
26+
serde_json = { version = "=1.0.137", default-features = false }
27+
thiserror = { version = "=2.0.11", default-features = false }
28+
tokio = { version = "=1.43.0", default-features = false, features = ["rt-multi-thread", "process", "tracing"] }
2829
tracing = { version = "=0.1.41", default-features = false, features = ["log"] }
2930
tracing-subscriber = { version = "=0.3.19", default-features = false, features = ["ansi", "env-filter", "fmt", "json"] }
3031
vsock = { version = "=0.5.1", default-features = false }

parent/src/imds.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: MIT-0
33

4-
use aws_config::imds::client::Client;
4+
use aws_config::imds::client::{Client, ImdsResponseRetryClassifier};
55
use aws_config::imds::credentials::ImdsCredentialsProvider;
66
use aws_credential_types::provider::ProvideCredentials;
7+
use aws_smithy_runtime_api::client::retries::classifiers::SharedRetryClassifier;
78

89
use crate::constants;
910
use crate::errors::AppError;
@@ -14,6 +15,9 @@ pub async fn load_credentials(profile: Option<String>) -> Result<Credential, App
1415
.endpoint("http://169.254.169.254:80") // hardcode IMDS IPv4 address to avoid checking for credentials on the file system
1516
.expect("valid URL")
1617
.token_ttl(constants::IMDS_TOKEN_TTL)
18+
.retry_classifier(SharedRetryClassifier::new(
19+
ImdsResponseRetryClassifier::default().with_retry_connect_timeouts(true),
20+
))
1721
.build();
1822

1923
let imds = {

0 commit comments

Comments
 (0)