Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

208
Views
AWS sts asume el rol en un comando

Para asumir un rol de AWS en la CLI, hago el siguiente comando:

 aws sts assume-role --role-arn arn:aws:iam::123456789123:role/myAwesomeRole --role-session-name test --region eu-central-1

Esto me da una salida que sigue el esquema:

 { "Credentials": { "AccessKeyId": "someAccessKeyId", "SecretAccessKey": "someSecretAccessKey", "SessionToken": "someSessionToken", "Expiration": "2020-08-04T06:52:13+00:00" }, "AssumedRoleUser": { "AssumedRoleId": "idOfTheAssummedRole", "Arn": "theARNOfTheRoleIWantToAssume" } }

Y luego copio y pego manualmente los valores de AccessKeyId , SecretAccessKey y SessionToken en un montón de exportaciones como esta:

 export AWS_ACCESS_KEY_ID="someAccessKeyId" export AWS_SECRET_ACCESS_KEY="someSecretAccessKey" export AWS_SESSION_TOKEN="someSessionToken"

Para finalmente asumir el papel.

¿Cómo puedo hacer esto de una vez? Quiero decir, sin esa intervención manual de copiar y pegar la salida del comando aws sts ... en las exports .

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

Finalmente, un colega compartió conmigo este increíble fragmento que hace el trabajo de una sola vez:

 eval $(aws sts assume-role --role-arn arn:aws:iam::123456789123:role/myAwesomeRole --role-session-name test | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\nexport AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')

Aparte de AWS CLI, solo requiere jq , que generalmente se instala en cualquier escritorio Linux.

over 4 years ago · Santiago Trujillo Report

0

Puede almacenar una función de IAM como un perfil en la CLI de AWS y automáticamente asumirá la función por usted.

Este es un ejemplo deUso de un rol de IAM en la CLI de AWS - Interfaz de línea de comandos de AWS :

 [profile marketingadmin] role_arn = arn:aws:iam::123456789012:role/marketingadminrole source_profile = user1

Esto está diciendo:

  • Si un usuario especifica --profile marketingadmin
  • Luego use las credenciales del perfil user1
  • Para llamar a AssumeRole en el rol especificado

Esto significa que simplemente puede llamar a un comando como este y asumirá el rol y usará las credenciales devueltas automáticamente:

 aws s3 ls --profile marketingadmin
over 4 years ago · Santiago Trujillo Report

0

Sin jq , sin eval , sin exportaciones múltiples, utilizando el printf incorporado (es decir, sin pérdida de credenciales a través de /proc ) y sustitución de comandos:

 export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" \ $(aws sts assume-role \ --role-arn arn:aws:iam::123456789012:role/MyAssumedRole \ --role-session-name MySessionName \ --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ --output text))
over 4 years ago · Santiago Trujillo Report

0

Tuve el mismo problema y logré usar uno de los tiempos de ejecución que me sirvió la CLI.

Una vez que obtuve las credenciales, utilicé este enfoque, aunque no tan elegante (utilicé el tiempo de ejecución de PHP, pero podría usar lo que tiene disponible en su CLI):

 - export AWS_ACCESS_KEY_ID=`php -r 'echo json_decode(file_get_contents("credentials.json"))->Credentials->AccessKeyId;'` - export AWS_SECRET_ACCESS_KEY=`php -r 'echo json_decode(file_get_contents("credentials.json"))->Credentials->SecretAccessKey;'` - export AWS_SESSION_TOKEN=`php -r 'echo json_decode(file_get_contents("credentials.json"))->Credentials->SessionToken;'`

donde credentials.json es el resultado del rol asumido:

 aws sts assume-role --role-arn "arn-of-the-role" --role-session-name "arbitrary-session-name" > credentials.json

Obviamente, esto es solo un enfoque, particularmente útil en caso de que esté automatizando el proceso. A mí me funcionó, pero no sé si es lo mejor. Seguro que no es el más lineal.

over 4 years ago · Santiago Trujillo Report

0

La respuesta de Arcones es buena, pero aquí hay una forma que no requiere jq:

 eval $(aws sts assume-role \ --role-arn arn:aws:iam::012345678901:role/TrustedThirdParty \ --role-session-name=test \ --query 'join(``, [`export `, `AWS_ACCESS_KEY_ID=`, Credentials.AccessKeyId, ` ; export `, `AWS_SECRET_ACCESS_KEY=`, Credentials.SecretAccessKey, `; export `, `AWS_SESSION_TOKEN=`, Credentials.SessionToken])' \ --output text)
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!