Я динамически создаю роль с прикрепленной политикой.
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) - и все же консоль показывает, что политика действительно подключена.
Что мне здесь не хватает?