Skip to content

Fix support for public.ecr.aws - #938

Merged
matheuscscp merged 1 commit into
mainfrom
public-ecr
Jun 9, 2025
Merged

Fix support for public.ecr.aws#938
matheuscscp merged 1 commit into
mainfrom
public-ecr

Conversation

@matheuscscp

@matheuscscp matheuscscp commented Jun 5, 2025

Copy link
Copy Markdown
Member

I tested the current code for public.ecr.aws and it doesn't work. It's probably because public ECR has a different endpoint and we were trying to reach it through the Go SDK for normal ECR, but there's a dedicated Go SDK for public ECR. This PR is fixing this by using the appropriate Go SDK.

xref: #936

@matheuscscp
matheuscscp requested a review from a team as a code owner June 5, 2025 22:47
@matheuscscp
matheuscscp requested a review from stefanprodan as a code owner June 5, 2025 23:02
@matheuscscp

matheuscscp commented Jun 5, 2025

Copy link
Copy Markdown
Member Author

I was able to test this fix by building the flux CLI locally with it, it works.

Without authentication:

flux list artifacts oci://public.ecr.aws/aws-controllers-k8s/iam-controller
✗ fetching manifest failed: GET https://public.ecr.aws/v2/aws-controllers-k8s/iam-controller/manifests/v0.1.2: TOOMANYREQUESTS: Rate exceeded

