example elastic aws php amazon-web-services

elastic - aws/aws-sdk-php



La autorizaciĆ³n de AWS AssumeRole no funciona (3)

Tal vez deberías asignar tu pts región y punto final:

$sts = StsClient::factory(array( //... ''region'' => ''us-west-2'', ''endpoint'' => ''https://sts.us-west-2.amazonaws.com'', ));

Estoy intentando llamar a la función AssumeRole usando AWS sts en mi programa PHP ya que quiero crear credenciales temporales para permitir que un usuario cree un objeto para un depósito de AWS.

A continuación está la fumigación que estoy llamando PHP:

$sts = StsClient::factory(array( ''key'' => ''XXXXXXXXXXXXXX'', ''secret'' => ''XXXXXXXXXXXXXXXX'', ''token.ttd'' => $timetodie )); $bucket = "mybucket"; $result1 = $sts->assumeRole(array( ''RoleArn'' => ''arn:aws:iam::123456789012:role/createPic'', ''RoleSessionName'' => ''mytest'', ''Policy'' => json_encode(array( ''Statement'' => array( array( ''Sid'' => ''Deny attributes'', ''Action'' => array( ''s3:deleteObject'', ''s3:deleteBucket'' ), ''Effect'' => ''Deny'', ''Resource'' => array( "arn:aws:s3:::{$bucket}", "arn:aws:s3:::{$bucket}/AWSLogs/*" ), ''Principal'' => array( ''AWS'' => "*" ) ) ) ) ), ''DurationSeconds'' => 3600, // ''ExternalId'' => ''string'', )); $credentials = $result1->get(''Credentials'');

Sin embargo, sigo recibiendo el siguiente error:

User arn: aws: iam :: 123456789012: user / TVMUser no tiene autorización para realizar: sts: AssumeRole en el recurso: arn: aws: iam :: 123456789012: role / createPic

Debajo está mi política de permisos para usuario TVMUser en mi consola de AWS:

{ "Version": "2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:RunInstances", "Resource":"*" }, { "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::791758789361:user/TVMUser" }, { "Effect":"Allow", "Action":"sts:AssumeRole", "Resource":"arn:aws:iam::791758789361:role/createPic" } ] }

A continuación está mi política de roles para el rol createPic:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*", "s3:Put*", ], "Effect": "Allow", "Resource": "*" }, { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/createPic" } ] }

¿Alguien ahora lo que me falta en mis declaraciones de políticas de AWS y la configuración en AWS para no obtener el error: usuario: aws: iam :: 123456789012: usuario / TVMUser no está autorizado a realizar: sts: AssumeRole en el recurso: arn: aws: iam :: 123456789012: role / createPic?

¿Me estoy perdiendo de algo?


También debe editar la relación de confianza para el rol para permitir que la cuenta (incluso si es la misma) asuma el rol.

  1. abra la función que desea asumir en la consola
  2. haga clic en la pestaña "Relaciones de confianza"
  3. haga clic en "Editar relación de nave"
  4. agregue una declaración para la cuenta que desea agregar (por lo general, solo tendrá el servicio ec2 en "Entidades de confianza"), por ejemplo,

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/some-role" }, "Action": "sts:AssumeRole" } ] }

En este ejemplo, tuve que agregar el principal "AWS" con el número de cuenta correcto, el servicio ec2.amazonaws.com ya estaba allí.

Después de hacerlo, pude asumir el papel sin problemas. Me tomó literalmente horas resolver esto, espero que ayude a alguien.


Tuve el mismo error y pasé horas tratando de arreglarlo con permisos y relaciones de confianza ... pero ese no era mi problema.

Estaba siguiendo este tutorial y desplegué el clúster en US West (Oregon) como se especifica.

Para que funcione, necesitaba activar STS para esta región aquí .