У меня проблема с использованием 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"
}
]
}