With authentication (takes a while to run, probably because it's making several calls which otherwise would get rate-limited without authentication like shown above):

./flux list artifacts oci://public.ecr.aws/aws-controllers-k8s/iam-controller --provider aws
► logging in to registry with provider credentials
ARTIFACT                                                 	DIGEST                                                                 	SOURCE	REVISION 
public.ecr.aws/aws-controllers-k8s/iam-controller:v1.2.1 	sha256:cd2a2a7c6a20f3dd557ca0de70017de0ddce7300ff84b1c5b52f0a5cddca4664	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v1.2.0 	sha256:5464e9e9b84e96a8250acc3159258287d99b947228ac3c1ff1d6d5f75b527e52	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v1.1.3 	sha256:184934c29cb016f16bc349c45c8f23a4b703df5739d31d498b0a64a15c0a4232	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v1.1.2 	sha256:ce9471c02ca5d1d6cb423f73a844db01fc595b295bb3f69db88c2946c8cb95eb	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v1.1.1 	sha256:8ee74276118ff6596ba9bc868faf217d50d2a81da167a9ed936b29876049d565	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v1.1.0 	sha256:6a1a343c1a5c9be04d5e408168030e0bab46a3124f93d6496b7ee80f3936961f	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v1.0.1 	sha256:20e5cc1a7f2fd05aef36cf8f7a475b6af8609d6b9922484cb2fe743a1a862cb3	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v1.0.0 	sha256:308557fb3627cfd4360ccb02de88bebe6fd21c8c4b1d47c8cef0a36638f4eb2e	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.1.2 	sha256:35259039ea1b73a530a53a30447c35e11e0b8ef78cde9fc8572e441187d82bf7	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.1.1 	sha256:07cc74f4c10953bf167d760ec2f2f47242aec70f0b756ce036270aa226d65ecb	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.1.0 	sha256:2ab535db95309e0fd8c1c00bfdf8bc03a1c3109ab0beb3e669a54cf70e953561	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.9 	sha256:0faa03566cc4fdf6bd487b00449ef8853ab92441592939e6c6a0015915922930	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.8 	sha256:5bd90ee887970222bdd65293b6530bbce217f3599c080cf4e1c3e4a849647ee2	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.7 	sha256:9b4dd5f2d004b7307970fcbef8e3e7acfa89b7a48d50871424c25e407e23d5de	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.6 	sha256:2e0c1d6907eaec265f59835d13cf94b152a786d990450747b8018c317505ba4e	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.5 	sha256:d1fb63a472c901716de9205695636011468fc61a945b8af324620757e47e3c97	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.4 	sha256:58770fb6f31ee283bd871cc0744fc4bceceea3d320a82065405ed8b1516bd71e	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.3 	sha256:ad0679e38250c40af30f2e6c943a3b42ac1fda41723f60128a4daf3230ef1251	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.22	sha256:eb15f3ebb1c3b2d5112adaf68b6348d8fe89cd4f530a52967f851d88d205168b	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.21	sha256:4dbc82df3fc099b7686eaa722e353165b1ab9d26095dfbed6433d46f2fc877e1	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.20	sha256:2fedfb3205f817783ad6d945cc0933f7272fb637d33e7614646ec99761964b67	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.2 	sha256:b69f96021c3a94e081a143e9aa91ccec0c9f878a0c17ed8c68fef7b4316a8ea7	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.19	sha256:0f4e90bea3a9550f3ad235b8c5fb2ec094a4f513121e139cf2ba68565959e28c	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.18	sha256:dd9d87ee8c21e8fa1804c40977df8abe22489fd28fb9fbb976e8d4fbae093ca9	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.17	sha256:f46c86a7bb2938ca74f6fbd04488701864fbc62257f35aa7e5fc0e24d730759b	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.16	sha256:58faff1e95930590b736357c2429af439570b80b1032b6c5580be005c5a8c53b	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.15	sha256:1380406a974569c64b68eb8a8c14a40a3bfe05f063427ce3b985f9a75a96cc53	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.14	sha256:0d6ff61b712407f29bb5098c7572e128609d5d5e047e840a8999a2b2dbcd8c64	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.13	sha256:1d6ca1c7707b64014fd179ed07fc6215711a59ce8f220d66367cedbd798a8ccf	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.12	sha256:2dd654bd3969b200603c1ba407819acc3fee66ef780052390ac0bca62a519a31	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.11	sha256:45c12f3f0f1e5b70d25e2d0e65b58a973faf06af72e93e3f1bed31d9cd4f3f03	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.10	sha256:d72fda52f6792c4a871398fd61b0efefdf9974d35fa182e758beb1db0d8b5400	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:v0.0.1 	sha256:2696ee28bab29821e3e7f4f71dfd69ebf6903c7577c51134fbe66f64386e3e15	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.4.1  	sha256:6d75e938af76d3d9504426cd1d3bd8018fbe63d126d9e49e0e1aa9649c338cb3	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.4.0  	sha256:03d8a0b1cd23c5c4d2305a3663976690eb48767f21f548a35bc83eab30c4d1d4	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.9  	sha256:38d6ca4dd210ccca82d0a9afd2d1d82043a57f527a5b1ef61f0af03ead586417	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.8  	sha256:65e8b5ba34d7cac26a4b91f142a5780aa1561f7acbd0593afb14d20aed308cad	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.7  	sha256:f2c623caa159aca7f8e85cfba96c673c15cb1ebdac18debd49ee5d9622177907	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.6  	sha256:ea03201d94b332c7f129cbf947be2b4dfbea80664be2d454f98a041e0d9ebfc5	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.5  	sha256:0ebc1056a41248afa18ef4c3eeb887da9a758f3167f874877e2cb90fb781a4a2	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.4  	sha256:0a5666ef25dab49880805d055ce009275d8e7c20d78390b556db4c536aca2c67	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.3  	sha256:8231e189a765c287cbf46aa1799f579084f9dd9308894fa11a09dad7d85e5b80	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.22 	sha256:38475237bfae1e45c3a7f58100a058f04459e28f8ef97bdc5b1e51228b6d0fb8	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.21 	sha256:14b8bf81f698f6cf93657f07d35ba8c591243d7e8a212f85b23504dd59c85ca9	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.20 	sha256:743ce1338b8cb18c354e3f45462d000b5659172e812344fd5ef085202301bc6a	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.2  	sha256:ddb2460f060f56780cd11650ca9aa8027128f16649da8a0262686166ffc9555c	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.19 	sha256:04f7d1b426b17704ea2516715fcad9604324a36d35222eb5a5fd260420b4c163	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.18 	sha256:8fc77eea131c49dcf29b259d0924f17a9e9ff93fd151708ac51b093c55069fdd	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.17 	sha256:001f28b2f684e5e0e9727179cb4b0ec6d4a43abe3b8c8bd60bbb6ba9626a4ff9	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.16 	sha256:509670a4a107cda193dbbf869d92883b57b0f0a2cbddc7033828e0ad874465ad	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.15 	sha256:b139cf71eadca3a1ef6e9318c123fc7add5eff8834c2a7140ecd4afbdc21b6ab	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.14 	sha256:9d8c11a5a722de53a4b850cbe92d5a10ffcf571f35da77b45ae72b213446baa0	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.13 	sha256:fbd9f50e2b4f8b43e9c835446b94b09e8e9883cbe8861a35f4a52c8299974725	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.12 	sha256:0f5ba4bb8e91bbab7a6b8635e56f5a27365cb89e7919fc02e6911f2241863fa4	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.11 	sha256:465784d4de1a1b482d49258e51dd48e265e034c2b59b12ef6131c2d0ebd2421a	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.10 	sha256:2e45e936d45c8024a23f0eeaa95b115bce5e96d23c40943ef1ae81f59ed8a658	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.1  	sha256:42e8aec780ea1da8abd8b957c1a0908ed90c5c21a0e637a1bc2612c40f513ffe	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.3.0  	sha256:5970a3016e582cff170c1b3f4532148a685b160ce04a37caa4936d0184e050a8	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.2.6  	sha256:9208ec7c8ad81d2c99894c2639d1a554da046f882ee8a64efe758322a11b70fd	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.2.5  	sha256:1ceca22b437fcf1495de9290f9222cb95e200aeaf1512fbbc0fd9f55e22a0d8d	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.2.4  	sha256:fa4d35613897eb9349cf0f0e124fce7e58affa0a03843c2c2e578d38c93dcac6	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.2.3  	sha256:3f974d00382711d11bc5f92f7e152e8c3204c554a340f7e0d14257bfc0f94df9	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.2.2  	sha256:3ce6df69f6b8eb216abf120119c2506879df2f30c47b6c003d6b12096d8f06ff	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.2.1  	sha256:afff62360ae5734dc65a1a32d74e1f06697b1d7d46973226656e757d0f5f1fd9	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.2.0  	sha256:1a52f2a1adb493c3e443b5b9afaef95fa51e6b83ac5a24944c3cfe1373a54710	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.1.3  	sha256:831d87e1671bb4ab1ea0570c7325dd7e059594c3c1308bdc320cc0f76a37816a	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.1.2  	sha256:cd7a63d3f9cc2e3eeee2d826b46fb58d02b9132e773182ea7650df484e8f1082	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.1.1  	sha256:6b720a0567ef489659c387a4c4f5010ae70b7b5e82a993052c79c90dc2d7e482	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.1.0  	sha256:235687fdfc67dd219e98d64bcba43d4336ab6e51df94ecd8e4ad85f479dae6b7	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.0.1  	sha256:c2a6b706f2dd116230541a9f84ad75c23ebb5ac24b032aa4183441f1e71104d0	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:1.0.0  	sha256:b2a6b56512c9977971d92adfc2185a34c0f1ced6b5693f464af26a69ce4e102d	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.1.2  	sha256:7b8428ff982a7fa8f2f93c535290b24dc12bf1e9d3171ac43142d3887a0c9907	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.1.1  	sha256:c7855a8b44b39c18f35d36f9ea73da9f06e5876ceafb296bab9ded1f29e13e5c	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.1.0  	sha256:aaf5f4c3a42f21628d491bb18bf773194c484dee66bc426b1050d857f2f11e6c	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.9  	sha256:dd188932bef90352a45c89d8f38ca209f0b962fb3b0e942f7ef80ce0487b2a77	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.8  	sha256:7568fd3b70320645fbebc725060d6b59a740ef318607dfb8f32a2eb881414171	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.7  	sha256:66bc6d5262fef4efc855b5dab7412d7956f27de5c277a003c88960908c305859	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.6  	sha256:70b08a9fffc2b6b5a867389a6f309bbf97b967324c2ce724d6523a8b3a512ada	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.5  	sha256:685e863d38dfc234ec65eb34c84bec9b3f3ada3131c15cebd391939b9f4a6c8e	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.4  	sha256:badd8bcdcdd5477902ac986a5872fa9f7fbcd766d2b39cd622f4331b1e027e8d	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.3  	sha256:8d978178204435a6bdc947ce152208556275896a956cfe03662fdd03caca0794	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.22 	sha256:c1af7079e7f8fd3482c9d0caf0b94ce9f75d26f541c47610042d8ab57d943960	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.21 	sha256:413033a27cddaf47bf5ea3c1503f5b6cc0bb4c4dae52a712b022905af2d1a347	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.20 	sha256:ffbdc16021152731f3070d3278dbae01b36f2866f31c18a07763b962436c9d59	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.2  	sha256:18fa26e1010415527963d46551f0eb21ce92deddcc1c95d94f5054f0c6cc526d	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.19 	sha256:e2d7d94f18833509bae39cc6bfa7d0becaecedacd42bfee9d30c70a038784f3c	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.18 	sha256:4dee981096792f9bca8afc8f18d19486a3c4e83c339a922422f780cd4e88ca51	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.17 	sha256:ced3e9230fc90ca6c766b4bba8bd83c5f5207b276aedc7b6796442d0ba2a3fa0	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.16 	sha256:1b74891811e26e0afa0bf5271648e4e5c04a97ed8fba18ff81db73886d496be4	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.15 	sha256:2f8ded95f106ffa043649ecaa1fe2f61eb4956b81edea6ff7a3d28e4395af9f6	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.14 	sha256:4815c22c3c6e90b44b0548d5491d26fc494fc09c801f203ebe93867191281c93	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.13 	sha256:98fd4847598875b05ce86c630559077087d8fb120ff1178fc647b5b6010a8efa	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.12 	sha256:3f183c79194d3f916dde62b78781ac256d2f0b10a692a3dd8fb3c5649fced2fb	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.11 	sha256:59c5f6cbe09cdb11f562f43c3677d11f29ba2c1fbde580e25c13354700f7c1c1	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.10 	sha256:6ba5a0e6692092ecde32de0c79435f893a1022e5ec440a8a0f86e8ff8fe236a1	      	        	
public.ecr.aws/aws-controllers-k8s/iam-controller:0.0.1  	sha256:c7dc45ce0cf51cb8e76e35f7aea1bff3c20abc1c9ae93330cfb8f5fa6c3bcc93	      	        	

@stefanprodan stefanprodan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@matheuscscp matheuscscp added the area/security Security related issues and pull requests label Jun 7, 2025
@matheuscscp
matheuscscp force-pushed the public-ecr branch 2 times, most recently from c497530 to 966632b Compare June 7, 2025 13:22
@matheuscscp

matheuscscp commented Jun 7, 2025

Copy link
Copy Markdown
Member Author

@stefanprodan Please attach this policy to the IAM Role used by the aws integration tests GitHub Action workflow so we can push to public ECR:

https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticContainerRegistryPublicFullAccess.html

Comment on lines +26 to +30
resource "aws_ecrpublic_repository" "test_ecr_public" {
repository_name = local.name
tags = var.tags
force_destroy = true
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we clean this up at the end of the CI run?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, on terraform destroy. But we may need to add code in the reaper, same for GCP WI pools and providers

@stefanprodan

Copy link
Copy Markdown
Member

I've added Elastic Container Registry Public with Full access to the oci-e2e policy.

@matheuscscp

matheuscscp commented Jun 9, 2025

Copy link
Copy Markdown
Member Author

@stefanprodan Can you please add also a statement allowing sts:GetServiceBearerToken on the resource *?

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation:
User: arn:aws:sts::***:assumed-role/***/OCI_GH_Actions is not authorized to perform:
sts:GetServiceBearerToken on resource: * because no identity-based policy allows the
sts:GetServiceBearerToken action

@matheuscscp

Copy link
Copy Markdown
Member Author

I remembered I have access to AWS and added sts:GetServiceBearerToken myself.

Signed-off-by: Matheus Pimenta <matheuscscp@gmail.com>
@matheuscscp

Copy link
Copy Markdown
Member Author

@matheuscscp
matheuscscp merged commit 47a1b23 into main Jun 9, 2025
@matheuscscp
matheuscscp deleted the public-ecr branch June 9, 2025 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/security Security related issues and pull requests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants