Не могу удалить роль из-за прикрепленной политики - PullRequest
0 голосов
/ 06 сентября 2018

Я динамически создаю роль с прикрепленной политикой.

var pr = new CreateRoleRequest
{
  RoleName = roleName,
  AssumeRolePolicyDocument = asspoly.ToJson(),
};
var resp = await _iamService.CreateRoleAsync(pr);

if (resp == null || resp.HttpStatusCode != HttpStatusCode.OK)
{
  throw new Exception($"Could not create role: {resp.HttpStatusCode}");
}

var gresp = await _iamService.AttachRolePolicyAsync(new AttachRolePolicyRequest { RoleName = roleName, PolicyArn = GetPolicyARN(MakeRolePolicyName(agentID)) });
if (gresp == null || gresp.HttpStatusCode != HttpStatusCode.OK)
{
  throw new Exception($"Could not attach policy to role: {resp.HttpStatusCode}");
}

Кажется, это работает нормально, но мне также нужно удалить эту роль. Чтобы удалить роль, мне нужно сначала отсоединить политики.

var allpolys = await _iamService.ListRolePoliciesAsync(new ListRolePoliciesRequest { RoleName = roleName, MaxItems = 10 });
foreach (var poly in allpolys.PolicyNames)
{
  var polyArn = GetPolicyARN(poly);

  var dresp = await _iamService.DetachRolePolicyAsync(new DetachRolePolicyRequest { RoleName = roleName, PolicyArn = polyArn });
  if (dresp == null || dresp.HttpStatusCode != HttpStatusCode.OK)
  {
    throw new Exception($"Could not detach role policy: {poly}");
  }
}

Проблема в том, что ListRolePolicies возвращает пустой список (из c # и cli) - и все же консоль показывает, что политика действительно подключена.

enter image description here

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 16 сентября 2018

API list-role-policies возвращает встроенные политики. Чтобы запросить прикрепленные политики, используйте взамен list-attached-role-policies API.

Можно, конечно, утверждать, что list-inline-role-policies будет менее запутанным именем для первого.


Примечание по терминологии AWS Docs и IAM :

Сначала мне не было очевидно, что «привязанный» и «управляемый» по сути означают одно и то же. Присоединенная политика: «Управляется AWS» или «Управляется клиентом». Подробнее здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...