Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

210
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda