Skip to content

Commit 2660ddd

Browse files
committed
Update to remove deprecated feature/s3/manager.
Resolve CVEs
1 parent a356e76 commit 2660ddd

3 files changed

Lines changed: 121 additions & 65 deletions

File tree

go.mod

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,32 @@ module github.com/patrickdk77/aws-s3-proxy
33
go 1.26
44

55
require (
6-
github.com/aws/aws-sdk-go-v2 v1.41.5
7-
github.com/aws/aws-sdk-go-v2/config v1.32.14
8-
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.13
9-
github.com/aws/aws-sdk-go-v2/service/s3 v1.99.0
10-
github.com/aws/smithy-go v1.24.3
11-
github.com/go-openapi/swag/typeutils v0.25.5
6+
github.com/aws/aws-sdk-go-v2 v1.41.7
7+
github.com/aws/aws-sdk-go-v2/config v1.32.17
8+
github.com/aws/aws-sdk-go-v2/service/s3 v1.100.1
9+
github.com/aws/smithy-go v1.25.1
10+
github.com/go-openapi/swag/typeutils v0.26.0
1211
github.com/golang-jwt/jwt/v4 v4.5.2
1312
github.com/karlseguin/ccache/v3 v3.0.8
1413
github.com/prometheus/client_golang v1.23.2
1514
github.com/stretchr/testify v1.11.1
1615
)
1716

