Merge pull request #17609 from rook/mergify/bp/release-1.20/pr-17572

object: remove AWS SDK v1 dependency (backport #17572)
This commit is contained in:
Travis Nielsen authored and GitHub committed 2026-05-27 11:23:55 -06:00
commit a88cee31e0
11 files changed
+179 -221

No files matched your search

+20 -23
View File
@@ -13,14 +13,13 @@ replace (
)
require (
github.com/IBM/keyprotect-go-client v0.15.1
github.com/aws/aws-sdk-go v1.55.8
github.com/aws/aws-sdk-go-v2 v1.41.5
github.com/aws/aws-sdk-go-v2/config v1.32.14
github.com/aws/aws-sdk-go-v2/credentials v1.19.14
github.com/aws/aws-sdk-go-v2/service/s3 v1.99.0
github.com/aws/aws-sdk-go-v2/service/sns v1.39.15
github.com/aws/smithy-go v1.24.3
github.com/IBM/keyprotect-go-client v0.16.0
github.com/aws/aws-sdk-go-v2 v1.41.7
github.com/aws/aws-sdk-go-v2/config v1.32.18
github.com/aws/aws-sdk-go-v2/credentials v1.19.17
github.com/aws/aws-sdk-go-v2/service/s3 v1.101.0
github.com/aws/aws-sdk-go-v2/service/sns v1.39.17
github.com/aws/smithy-go v1.25.1
github.com/banzaicloud/k8s-objectmatcher v1.8.0
github.com/ceph/ceph-csi-operator/api v0.0.0-20260527105556-70b2f7cfddf0
github.com/ceph/ceph-csi/api v0.0.0-20241216133622-88b7e0d6684f
@@ -72,20 +71,19 @@ require (
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect
github.com/ansel1/merry v1.8.1 // indirect
github.com/ansel1/merry/v2 v2.2.2 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.15 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.23 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
@@ -134,7 +132,6 @@ require (
github.com/hashicorp/vault/api/auth/approle v0.8.0 // indirect
github.com/hashicorp/vault/api/auth/kubernetes v0.8.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
+40 -60
View File
@@ -451,8 +451,8 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/IBM/keyprotect-go-client v0.5.1/go.mod h1:5TwDM/4FRJq1ZOlwQL1xFahLWQ3TveR88VmL1u3njyI=
github.com/IBM/keyprotect-go-client v0.15.1 h1:m4qzqF5zOumRxKZ8s7vtK7A/UV/D278L8xpRG+WgT0s=
github.com/IBM/keyprotect-go-client v0.15.1/go.mod h1:asXtHwL/4uCHA221Vd/7SkXEi2pcRHDzPyyksc1DthE=
github.com/IBM/keyprotect-go-client v0.16.0 h1:FAel9YYJvRym4fuj/SIwtpT3RkDBJo+bLkMNzFEeSpA=
github.com/IBM/keyprotect-go-client v0.16.0/go.mod h1:ya2yvOPBIgZUWiPDsHDgxeYrTy1pQk/70MY61k6Fdyw=
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
@@ -488,48 +488,44 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY
github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/aws/aws-sdk-go v1.44.164/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ=
github.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk=
github.com/aws/aws-sdk-go-v2 v1.41.5 h1:dj5kopbwUsVUVFgO4Fi5BIT3t4WyqIDjGKCangnV/yY=
github.com/aws/aws-sdk-go-v2 v1.41.5/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 h1:eBMB84YGghSocM7PsjmmPffTa+1FBUeNvGvFou6V/4o=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI=
github.com/aws/aws-sdk-go-v2/config v1.32.14 h1:opVIRo/ZbbI8OIqSOKmpFaY7IwfFUOCCXBsUpJOwDdI=
github.com/aws/aws-sdk-go-v2/config v1.32.14/go.mod h1:U4/V0uKxh0Tl5sxmCBZ3AecYny4UNlVmObYjKuuaiOo=
github.com/aws/aws-sdk-go-v2/credentials v1.19.14 h1:n+UcGWAIZHkXzYt87uMFBv/l8THYELoX6gVcUvgl6fI=
github.com/aws/aws-sdk-go-v2/credentials v1.19.14/go.mod h1:cJKuyWB59Mqi0jM3nFYQRmnHVQIcgoxjEMAbLkpr62w=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 h1:NUS3K4BTDArQqNu2ih7yeDLaS3bmHD0YndtA6UP884g=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21/go.mod h1:YWNWJQNjKigKY1RHVJCuupeWDrrHjRqHm0N9rdrWzYI=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 h1:Rgg6wvjjtX8bNHcvi9OnXWwcE0a2vGpbwmtICOsvcf4=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21/go.mod h1:A/kJFst/nm//cyqonihbdpQZwiUhhzpqTsdbhDdRF9c=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 h1:PEgGVtPoB6NTpPrBgqSE5hE/o47Ij9qk/SEZFbUOe9A=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21/go.mod h1:p+hz+PRAYlY3zcpJhPwXlLC4C+kqn70WIHwnzAfs6ps=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 h1:rWyie/PxDRIdhNf4DzRk0lvjVOqFJuNnO8WwaIRVxzQ=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22/go.mod h1:zd/JsJ4P7oGfUhXn1VyLqaRZwPmZwg44Jf2dS84Dm3Y=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 h1:JRaIgADQS/U6uXDqlPiefP32yXTda7Kqfx+LgspooZM=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13/go.mod h1:CEuVn5WqOMilYl+tbccq8+N2ieCy0gVn3OtRb0vBNNM=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 h1:c31//R3xgIJMSC8S6hEVq+38DcvUlgFY0FM6mSI5oto=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21/go.mod h1:r6+pf23ouCB718FUxaqzZdbpYFyDtehyZcmP5KL9FkA=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 h1:ZlvrNcHSFFWURB8avufQq9gFsheUgjVD9536obIknfM=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21/go.mod h1:cv3TNhVrssKR0O/xxLJVRfd2oazSnZnkUeTf6ctUwfQ=
github.com/aws/aws-sdk-go-v2/service/s3 v1.99.0 h1:hlSuz394kV0vhv9drL5lhuEFbEOEP1VyQpy15qWh1Pk=
github.com/aws/aws-sdk-go-v2/service/s3 v1.99.0/go.mod h1:uoA43SdFwacedBfSgfFSjjCvYe8aYBS7EnU5GZ/YKMM=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 h1:QKZH0S178gCmFEgst8hN0mCX1KxLgHBKKY/CLqwP8lg=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.9/go.mod h1:7yuQJoT+OoH8aqIxw9vwF+8KpvLZ8AWmvmUWHsGQZvI=
github.com/aws/aws-sdk-go-v2/service/sns v1.39.15 h1:rOWMUrXJPcTXnk75ja6Bxv1P+j83dPhIWjfJ2cujj34=
github.com/aws/aws-sdk-go-v2/service/sns v1.39.15/go.mod h1:4exx1wZR0pe+WcMbas8OZ2krRrBbW7IUUvLXCCQbjkg=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 h1:lFd1+ZSEYJZYvv9d6kXzhkZu07si3f+GQ1AaYwa2LUM=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.15/go.mod h1:WSvS1NLr7JaPunCXqpJnWk1Bjo7IxzZXrZi1QQCkuqM=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 h1:dzztQ1YmfPrxdrOiuZRMF6fuOwWlWpD2StNLTceKpys=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19/go.mod h1:YO8TrYtFdl5w/4vmjL8zaBSsiNp3w0L1FfKVKenZT7w=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 h1:p8ogvvLugcR/zLBXTXrTkj0RYBUdErbMnAFFp12Lm/U=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.10/go.mod h1:60dv0eZJfeVXfbT1tFJinbHrDfSJ2GZl4Q//OSSNAVw=
github.com/aws/smithy-go v1.24.3 h1:XgOAaUgx+HhVBoP4v8n6HCQoTRDhoMghKqw4LNHsDNg=
github.com/aws/smithy-go v1.24.3/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
github.com/aws/aws-sdk-go-v2 v1.41.7 h1:DWpAJt66FmnnaRIOT/8ASTucrvuDPZASqhhLey6tLY8=
github.com/aws/aws-sdk-go-v2 v1.41.7/go.mod h1:4LAfZOPHNVNQEckOACQx60Y8pSRjIkNZQz1w92xpMJc=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 h1:gx1AwW1Iyk9Z9dD9F4akX5gnN3QZwUB20GGKH/I+Rho=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10/go.mod h1:qqY157uZoqm5OXq/amuaBJyC9hgBCBQnsaWnPe905GY=
github.com/aws/aws-sdk-go-v2/config v1.32.18 h1:Hcia46bxhGgF3BaSnG8nSNCWmqTK6bj9xN9/FJ3WK6Q=
github.com/aws/aws-sdk-go-v2/config v1.32.18/go.mod h1:zEjCAYmxqDadH1WX8CdBvmLKhUEUVFgKRQG38zjDmrY=
github.com/aws/aws-sdk-go-v2/credentials v1.19.17 h1:gP2nkGsS+KMvF/jfFz2Vv2qiiOqWKyPACSzPsqHgoW8=
github.com/aws/aws-sdk-go-v2/credentials v1.19.17/go.mod h1:Bsew3S/moG5iT77giPj1q8wb/s0RE5/QfH+ASjYtuQc=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 h1:UuSfcORqNSz/ey3VPRS8TcVH2Ikf0/sC+Hdj400QI6U=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23/go.mod h1:+G/OSGiOFnSOkYloKj/9M35s74LgVAdJBSD5lsFfqKg=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 h1:GpT/TrnBYuE5gan2cZbTtvP+JlHsutdmlV2YfEyNde0=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23/go.mod h1:xYWD6BS9ywC5bS3sz9Xh04whO/hzK2plt2Zkyrp4JuA=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 h1:bpd8vxhlQi2r1hiueOw02f/duEPTMK59Q4QMAoTTtTo=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23/go.mod h1:15DfR2nw+CRHIk0tqNyifu3G1YdAOy68RftkhMDDwYk=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 h1:OQqn11BtaYv1WLUowvcA30MpzIu8Ti4pcLPIIyoKZrA=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24/go.mod h1:X5ZJyfwVrWA96GzPmUCWFQaEARPR7gCrpq2E92PJwAE=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 h1:FLudkZLt5ci0ozzgkVo8BJGwvqNaZbTWb3UcucAateA=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9/go.mod h1:w7wZ/s9qK7c8g4al+UyoF1Sp/Z45UwMGcqIzLWVQHWk=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.15 h1:ieLCO1JxUWuxTZ1cRd0GAaeX7O6cIxnwk7tc1LsQhC4=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.15/go.mod h1:e3IzZvQ3kAWNykvE0Tr0RDZCMFInMvhku3qNpcIQXhM=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 h1:pbrxO/kuIwgEsOPLkaHu0O+m4fNgLU8B3vxQ+72jTPw=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23/go.mod h1:/CMNUqoj46HpS3MNRDEDIwcgEnrtZlKRaHNaHxIFpNA=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.23 h1:03xatSQO4+AM1lTAbnRg5OK528EUg744nW7F73U8DKw=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.23/go.mod h1:M8l3mwgx5ToK7wot2sBBce/ojzgnPzZXUV445gTSyE8=
github.com/aws/aws-sdk-go-v2/service/s3 v1.101.0 h1:etqBTKY581iwLL/H/S2sVgk3C9lAsTJFeXWFDsDcWOU=
github.com/aws/aws-sdk-go-v2/service/s3 v1.101.0/go.mod h1:L2dcoOgS2VSgbPLvpak2NyUPsO1TBN7M45Z4H7DlRc4=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 h1:TdJ+HdzOBhU8+iVAOGUTU63VXopcumCOF1paFulHWZc=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.11/go.mod h1:R82ZRExE/nheo0N+T8zHPcLRTcH8MGsnR3BiVGX0TwI=
github.com/aws/aws-sdk-go-v2/service/sns v1.39.17 h1:synXIPC/L4Cc489P0XDcrVJzHSLj7krKRpFLalbGM2k=
github.com/aws/aws-sdk-go-v2/service/sns v1.39.17/go.mod h1:4ABZnI23uNK37waIjGwkubnCwGhepIt9x1GvASfljJA=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 h1:7byT8HUWrgoRp6sXjxtZwgOKfhss5fW6SkLBtqzgRoE=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.17/go.mod h1:xNWknVi4Ezm1vg1QsB/5EWpAJURq22uqd38U8qKvOJc=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0 h1:nDARhv/oF55bcxF7rCI/4PDxOKnVXVWwDuDwCs2I2SQ=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.0/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg=
github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 h1:F/M5Y9I3nwr2IEpshZgh1GeHpOItExNM9L1euNuh/fk=
github.com/aws/aws-sdk-go-v2/service/sts v1.42.1/go.mod h1:mTNxImtovCOEEuD65mKW7DCsL+2gjEH+RPEAexAzAio=
github.com/aws/smithy-go v1.25.1 h1:J8ERsGSU7d+aCmdQur5Txg6bVoYelvQJgtZehD12GkI=
github.com/aws/smithy-go v1.25.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
github.com/banzaicloud/k8s-objectmatcher v1.8.0 h1:Nugn25elKtPMTA2br+JgHNeSQ04sc05MDPmpJnd1N2A=
github.com/banzaicloud/k8s-objectmatcher v1.8.0/go.mod h1:p2LSNAjlECf07fbhDyebTkPUIYnU05G+WfGgkTmgeMg=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -654,8 +650,6 @@ github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
@@ -955,7 +949,6 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9
github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY=
github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48=
github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
@@ -1006,9 +999,7 @@ github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -1074,9 +1065,6 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
@@ -1085,8 +1073,6 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
@@ -1316,11 +1302,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
@@ -1669,7 +1653,6 @@ golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1690,7 +1673,6 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1700,9 +1682,7 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+10 -10
View File
@@ -23,7 +23,7 @@ import (
"net/http"
"strings"
s3v2 "github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3"
s3types "github.com/aws/aws-sdk-go-v2/service/s3/types"
smithy "github.com/aws/smithy-go"
"github.com/ceph/go-ceph/rgw/admin"
@@ -765,10 +765,10 @@ func (p *Provisioner) setBucketPolicy(bucket *bucket) error {
additionalConfig := bucket.additionalConfig
ctx := context.TODO()
svc := p.s3Agent.ClientV2
svc := p.s3Agent.Client
var livePolicy *string
policyResp, err := svc.GetBucketPolicy(ctx, &s3v2.GetBucketPolicyInput{
policyResp, err := svc.GetBucketPolicy(ctx, &s3.GetBucketPolicyInput{
Bucket: &p.bucketName,
})
if err != nil {
@@ -790,14 +790,14 @@ func (p *Provisioner) setBucketPolicy(bucket *bucket) error {
log.NamedDebug(nsName, logger, "Policy for bucket %q has changed. diff:%s", p.bucketName, diff)
if additionalConfig.bucketPolicy == nil {
_, err = svc.DeleteBucketPolicy(ctx, &s3v2.DeleteBucketPolicyInput{
_, err = svc.DeleteBucketPolicy(ctx, &s3.DeleteBucketPolicyInput{
Bucket: &p.bucketName,
})
if err != nil {
return errors.Wrapf(err, "failed to delete policy for bucket %q", p.bucketName)
}
} else {
_, err = svc.PutBucketPolicy(ctx, &s3v2.PutBucketPolicyInput{
_, err = svc.PutBucketPolicy(ctx, &s3.PutBucketPolicyInput{
Bucket: &p.bucketName,
Policy: additionalConfig.bucketPolicy,
})
@@ -814,10 +814,10 @@ func (p *Provisioner) setBucketLifecycle(bucket *bucket) error {
additionalConfig := bucket.additionalConfig
ctx := context.TODO()
svc := p.s3Agent.ClientV2
var liveLc *s3v2.GetBucketLifecycleConfigurationOutput
svc := p.s3Agent.Client
var liveLc *s3.GetBucketLifecycleConfigurationOutput
liveLc, err := svc.GetBucketLifecycleConfiguration(ctx, &s3v2.GetBucketLifecycleConfigurationInput{
liveLc, err := svc.GetBucketLifecycleConfiguration(ctx, &s3.GetBucketLifecycleConfigurationInput{
Bucket: &p.bucketName,
})
if err != nil {
@@ -868,14 +868,14 @@ func (p *Provisioner) setBucketLifecycle(bucket *bucket) error {
log.NamedDebug(nsName, logger, "Lifecycle configuration for bucket %q has changed. diff:%s", p.bucketName, diff)
if additionalConfig.bucketLifecycle == nil {
_, err = svc.DeleteBucketLifecycle(ctx, &s3v2.DeleteBucketLifecycleInput{
_, err = svc.DeleteBucketLifecycle(ctx, &s3.DeleteBucketLifecycleInput{
Bucket: &p.bucketName,
})
if err != nil {
return errors.Wrapf(err, "failed to delete lifecycle configuration for bucket %q", p.bucketName)
}
} else {
_, err = svc.PutBucketLifecycleConfiguration(ctx, &s3v2.PutBucketLifecycleConfigurationInput{
_, err = svc.PutBucketLifecycleConfiguration(ctx, &s3.PutBucketLifecycleConfigurationInput{
Bucket: &p.bucketName,
LifecycleConfiguration: confLc,
})
@@ -26,7 +26,7 @@ import (
"strings"
"testing"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/ceph/go-ceph/rgw/admin"
cephv1 "github.com/rook/rook/pkg/apis/ceph.rook.io/v1"
rookclient "github.com/rook/rook/pkg/client/clientset/versioned/fake"
@@ -20,7 +20,7 @@ package notification
import (
"context"
s3v2 "github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3"
s3types "github.com/aws/aws-sdk-go-v2/service/s3/types"
"github.com/ceph/go-ceph/rgw/admin"
"github.com/coreos/pkg/capnslog"
@@ -144,7 +144,7 @@ var createNotification = func(p provisioner, bucket *bktv1alpha1.ObjectBucket, t
if err != nil {
return errors.Wrapf(err, "failed to create S3 agent for CephBucketNotification %q provisioning for bucket %q", bnName, bucketName)
}
_, err = s3Agent.ClientV2.PutBucketNotificationConfiguration(p.opManagerContext, &s3v2.PutBucketNotificationConfigurationInput{
_, err = s3Agent.Client.PutBucketNotificationConfiguration(p.opManagerContext, &s3.PutBucketNotificationConfigurationInput{
Bucket: &bucketName,
NotificationConfiguration: &s3types.NotificationConfiguration{
TopicConfigurations: []s3types.TopicConfiguration{
@@ -176,7 +176,7 @@ var getAllRGWNotifications = func(p provisioner, ob *bktv1alpha1.ObjectBucket) (
if err != nil {
return nil, errors.Wrapf(err, "failed to create S3 agent for CephBucketNotification provisioning for bucket %q", bucketName)
}
nc, err := s3Agent.ClientV2.GetBucketNotificationConfiguration(p.opManagerContext, &s3v2.GetBucketNotificationConfigurationInput{
nc, err := s3Agent.Client.GetBucketNotificationConfiguration(p.opManagerContext, &s3.GetBucketNotificationConfigurationInput{
Bucket: &bucketName,
ExpectedBucketOwner: &ownerName,
})
@@ -204,7 +204,7 @@ var deleteNotification = func(p provisioner, bucket *bktv1alpha1.ObjectBucket, n
if err != nil {
return errors.Wrapf(err, "failed to create S3 agent for deleting all bucket notifications from bucket %q", bucketName)
}
if err := DeleteBucketNotification(context.TODO(), s3Agent.ClientV2, &DeleteBucketNotificationRequestInput{
if err := DeleteBucketNotification(context.TODO(), s3Agent.Client, &DeleteBucketNotificationRequestInput{
Bucket: &bucket.Spec.Endpoint.BucketName,
}, notificationId); err != nil {
return errors.Wrapf(err, "failed to delete bucket notification %q from bucket %q", notificationId, bucketName)
@@ -25,7 +25,7 @@ import (
"time"
v4signer "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
s3v2 "github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/pkg/errors"
)
@@ -53,7 +53,7 @@ const emptyPayloadSHA256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495
// bucket notification configuration. This is not part of the standard AWS S3
// API, so we build and sign the HTTP request manually using the v2 client's
// credentials and endpoint.
func DeleteBucketNotification(ctx context.Context, client *s3v2.Client, input *DeleteBucketNotificationRequestInput, notificationId string) error {
func DeleteBucketNotification(ctx context.Context, client *s3.Client, input *DeleteBucketNotificationRequestInput, notificationId string) error {
if input == nil {
input = &DeleteBucketNotificationRequestInput{}
}
+5 -5
View File
@@ -20,7 +20,7 @@ import (
"context"
"fmt"
s3v2 "github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3"
"k8s.io/apimachinery/pkg/util/json"
)
@@ -162,17 +162,17 @@ func NewBucketPolicy(ps ...PolicyStatement) *BucketPolicy {
}
// PutBucketPolicy applies the policy to the bucket
func (s *S3Agent) PutBucketPolicy(bucket string, policy BucketPolicy) (*s3v2.PutBucketPolicyOutput, error) {
func (s *S3Agent) PutBucketPolicy(bucket string, policy BucketPolicy) (*s3.PutBucketPolicyOutput, error) {
confirmRemoveSelfBucketAccess := false
serializedPolicy, _ := json.Marshal(policy)
consumablePolicy := string(serializedPolicy)
p := &s3v2.PutBucketPolicyInput{
p := &s3.PutBucketPolicyInput{
Bucket: &bucket,
ConfirmRemoveSelfBucketAccess: &confirmRemoveSelfBucketAccess,
Policy: &consumablePolicy,
}
out, err := s.ClientV2.PutBucketPolicy(context.TODO(), p)
out, err := s.Client.PutBucketPolicy(context.TODO(), p)
if err != nil {
return out, err
}
@@ -180,7 +180,7 @@ func (s *S3Agent) PutBucketPolicy(bucket string, policy BucketPolicy) (*s3v2.Put
}
func (s *S3Agent) GetBucketPolicy(bucket string) (*BucketPolicy, error) {
out, err := s.ClientV2.GetBucketPolicy(context.TODO(), &s3v2.GetBucketPolicyInput{
out, err := s.Client.GetBucketPolicy(context.TODO(), &s3.GetBucketPolicyInput{
Bucket: &bucket,
})
if err != nil {
+19 -49
View File
@@ -25,30 +25,25 @@ import (
"net/url"
"strings"
v2aws "github.com/aws/aws-sdk-go-v2/aws"
v2creds "github.com/aws/aws-sdk-go-v2/credentials"
s3v2 "github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/s3"
s3types "github.com/aws/aws-sdk-go-v2/service/s3/types"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
awssession "github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/pkg/errors"
)
// Region for aws golang sdk
const CephRegion = "us-east-1"
// S3Agent wraps the s3.S3 structure to allow for wrapper methods
// S3Agent wraps the S3 client to allow for wrapper methods
type S3Agent struct {
Client *s3.S3 // v1 client
ClientV2 *s3v2.Client // v2 client
Client *s3.Client
}
func NewS3Agent(accessKey, secretKey, endpoint string, debug bool, tlsCert []byte, insecure bool, httpClient *http.Client) (*S3Agent, error) {
logLevel := aws.LogOff
var logMode aws.ClientLogMode
if debug {
logLevel = aws.LogDebug
logMode = aws.LogSigning
}
tlsEnabled := false
@@ -64,28 +59,6 @@ func NewS3Agent(accessKey, secretKey, endpoint string, debug bool, tlsCert []byt
}
}
// -----------------------------
// SDK v1 client initialization
// -----------------------------
v1Session, err := awssession.NewSession(
aws.NewConfig().
WithRegion(CephRegion).
WithCredentials(credentials.NewStaticCredentials(accessKey, secretKey, "")).
WithEndpoint(endpoint).
WithS3ForcePathStyle(true).
WithMaxRetries(5).
WithDisableSSL(!tlsEnabled).
WithHTTPClient(httpClient).
WithLogLevel(logLevel),
)
if err != nil {
return nil, errors.Wrap(err, "failed to create v1 session")
}
v1Client := s3.New(v1Session)
// -----------------------------
// SDK v2 client initialization
// -----------------------------
scheme := "http"
if tlsEnabled {
scheme = "https"
@@ -94,24 +67,21 @@ func NewS3Agent(accessKey, secretKey, endpoint string, debug bool, tlsCert []byt
if perr != nil || (u.Scheme != "http" && u.Scheme != "https") {
u, _ = url.Parse(scheme + "://" + endpoint)
}
// Use the officially-supported v2 endpoint customization mechanism.
// This keeps S3's internal endpoint customizations (including hostname handling)
// consistent with the SDK's expectations, which is especially important for TLS.
baseEndpoint := u.String()
v2Cfg := v2aws.Config{
cfg := aws.Config{
Region: CephRegion,
Credentials: v2aws.NewCredentialsCache(v2creds.NewStaticCredentialsProvider(accessKey, secretKey, "")),
Credentials: aws.NewCredentialsCache(credentials.NewStaticCredentialsProvider(accessKey, secretKey, "")),
HTTPClient: httpClient,
BaseEndpoint: &baseEndpoint,
RetryMaxAttempts: 5,
RetryMode: v2aws.RetryModeStandard,
RetryMode: aws.RetryModeStandard,
ClientLogMode: logMode,
}
v2Client := s3v2.NewFromConfig(v2Cfg, func(o *s3v2.Options) {
client := s3.NewFromConfig(cfg, func(o *s3.Options) {
o.UsePathStyle = true
})
return &S3Agent{
Client: v1Client,
ClientV2: v2Client,
Client: client,
}, nil
}
@@ -132,11 +102,11 @@ func (s *S3Agent) createBucket(name string, infoLogging bool) error {
logger.Debugf("creating bucket %q", name)
}
input := &s3v2.CreateBucketInput{
input := &s3.CreateBucketInput{
Bucket: &name,
}
_, err := s.ClientV2.CreateBucket(context.TODO(), input)
_, err := s.Client.CreateBucket(context.TODO(), input)
if err != nil {
var alreadyExists *s3types.BucketAlreadyExists
var alreadyOwned *s3types.BucketAlreadyOwnedByYou
@@ -157,7 +127,7 @@ func (s *S3Agent) createBucket(name string, infoLogging bool) error {
// DeleteBucket function deletes given bucket using s3 client
func (s *S3Agent) DeleteBucket(name string) (bool, error) {
_, err := s.ClientV2.DeleteBucket(context.TODO(), &s3v2.DeleteBucketInput{
_, err := s.Client.DeleteBucket(context.TODO(), &s3.DeleteBucketInput{
Bucket: &name,
})
if err != nil {
@@ -171,7 +141,7 @@ func (s *S3Agent) DeleteBucket(name string) (bool, error) {
func (s *S3Agent) PutObjectInBucket(bucketname string, body string, key string,
contentType string,
) (bool, error) {
_, err := s.ClientV2.PutObject(context.TODO(), &s3v2.PutObjectInput{
_, err := s.Client.PutObject(context.TODO(), &s3.PutObjectInput{
Body: strings.NewReader(body),
Bucket: &bucketname,
Key: &key,
@@ -186,7 +156,7 @@ func (s *S3Agent) PutObjectInBucket(bucketname string, body string, key string,
// GetObjectInBucket function retrieves an object from a bucket using s3 client
func (s *S3Agent) GetObjectInBucket(bucketname string, key string) (string, error) {
result, err := s.ClientV2.GetObject(context.TODO(), &s3v2.GetObjectInput{
result, err := s.Client.GetObject(context.TODO(), &s3.GetObjectInput{
Bucket: &bucketname,
Key: &key,
})
@@ -205,7 +175,7 @@ func (s *S3Agent) GetObjectInBucket(bucketname string, key string) (string, erro
// DeleteObjectInBucket function deletes given bucket using s3 client
func (s *S3Agent) DeleteObjectInBucket(bucketname string, key string) (bool, error) {
_, err := s.ClientV2.DeleteObject(context.TODO(), &s3v2.DeleteObjectInput{
_, err := s.Client.DeleteObject(context.TODO(), &s3.DeleteObjectInput{
Bucket: &bucketname,
Key: &key,
})
+35 -42
View File
@@ -20,7 +20,7 @@ import (
"net/http"
"testing"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/stretchr/testify/assert"
)
@@ -34,34 +34,29 @@ func TestNewS3Agent(t *testing.T) {
insecure := false
s3Agent, err := NewS3Agent(accessKey, secretKey, endpoint, debug, nil, insecure, nil)
assert.NoError(t, err)
assert.NotEqual(t, aws.LogDebug, s3Agent.Client.Config.LogLevel)
assert.Equal(t, nil, s3Agent.Client.Config.HTTPClient.Transport)
assert.True(t, *s3Agent.Client.Config.DisableSSL)
assert.NotNil(t, s3Agent.ClientV2)
assert.Equal(t, "http://endpoint", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.NotNil(t, s3Agent.Client)
assert.Equal(t, "http://endpoint", *s3Agent.Client.Options().BaseEndpoint)
assert.Equal(t, aws.ClientLogMode(0), s3Agent.Client.Options().ClientLogMode)
})
t.Run("test with debug without tls", func(t *testing.T) {
debug := true
logLevel := aws.LogDebug
insecure := false
s3Agent, err := NewS3Agent(accessKey, secretKey, endpoint, debug, nil, insecure, nil)
assert.NoError(t, err)
assert.Equal(t, &logLevel, s3Agent.Client.Config.LogLevel)
assert.Nil(t, s3Agent.Client.Config.HTTPClient.Transport)
assert.True(t, *s3Agent.Client.Config.DisableSSL)
assert.NotNil(t, s3Agent.ClientV2)
assert.Equal(t, "http://endpoint", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.NotNil(t, s3Agent.Client)
assert.Equal(t, "http://endpoint", *s3Agent.Client.Options().BaseEndpoint)
assert.Equal(t, aws.LogSigning, s3Agent.Client.Options().ClientLogMode)
})
t.Run("test without tls client cert but insecure tls", func(t *testing.T) {
debug := true
insecure := true
s3Agent, err := NewS3Agent(accessKey, secretKey, endpoint, debug, nil, insecure, nil)
assert.NoError(t, err)
assert.NotNil(t, s3Agent.Client.Config.HTTPClient.Transport.(*http.Transport).TLSClientConfig.RootCAs) // still includes sys certs
assert.True(t, s3Agent.Client.Config.HTTPClient.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify)
assert.False(t, *s3Agent.Client.Config.DisableSSL)
assert.NotNil(t, s3Agent.ClientV2)
assert.Equal(t, "https://endpoint", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.NotNil(t, s3Agent.Client)
assert.Equal(t, "https://endpoint", *s3Agent.Client.Options().BaseEndpoint)
httpClient := s3Agent.Client.Options().HTTPClient.(*http.Client)
assert.NotNil(t, httpClient.Transport.(*http.Transport).TLSClientConfig.RootCAs)
assert.True(t, httpClient.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify)
})
t.Run("test with secure tls client cert", func(t *testing.T) {
debug := true
@@ -69,10 +64,11 @@ func TestNewS3Agent(t *testing.T) {
tlsCert := []byte("tlsCert")
s3Agent, err := NewS3Agent(accessKey, secretKey, endpoint, debug, tlsCert, insecure, nil)
assert.NoError(t, err)
assert.NotNil(t, s3Agent.Client.Config.HTTPClient.Transport.(*http.Transport).TLSClientConfig.RootCAs)
assert.False(t, *s3Agent.Client.Config.DisableSSL)
assert.NotNil(t, s3Agent.ClientV2)
assert.Equal(t, "https://endpoint", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.NotNil(t, s3Agent.Client)
assert.Equal(t, "https://endpoint", *s3Agent.Client.Options().BaseEndpoint)
httpClient := s3Agent.Client.Options().HTTPClient.(*http.Client)
assert.NotNil(t, httpClient.Transport.(*http.Transport).TLSClientConfig.RootCAs)
assert.False(t, httpClient.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify)
})
t.Run("test with insecure tls client cert", func(t *testing.T) {
debug := true
@@ -80,15 +76,14 @@ func TestNewS3Agent(t *testing.T) {
tlsCert := []byte("tlsCert")
s3Agent, err := NewS3Agent(accessKey, secretKey, endpoint, debug, tlsCert, insecure, nil)
assert.NoError(t, err)
assert.NotNil(t, s3Agent.Client.Config.HTTPClient.Transport)
assert.True(t, s3Agent.Client.Config.HTTPClient.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify)
assert.False(t, *s3Agent.Client.Config.DisableSSL)
assert.NotNil(t, s3Agent.ClientV2)
assert.Equal(t, "https://endpoint", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.NotNil(t, s3Agent.Client)
assert.Equal(t, "https://endpoint", *s3Agent.Client.Options().BaseEndpoint)
httpClient := s3Agent.Client.Options().HTTPClient.(*http.Client)
assert.NotNil(t, httpClient.Transport)
assert.True(t, httpClient.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify)
})
t.Run("test with custom http.Client", func(t *testing.T) {
debug := true
logLevel := aws.LogDebug
insecure := false
httpClient := &http.Client{
Transport: &http.Transport{
@@ -99,32 +94,30 @@ func TestNewS3Agent(t *testing.T) {
}
s3Agent, err := NewS3Agent(accessKey, secretKey, endpoint, debug, nil, insecure, httpClient)
assert.NoError(t, err)
assert.Equal(t, &logLevel, s3Agent.Client.Config.LogLevel)
assert.NotNil(t, s3Agent.Client.Config.HTTPClient.Transport)
assert.True(t, *s3Agent.Client.Config.DisableSSL)
transport := s3Agent.Client.Config.HTTPClient.Transport
assert.Equal(t, 7, transport.(*http.Transport).MaxIdleConns)
assert.Equal(t, 13, transport.(*http.Transport).MaxIdleConnsPerHost)
assert.Equal(t, 17, transport.(*http.Transport).MaxConnsPerHost)
assert.NotNil(t, s3Agent.ClientV2)
assert.Equal(t, "http://endpoint", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.NotNil(t, s3Agent.Client)
assert.Equal(t, "http://endpoint", *s3Agent.Client.Options().BaseEndpoint)
resolvedClient := s3Agent.Client.Options().HTTPClient.(*http.Client)
transport := resolvedClient.Transport.(*http.Transport)
assert.Equal(t, 7, transport.MaxIdleConns)
assert.Equal(t, 13, transport.MaxIdleConnsPerHost)
assert.Equal(t, 17, transport.MaxConnsPerHost)
})
t.Run("v2 endpoint with host:port for TLS", func(t *testing.T) {
t.Run("endpoint with host:port for TLS", func(t *testing.T) {
ep := "rook-ceph-rgw-store.test-ns.svc:443"
s3Agent, err := NewS3Agent(accessKey, secretKey, ep, false, nil, true, nil)
assert.NoError(t, err)
assert.Equal(t, "https://rook-ceph-rgw-store.test-ns.svc:443", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.Equal(t, "https://rook-ceph-rgw-store.test-ns.svc:443", *s3Agent.Client.Options().BaseEndpoint)
})
t.Run("v2 endpoint with host:port without TLS", func(t *testing.T) {
t.Run("endpoint with host:port without TLS", func(t *testing.T) {
ep := "rook-ceph-rgw-store.test-ns.svc:80"
s3Agent, err := NewS3Agent(accessKey, secretKey, ep, false, nil, false, nil)
assert.NoError(t, err)
assert.Equal(t, "http://rook-ceph-rgw-store.test-ns.svc:80", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.Equal(t, "http://rook-ceph-rgw-store.test-ns.svc:80", *s3Agent.Client.Options().BaseEndpoint)
})
t.Run("v2 endpoint with full URL", func(t *testing.T) {
t.Run("endpoint with full URL", func(t *testing.T) {
ep := "https://rook-ceph-rgw-store.test-ns.svc:443"
s3Agent, err := NewS3Agent(accessKey, secretKey, ep, false, nil, true, nil)
assert.NoError(t, err)
assert.Equal(t, "https://rook-ceph-rgw-store.test-ns.svc:443", *s3Agent.ClientV2.Options().BaseEndpoint)
assert.Equal(t, "https://rook-ceph-rgw-store.test-ns.svc:443", *s3Agent.Client.Options().BaseEndpoint)
})
}
+2 -2
View File
@@ -21,7 +21,7 @@ import (
b64 "encoding/base64"
"fmt"
s3v2 "github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3"
bktv1alpha1 "github.com/kube-object-storage/lib-bucket-provisioner/pkg/apis/objectbucket.io/v1alpha1"
rgw "github.com/rook/rook/pkg/operator/ceph/object"
"github.com/rook/rook/tests/framework/installer"
@@ -163,7 +163,7 @@ func (b *BucketOperation) CheckBucketNotificationSetonRGW(namespace, storeName,
return false
}
logger.Infof("endpoint (%s) Accesskey (%s) secret (%s)", s3endpoint, s3AccessKey, s3SecretKey)
notifications, err := s3client.ClientV2.GetBucketNotificationConfiguration(context.TODO(), &s3v2.GetBucketNotificationConfigurationInput{
notifications, err := s3client.Client.GetBucketNotificationConfiguration(context.TODO(), &s3.GetBucketNotificationConfigurationInput{
Bucket: &bucketname,
})
if err != nil {
+41 -23
View File
@@ -19,20 +19,23 @@ package integration
import (
"context"
"encoding/json"
"errors"
"fmt"
"strings"
"testing"
"time"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3"
s3types "github.com/aws/aws-sdk-go-v2/service/s3/types"
smithy "github.com/aws/smithy-go"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"github.com/kube-object-storage/lib-bucket-provisioner/pkg/apis/objectbucket.io/v1alpha1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
cephv1 "github.com/rook/rook/pkg/apis/ceph.rook.io/v1"
@@ -56,6 +59,20 @@ const (
var objectStoreServicePrefix = "rook-ceph-rgw-"
var lifecycleCmpOpts = cmp.Options{
cmpopts.IgnoreUnexported(
s3types.LifecycleRule{},
s3types.LifecycleExpiration{},
s3types.LifecycleRuleFilter{},
s3types.LifecycleRuleAndOperator{},
s3types.AbortIncompleteMultipartUpload{},
s3types.NoncurrentVersionExpiration{},
s3types.NoncurrentVersionTransition{},
s3types.Transition{},
s3types.Tag{},
),
}
func TestCephObjectSuite(t *testing.T) {
s := new(ObjectSuite)
defer func(s *ObjectSuite) {
@@ -116,7 +133,7 @@ func (s *ObjectSuite) TestWithTLS() {
func cleanUpTLS(s *ObjectSuite) {
err := s.k8sh.Clientset.CoreV1().Secrets(s.settings.Namespace).Delete(context.TODO(), objectTLSSecretName, metav1.DeleteOptions{})
if err != nil {
if !errors.IsNotFound(err) {
if !k8serrors.IsNotFound(err) {
logger.Fatal("failed to deleted store TLS secret")
}
}
@@ -604,7 +621,7 @@ func testObjectStoreOperations(s *suite.Suite, helper *clients.TestClient, k8sh
})
t.Run("policy was applied verbatim to bucket", func(t *testing.T) {
policyResp, err := s3client.Client.GetBucketPolicy(&s3.GetBucketPolicyInput{
policyResp, err := s3client.Client.GetBucketPolicy(ctx, &s3.GetBucketPolicyInput{
Bucket: &bucketName,
})
require.NoError(t, err)
@@ -651,7 +668,7 @@ func testObjectStoreOperations(s *suite.Suite, helper *clients.TestClient, k8sh
t.Run("policy update applied verbatim to bucket", func(t *testing.T) {
var livePolicy string
utils.Retry(20, time.Second, "policy changed", func() bool {
policyResp, err := s3client.Client.GetBucketPolicy(&s3.GetBucketPolicyInput{
policyResp, err := s3client.Client.GetBucketPolicy(ctx, &s3.GetBucketPolicyInput{
Bucket: &bucketName,
})
if err != nil {
@@ -704,15 +721,15 @@ func testObjectStoreOperations(s *suite.Suite, helper *clients.TestClient, k8sh
t.Run("policy was removed from bucket", func(t *testing.T) {
var err error
utils.Retry(20, time.Second, "policy is gone", func() bool {
_, err = s3client.Client.GetBucketPolicy(&s3.GetBucketPolicyInput{
_, err = s3client.Client.GetBucketPolicy(ctx, &s3.GetBucketPolicyInput{
Bucket: &bucketName,
})
return err != nil
})
require.Error(t, err)
require.Implements(t, (*awserr.Error)(nil), err)
aerr, _ := err.(awserr.Error)
assert.Equal(t, aerr.Code(), "NoSuchBucketPolicy")
var apiErr smithy.APIError
require.True(t, errors.As(err, &apiErr))
assert.Equal(t, "NoSuchBucketPolicy", apiErr.ErrorCode())
})
t.Run("delete bucket", func(t *testing.T) {
@@ -839,16 +856,16 @@ func testObjectStoreOperations(s *suite.Suite, helper *clients.TestClient, k8sh
})
t.Run("lifecycle was applied verbatim to bucket", func(t *testing.T) {
liveLc, err := s3client.Client.GetBucketLifecycleConfiguration(&s3.GetBucketLifecycleConfigurationInput{
liveLc, err := s3client.Client.GetBucketLifecycleConfiguration(ctx, &s3.GetBucketLifecycleConfigurationInput{
Bucket: &bucketName,
})
require.NoError(t, err)
confLc := &s3.GetBucketLifecycleConfigurationOutput{}
confLc := &s3types.BucketLifecycleConfiguration{}
err = json.Unmarshal([]byte(bucketLifecycle1), confLc)
require.NoError(t, err)
assert.Equal(t, confLc, liveLc)
assert.True(t, cmp.Equal(confLc.Rules, liveLc.Rules, lifecycleCmpOpts...), cmp.Diff(confLc.Rules, liveLc.Rules, lifecycleCmpOpts...))
})
t.Run("update obc bucketLifecycle", func(t *testing.T) {
@@ -891,21 +908,21 @@ func testObjectStoreOperations(s *suite.Suite, helper *clients.TestClient, k8sh
t.Run("lifecycle update applied verbatim to bucket", func(t *testing.T) {
var liveLc *s3.GetBucketLifecycleConfigurationOutput
confLc := &s3.GetBucketLifecycleConfigurationOutput{}
confLc := &s3types.BucketLifecycleConfiguration{}
err = json.Unmarshal([]byte(bucketLifecycle2), confLc)
require.NoError(t, err)
utils.Retry(20, time.Second, "lifecycle changed", func() bool {
liveLc, err = s3client.Client.GetBucketLifecycleConfiguration(&s3.GetBucketLifecycleConfigurationInput{
liveLc, err = s3client.Client.GetBucketLifecycleConfiguration(ctx, &s3.GetBucketLifecycleConfigurationInput{
Bucket: &bucketName,
})
if err != nil {
return false
}
return cmp.Equal(confLc, liveLc)
return cmp.Equal(confLc.Rules, liveLc.Rules, lifecycleCmpOpts...)
})
assert.Equal(t, confLc, liveLc)
assert.True(t, cmp.Equal(confLc.Rules, liveLc.Rules, lifecycleCmpOpts...), cmp.Diff(confLc.Rules, liveLc.Rules, lifecycleCmpOpts...))
})
t.Run("remove obc bucketLifecycle", func(t *testing.T) {
@@ -955,18 +972,19 @@ func testObjectStoreOperations(s *suite.Suite, helper *clients.TestClient, k8sh
t.Skip("Waiting for rgw fix from regression in v19.2.3")
}
utils.Retry(20, time.Second, "lifecycle is gone", func() bool {
_, err = s3client.Client.GetBucketLifecycleConfiguration(&s3.GetBucketLifecycleConfigurationInput{
_, err = s3client.Client.GetBucketLifecycleConfiguration(ctx, &s3.GetBucketLifecycleConfigurationInput{
Bucket: &bucketName,
})
if aerr, ok := err.(awserr.Error); ok {
return aerr.Code() == "NoSuchLifecycleConfiguration"
var apiErr smithy.APIError
if errors.As(err, &apiErr) {
return apiErr.ErrorCode() == "NoSuchLifecycleConfiguration"
}
return false
})
require.Error(t, err)
require.Implements(t, (*awserr.Error)(nil), err)
aerr, _ := err.(awserr.Error)
assert.Equal(t, aerr.Code(), "NoSuchLifecycleConfiguration")
var apiErr smithy.APIError
require.True(t, errors.As(err, &apiErr))
assert.Equal(t, "NoSuchLifecycleConfiguration", apiErr.ErrorCode())
})
t.Run("delete bucket", func(t *testing.T) {