Rulez un container docker din AWS CodeBuild în interiorul VPC-ului meu. Pe gazdă, nu am nicio problemă să rulez aws sts get-caller-identity
fără acreditări. De exemplu.:
aws sts get-caller-identity
{
„UserId”: „[exprimat]”,
„Cont”: „[exprimat]”,
„Arn”: „arn:aws:sts::[redacted]:assumed-role/[redacted]”
}
Totuși, în interiorul containerului docker, primesc o eroare când încerc să îmi obțin identitatea:
% aws sts get-caller-identity
Serviciul de metadate EC2 nu a putut fi accesat.
Nu se pot localiza acreditările. Puteți configura acreditările rulând „aws configure”.
Presupun că acest lucru se datorează faptului că nu pot ajunge la serviciul de metadate EC2 pentru a obține cheile de rol, dar m-am gândit că ar trebui să „funcționeze”, deoarece containerul ar trebui să aibă acces la aceeași rețea ca și gazda.
Așa că am dat înapoi și am aruncat o altă privire la gazdă - se pare că nu pot accesa serviciul de metadate http://169.254.169.254:
# curl -kv http://169.254.169.254/latest/meta-data/public-hostname
* Încercați 169.254.169.254:80...
* TCP_NODELAY setat
* Eroare de conectare imediată pentru 169.254.169.254: Argument nevalid
* Închiderea conexiunii 0
curl: (7) Nu s-a putut conecta la server
Cum este aws sts
lucrezi la gazdă? Am crezut că AWS CLI avea nevoie de acces la acel serviciu de metadate dacă nu erau furnizate acreditările. Cum îl pot face să funcționeze în interiorul containerului (nu vreau să trec jetoane cu viață lungă în variabilele de mediu)?
(editat cu detalii suplimentare găsite din explorarea direct pe SessionManager în instanța CodeBuild)