1817
require (
19-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect
20-
github.com/aws/aws-sdk-go-v2/credentials v1.19.14 // indirect
21-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 // indirect
22-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect
23-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect
24-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect
25-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 // indirect
26-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect
27-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 // indirect
28-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 // indirect
29-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 // indirect
30-
github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 // indirect
31-
github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 // indirect
32-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 // indirect
33-
github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 // indirect
18+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 // indirect
19+
github.com/aws/aws-sdk-go-v2/credentials v1.19.16 // indirect
20+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect
21+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect
22+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect
23+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 // indirect
24+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect
25+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.15 // indirect
26+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect
27+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.23 // indirect
28+
github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect
29+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect
30+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 // indirect
31+
github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect
3432
github.com/beorn7/perks v1.0.1 // indirect
3533
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3634
github.com/davecgh/go-spew v1.1.1 // indirect

go.sum

Lines changed: 39 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,39 @@
1-
github.com/aws/aws-sdk-go-v2 v1.41.5 h1:dj5kopbwUsVUVFgO4Fi5BIT3t4WyqIDjGKCangnV/yY=
2-
github.com/aws/aws-sdk-go-v2 v1.41.5/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
3-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 h1:eBMB84YGghSocM7PsjmmPffTa+1FBUeNvGvFou6V/4o=
4-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI=
5-
github.com/aws/aws-sdk-go-v2/config v1.32.14 h1:opVIRo/ZbbI8OIqSOKmpFaY7IwfFUOCCXBsUpJOwDdI=
6-
github.com/aws/aws-sdk-go-v2/config v1.32.14/go.mod h1:U4/V0uKxh0Tl5sxmCBZ3AecYny4UNlVmObYjKuuaiOo=
7-
github.com/aws/aws-sdk-go-v2/credentials v1.19.14 h1:n+UcGWAIZHkXzYt87uMFBv/l8THYELoX6gVcUvgl6fI=
8-
github.com/aws/aws-sdk-go-v2/credentials v1.19.14/go.mod h1:cJKuyWB59Mqi0jM3nFYQRmnHVQIcgoxjEMAbLkpr62w=
9-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 h1:NUS3K4BTDArQqNu2ih7yeDLaS3bmHD0YndtA6UP884g=
10-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21/go.mod h1:YWNWJQNjKigKY1RHVJCuupeWDrrHjRqHm0N9rdrWzYI=
11-
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.13 h1:uMC4oL6G3MNhodo358QEqSDjrgvzV3TUQ58nyQSGq2E=
12-
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.13/go.mod h1:Cer86AE2686DvVUe57LPve3jUBmbujuaonSX8pNzGgw=
13-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 h1:Rgg6wvjjtX8bNHcvi9OnXWwcE0a2vGpbwmtICOsvcf4=
14-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21/go.mod h1:A/kJFst/nm//cyqonihbdpQZwiUhhzpqTsdbhDdRF9c=
15-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 h1:PEgGVtPoB6NTpPrBgqSE5hE/o47Ij9qk/SEZFbUOe9A=
16-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21/go.mod h1:p+hz+PRAYlY3zcpJhPwXlLC4C+kqn70WIHwnzAfs6ps=
17-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=
18-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
19-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 h1:rWyie/PxDRIdhNf4DzRk0lvjVOqFJuNnO8WwaIRVxzQ=
20-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22/go.mod h1:zd/JsJ4P7oGfUhXn1VyLqaRZwPmZwg44Jf2dS84Dm3Y=
21-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=
22-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
23-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 h1:JRaIgADQS/U6uXDqlPiefP32yXTda7Kqfx+LgspooZM=
24-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13/go.mod h1:CEuVn5WqOMilYl+tbccq8+N2ieCy0gVn3OtRb0vBNNM=
25-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 h1:c31//R3xgIJMSC8S6hEVq+38DcvUlgFY0FM6mSI5oto=
26-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21/go.mod h1:r6+pf23ouCB718FUxaqzZdbpYFyDtehyZcmP5KL9FkA=
27-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 h1:ZlvrNcHSFFWURB8avufQq9gFsheUgjVD9536obIknfM=
28-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21/go.mod h1:cv3TNhVrssKR0O/xxLJVRfd2oazSnZnkUeTf6ctUwfQ=
29-
github.com/aws/aws-sdk-go-v2/service/s3 v1.99.0 h1:hlSuz394kV0vhv9drL5lhuEFbEOEP1VyQpy15qWh1Pk=
30-
github.com/aws/aws-sdk-go-v2/service/s3 v1.99.0/go.mod h1:uoA43SdFwacedBfSgfFSjjCvYe8aYBS7EnU5GZ/YKMM=
31-
github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 h1:QKZH0S178gCmFEgst8hN0mCX1KxLgHBKKY/CLqwP8lg=
32-
github.com/aws/aws-sdk-go-v2/service/signin v1.0.9/go.mod h1:7yuQJoT+OoH8aqIxw9vwF+8KpvLZ8AWmvmUWHsGQZvI=
33-
github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 h1:lFd1+ZSEYJZYvv9d6kXzhkZu07si3f+GQ1AaYwa2LUM=
34-
github.com/aws/aws-sdk-go-v2/service/sso v1.30.15/go.mod h1:WSvS1NLr7JaPunCXqpJnWk1Bjo7IxzZXrZi1QQCkuqM=
35-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 h1:dzztQ1YmfPrxdrOiuZRMF6fuOwWlWpD2StNLTceKpys=
36-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19/go.mod h1:YO8TrYtFdl5w/4vmjL8zaBSsiNp3w0L1FfKVKenZT7w=
37-
github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 h1:p8ogvvLugcR/zLBXTXrTkj0RYBUdErbMnAFFp12Lm/U=
38-
github.com/aws/aws-sdk-go-v2/service/sts v1.41.10/go.mod h1:60dv0eZJfeVXfbT1tFJinbHrDfSJ2GZl4Q//OSSNAVw=
39-
github.com/aws/smithy-go v1.24.3 h1:XgOAaUgx+HhVBoP4v8n6HCQoTRDhoMghKqw4LNHsDNg=
40-
github.com/aws/smithy-go v1.24.3/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
1+
github.com/aws/aws-sdk-go-v2 v1.41.7 h1:DWpAJt66FmnnaRIOT/8ASTucrvuDPZASqhhLey6tLY8=
2+
github.com/aws/aws-sdk-go-v2 v1.41.7/go.mod h1:4LAfZOPHNVNQEckOACQx60Y8pSRjIkNZQz1w92xpMJc=
3+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 h1:gx1AwW1Iyk9Z9dD9F4akX5gnN3QZwUB20GGKH/I+Rho=
4+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10/go.mod h1:qqY157uZoqm5OXq/amuaBJyC9hgBCBQnsaWnPe905GY=
5+
github.com/aws/aws-sdk-go-v2/config v1.32.17 h1:FpL4/758/diKwqbytU0prpuiu60fgXKUWCpDJtApclU=
6+
github.com/aws/aws-sdk-go-v2/config v1.32.17/go.mod h1:OXqUMzgXytfoF9JaKkhrOYsyh72t9G+MJH8mMRaexOE=
7+
github.com/aws/aws-sdk-go-v2/credentials v1.19.16 h1:r3RJBuU7X9ibt8RHbMjWE6y60QbKBiII6wSrXnapxSU=
8+
github.com/aws/aws-sdk-go-v2/credentials v1.19.16/go.mod h1:6cx7zqDENJDbBIIWX6P8s0h6hqHC8Avbjh9Dseo27ug=
9+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 h1:UuSfcORqNSz/ey3VPRS8TcVH2Ikf0/sC+Hdj400QI6U=
10+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23/go.mod h1:+G/OSGiOFnSOkYloKj/9M35s74LgVAdJBSD5lsFfqKg=
11+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 h1:GpT/TrnBYuE5gan2cZbTtvP+JlHsutdmlV2YfEyNde0=
12+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23/go.mod h1:xYWD6BS9ywC5bS3sz9Xh04whO/hzK2plt2Zkyrp4JuA=
13+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 h1:bpd8vxhlQi2r1hiueOw02f/duEPTMK59Q4QMAoTTtTo=
14+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23/go.mod h1:15DfR2nw+CRHIk0tqNyifu3G1YdAOy68RftkhMDDwYk=
15+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 h1:OQqn11BtaYv1WLUowvcA30MpzIu8Ti4pcLPIIyoKZrA=
16+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24/go.mod h1:X5ZJyfwVrWA96GzPmUCWFQaEARPR7gCrpq2E92PJwAE=
17+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 h1:FLudkZLt5ci0ozzgkVo8BJGwvqNaZbTWb3UcucAateA=
18+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9/go.mod h1:w7wZ/s9qK7c8g4al+UyoF1Sp/Z45UwMGcqIzLWVQHWk=
19+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.15 h1:ieLCO1JxUWuxTZ1cRd0GAaeX7O6cIxnwk7tc1LsQhC4=
20+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.15/go.mod h1:e3IzZvQ3kAWNykvE0Tr0RDZCMFInMvhku3qNpcIQXhM=
21+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 h1:pbrxO/kuIwgEsOPLkaHu0O+m4fNgLU8B3vxQ+72jTPw=
22+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23/go.mod h1:/CMNUqoj46HpS3MNRDEDIwcgEnrtZlKRaHNaHxIFpNA=
23+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.23 h1:03xatSQO4+AM1lTAbnRg5OK528EUg744nW7F73U8DKw=
24+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.23/go.mod h1:M8l3mwgx5ToK7wot2sBBce/ojzgnPzZXUV445gTSyE8=
25+
github.com/aws/aws-sdk-go-v2/service/s3 v1.100.1 h1:mxuT1xE+dI54NW3RkNjP8DUT5HXqbkiAFvfdyDFwE5c=
26+
github.com/aws/aws-sdk-go-v2/service/s3 v1.100.1/go.mod h1:L2dcoOgS2VSgbPLvpak2NyUPsO1TBN7M45Z4H7DlRc4=
27+
github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 h1:TdJ+HdzOBhU8+iVAOGUTU63VXopcumCOF1paFulHWZc=
28+
github.com/aws/aws-sdk-go-v2/service/signin v1.0.11/go.mod h1:R82ZRExE/nheo0N+T8zHPcLRTcH8MGsnR3BiVGX0TwI=
29+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 h1:7byT8HUWrgoRp6sXjxtZwgOKfhss5fW6SkLBtqzgRoE=
30+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.17/go.mod h1:xNWknVi4Ezm1vg1QsB/5EWpAJURq22uqd38U8qKvOJc=
31+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 h1:+1Kl1zx6bWi4X7cKi3VYh29h8BvsCoHQEQ6ST9X8w7w=
32+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg=
33+
github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 h1:F/M5Y9I3nwr2IEpshZgh1GeHpOItExNM9L1euNuh/fk=
34+
github.com/aws/aws-sdk-go-v2/service/sts v1.42.1/go.mod h1:mTNxImtovCOEEuD65mKW7DCsL+2gjEH+RPEAexAzAio=
35+
github.com/aws/smithy-go v1.25.1 h1:J8ERsGSU7d+aCmdQur5Txg6bVoYelvQJgtZehD12GkI=
36+
github.com/aws/smithy-go v1.25.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
4137
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
4238
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
4339
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
@@ -47,8 +43,11 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
4743
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4844
github.com/go-openapi/swag/typeutils v0.25.5 h1:EFJ+PCga2HfHGdo8s8VJXEVbeXRCYwzzr9u4rJk7L7E=
4945
github.com/go-openapi/swag/typeutils v0.25.5/go.mod h1:itmFmScAYE1bSD8C4rS0W+0InZUBrB2xSPbWt6DLGuc=
46+
github.com/go-openapi/swag/typeutils v0.26.0 h1:2kdEwdiNWy+JJdOvu5MA2IIg2SylWAFuuyQIKYybfq4=
47+
github.com/go-openapi/swag/typeutils v0.26.0/go.mod h1:oovDuIUvTrEHVMqWilQzKzV4YlSKgyZmFh7AlfABNVE=
5048
github.com/go-openapi/testify/v2 v2.4.0 h1:8nsPrHVCWkQ4p8h1EsRVymA2XABB4OT40gcvAu+voFM=
5149
github.com/go-openapi/testify/v2 v2.4.0/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54=
50+
github.com/go-openapi/testify/v2 v2.4.2 h1:tiByHpvE9uHrrKjOszax7ZvKB7QOgizBWGBLuq0ePx4=
5251
github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
5352
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
5453
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=

internal/service/aws-region-helper.go

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,23 @@ package service
22

33
import (
44
"context"
5+
"errors"
6+
"fmt"
7+
"net/http"
58
"time"
69

710
"github.com/aws/aws-sdk-go-v2/aws"
811
"github.com/aws/aws-sdk-go-v2/service/s3"
12+
"github.com/aws/smithy-go/middleware"
13+
smithyhttp "github.com/aws/smithy-go/transport/http"
914
"github.com/patrickdk77/aws-s3-proxy/internal/config"
10-
11-
"github.com/aws/aws-sdk-go-v2/feature/s3/manager"
1215
)
1316

14-
// GuessBucketRegion returns a region of the bucket
17+
const bucketRegionHeader = "X-Amz-Bucket-Region"
18+
19+
// GuessBucketRegion returns a region of the bucket.
20+
// This replicates the logic of manager.GetBucketRegion from feature/s3/manager,
21+
// using HeadBucket directly to avoid the dependency on that package as it was deprecated in the SDK.
1522
func GuessBucketRegion(bucket string) (string, error) {
1623
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
1724
defer cancel()
@@ -22,5 +29,57 @@ func GuessBucketRegion(bucket string) (string, error) {
2229
o.UsePathStyle = true
2330
}
2431
})
25-
return manager.GetBucketRegion(ctx, client, bucket)
32+
33+
var capture deserializeBucketRegion
34+
_, err := client.HeadBucket(ctx, &s3.HeadBucketInput{
35+
Bucket: aws.String(bucket),
36+
}, func(o *s3.Options) {
37+
o.APIOptions = append(o.APIOptions, capture.RegisterMiddleware)
38+
o.Credentials = nil
39+
})
40+
41+
if len(capture.BucketRegion) == 0 && err != nil {
42+
var httpStatusErr interface {
43+
HTTPStatusCode() int
44+
}
45+
if !errors.As(err, &httpStatusErr) {
46+
return "", err
47+
}
48+
if httpStatusErr.HTTPStatusCode() == http.StatusNotFound {
49+
return "", fmt.Errorf("bucket not found: %s", bucket)
50+
}
51+
return "", err
52+
}
53+
54+
return capture.BucketRegion, nil
55+
}
56+
57+
type deserializeBucketRegion struct {
58+
BucketRegion string
59+
}
60+
61+
func (d *deserializeBucketRegion) RegisterMiddleware(stack *middleware.Stack) error {
62+
return stack.Deserialize.Add(d, middleware.After)
63+
}
64+
65+
func (d *deserializeBucketRegion) ID() string {
66+
return "DeserializeBucketRegion"
67+
}
68+
69+
func (d *deserializeBucketRegion) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
70+
out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
71+
) {
72+
out, metadata, err = next.HandleDeserialize(ctx, in)
73+
if err != nil {
74+
return out, metadata, err
75+
}
76+
77+
resp, ok := out.RawResponse.(*smithyhttp.Response)
78+
if !ok {
79+
return out, metadata, fmt.Errorf("unknown transport type %T", out.RawResponse)
80+
}
81+
82+
d.BucketRegion = resp.Header.Get(bucketRegionHeader)
83+
84+
return out, metadata, err
2685
}

0 commit comments

Comments
 (0)