Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

216
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda