AWS предполагает, что доступ к роли запрещен при использовании AWS PHP SDK - PullRequest
0 голосов
/ 25 апреля 2019

У меня проблема с использованием AWS PHP SDK при вызове AssumeRole с сервера apache (PHP SDK), появляется следующая ошибка

    Error executing "AssumeRole" on "https://sts.amazonaws.com"; 
    AWS HTTP error: Client error: `POST https://sts.amazonaws.com` resulted in a `403 Forbidden` 
response: Sender AccessDeni (truncated...) AccessDenied (client): Access denied - Sender AccessDenied Access denied

Я протестировал команду на принятие роли в той же машине ec2 с использованием AWSCLI и работает нормально.

Вот код, который я использовал.

const AccessKey = "<AccessKey>";
    const SecretAccessKey = "<SecretAccessKey>";
    const AccountID = "<AccountID>";
    const Name_space = "default";  // leave this as default

    use Aws\Sts\StsClient;
    use Aws\Sts\StsException;     

 try {
  $sts = new Aws\Sts\StsClient([
            'region' => 'us-east-1',
            'version' => 'latest',
            'credentials  ' => array('key' => AccessKey,
               'secret' => SecretAccessKey)
        ]);



 $session = $sts->assumeRole([
           'DurationSeconds' => 900,
           'RoleArn' => '<arn>', // REQUIRED
           'RoleSessionName' => testSession, // REQUIRED
      ]);

 } catch (Exception $e) {

        exit($e->getMessage());
    }

- ИЗМЕНЕНО, чтобы добавить следующее -

пользовательская доза имеет политику для принятия роли

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "<role arn>"
    }
}

и это доверительные отношения для роли

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com",
        "AWS": "<user arn>"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
...