AWS SDK 또는 CLI로 ListPolicies 사용하기
AWS SDK 또는 CLI로 ListPolicies 사용하기
다음 코드 예시는 ListPolicies을(를) 사용하는 방법을 보여줘요.
액션 예시는 더 큰 프로그램에서 발췌한 코드 조각이라, 실제 프로그램 컨텍스트 안에서 실행돼야 해요.
출처: 문서
본문
SDK for .NET
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
/// <summary>
/// List IAM policies.
/// </summary>
/// <returns>A list of the IAM policies.</returns>
public async Task<List<ManagedPolicy>> ListPoliciesAsync()
{
var listPoliciesPaginator = _IAMService.Paginators.ListPolicies(new ListPoliciesRequest());
var policies = new List<ManagedPolicy>();
await foreach (var response in listPoliciesPaginator.Responses)
{
policies.AddRange(response.Policies);
}
return policies;
}
API 상세 내용은 AWS SDK for .NET API Reference의 ListPolicies 문서를 참고하세요.
SDK for C++
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
bool AwsDoc::IAM::listPolicies(const Aws::Client::ClientConfiguration &clientConfig)
{
const Aws::String DATE_FORMAT("%Y-%m-%d");
Aws::IAM::IAMClient iam(clientConfig);
Aws::IAM::Model::ListPoliciesRequest request;
bool done = false;
bool header = false;
while (!done)
{
auto outcome = iam.ListPolicies(request);
if (!outcome.IsSuccess())
{
std::cerr << "Failed to list iam policies: " <<
outcome.GetError().GetMessage() << std::endl;
return false;
}
if (!header)
{
std::cout << std::left << std::setw(55) << "Name" <<
std::setw(30) << "ID" << std::setw(80) << "Arn" <<
std::setw(64) << "Description" << std::setw(12) <<
"CreateDate" << std::endl;
header = true;
}
const auto &policies = outcome.GetResult().GetPolicies();
for (const auto &policy: policies)
{
std::cout << std::left << std::setw(55) <<
policy.GetPolicyName() << std::setw(30) <<
policy.GetPolicyId() << std::setw(80) << policy.GetArn() <<
std::setw(64) << policy.GetDescription() << std::setw(12) <<
policy.GetCreateDate().ToGmtString(DATE_FORMAT.c_str()) <<
std::endl;
}
if (outcome.GetResult().GetIsTruncated())
{
request.SetMarker(outcome.GetResult().GetMarker());
}
else
{
done = true;
}
}
return true;
}
API 상세 내용은 AWS SDK for C++ API Reference의 ListPolicies 문서를 참고하세요.
AWS CLI
AWS 계정에서 사용할 수 있는 관리형 정책을 나열하려면
이 예시는 현재 AWS 계정에서 사용할 수 있는 관리형 정책 중 처음 두 개를 반환해요.
aws iam list-policies \
--max-items
3
출력:
{
"Policies": [
{
"PolicyName": "AWSCloudTrailAccessPolicy",
"PolicyId": "ANPAXQE2B5PJ7YEXAMPLE",
"Arn": "arn:aws:iam::123456789012:policy/AWSCloudTrailAccessPolicy",
"Path": "/",
"DefaultVersionId": "v1",
"AttachmentCount": 0,
"PermissionsBoundaryUsageCount": 0,
"IsAttachable": true,
"CreateDate": "2019-09-04T17:43:42+00:00",
"UpdateDate": "2019-09-04T17:43:42+00:00"
},
{
"PolicyName": "AdministratorAccess",
"PolicyId": "ANPAIWMBCKSKIEE64ZLYK",
"Arn": "arn:aws:iam::aws:policy/AdministratorAccess",
"Path": "/",
"DefaultVersionId": "v1",
"AttachmentCount": 6,
"PermissionsBoundaryUsageCount": 0,
"IsAttachable": true,
"CreateDate": "2015-02-06T18:39:46+00:00",
"UpdateDate": "2015-02-06T18:39:46+00:00"
},
{
"PolicyName": "PowerUserAccess",
"PolicyId": "ANPAJYRXTHIB4FOVS3ZXS",
"Arn": "arn:aws:iam::aws:policy/PowerUserAccess",
"Path": "/",
"DefaultVersionId": "v5",
"AttachmentCount": 1,
"PermissionsBoundaryUsageCount": 0,
"IsAttachable": true,
"CreateDate": "2015-02-06T18:39:47+00:00",
"UpdateDate": "2023-07-06T22:04:00+00:00"
}
],
"NextToken": "EXAMPLErZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiA4fQ=="
}
더 자세한 내용은 AWS IAM 사용자 가이드의 'IAM의 정책과 권한' 문서를 참고하세요.
API 상세 내용은 AWS CLI Command Reference의 ListPolicies 문서를 참고하세요.
SDK for Go V2
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
import (
"context"
"encoding/json"
"log"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/iam"
"github.com/aws/aws-sdk-go-v2/service/iam/types"
)
// PolicyWrapper encapsulates AWS Identity and Access Management (IAM) policy actions
// used in the examples.
// It contains an IAM service client that is used to perform policy actions.
type PolicyWrapper struct
{
IamClient *iam.Client
}
// ListPolicies gets up to maxPolicies policies.
func (wrapper PolicyWrapper) ListPolicies(ctx context.Context, maxPolicies int32) ([]types.Policy, error)
{
var policies []types.Policy
result, err := wrapper.IamClient.ListPolicies(ctx, &iam.ListPoliciesInput
{
MaxItems: aws.Int32(maxPolicies),
})
if err != nil
{
log.Printf("Couldn't list policies. Here's why: %v\n", err)
} else
{
policies = result.Policies
}
return policies, err
}
API 상세 내용은 AWS SDK for Go API Reference의 ListPolicies 문서를 참고하세요.
SDK for JavaScript (v3)
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
정책을 나열해요.
import
{
ListPoliciesCommand, IAMClient } from "@aws-sdk/client-iam";
const client = new IAMClient(
{
});
/**
* A generator function that handles paginated results.
* The AWS SDK for JavaScript (v3) provides
{
@link https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html#paginators | paginator} functions to simplify this.
*
*/
export async function* listPolicies()
{
const command = new ListPoliciesCommand(
{
MaxItems: 10,
OnlyAttached: false,
// List only the customer managed policies in your Amazon Web Services account.
Scope: "Local",
});
let response = await client.send(command);
while (response.Policies?.length)
{
for (const policy of response.Policies)
{
yield policy;
}
if (response.IsTruncated)
{
response = await client.send(
new ListPoliciesCommand(
{
Marker: response.Marker,
MaxItems: 10,
OnlyAttached: false,
Scope: "Local",
}),
);
} else
{
break;
}
}
}
API 상세 내용은 AWS SDK for JavaScript API Reference의 ListPolicies 문서를 참고하세요.
SDK for PHP
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
$uuid = uniqid();
$service = new IAMService();
public function listPolicies($pathPrefix = "", $marker = "", $maxItems = 0)
{
$listPoliciesArguments = [];
if ($pathPrefix)
{
$listPoliciesArguments["PathPrefix"] = $pathPrefix;
}
if ($marker)
{
$listPoliciesArguments["Marker"] = $marker;
}
if ($maxItems)
{
$listPoliciesArguments["MaxItems"] = $maxItems;
}
return $this->iamClient->listPolicies($listPoliciesArguments);
}
API 상세 내용은 AWS SDK for PHP API Reference의 ListPolicies 문서를 참고하세요.
Tools for PowerShell V4
예시 1: 이 예시는 현재 AWS 계정에서 사용할 수 있는 관리형 정책 중 처음 세 개의 모음을 반환해요. -scope를 지정하지 않아 기본값인 all로 동작하며 AWS 관리형·고객 관리형 정책을 모두 포함해요.
Get-IAMPolicyList -MaxItem 3
출력:
Arn : arn:aws:iam::aws:policy/AWSDirectConnectReadOnlyAccess
AttachmentCount : 0
CreateDate : 2/6/2015 10:40:08 AM
DefaultVersionId : v1
Description :
IsAttachable : True
Path : /
PolicyId : Z27SI6FQMGNQ2EXAMPLE1
PolicyName : AWSDirectConnectReadOnlyAccess
UpdateDate : 2/6/2015 10:40:08 AM
Arn : arn:aws:iam::aws:policy/AmazonGlacierReadOnlyAccess
AttachmentCount : 0
CreateDate : 2/6/2015 10:40:27 AM
DefaultVersionId : v1
Description :
IsAttachable : True
Path : /
PolicyId : NJKMU274MET4EEXAMPLE2
PolicyName : AmazonGlacierReadOnlyAccess
UpdateDate : 2/6/2015 10:40:27 AM
Arn : arn:aws:iam::aws:policy/AWSMarketplaceFullAccess
AttachmentCount : 0
CreateDate : 2/11/2015 9:21:45 AM
DefaultVersionId : v1
Description :
IsAttachable : True
Path : /
PolicyId : 5ULJSO2FYVPYGEXAMPLE3
PolicyName : AWSMarketplaceFullAccess
UpdateDate : 2/11/2015 9:21:45 AM
예시 2: 이 예시는 현재 AWS 계정에서 사용할 수 있는 고객 관리형 정책 중 처음 두 개의 모음을 반환해요. -Scope local을 사용해 고객 관리형 정책만 출력하도록 제한해요.
Get-IAMPolicyList -Scope local -MaxItem 2
출력:
Arn : arn:aws:iam::123456789012:policy/MyLocalPolicy
AttachmentCount : 0
CreateDate : 2/12/2015 9:39:09 AM
DefaultVersionId : v2
Description :
IsAttachable : True
Path : /
PolicyId : SQVCBLC4VAOUCEXAMPLE4
PolicyName : MyLocalPolicy
UpdateDate : 2/12/2015 9:39:53 AM
Arn : arn:aws:iam::123456789012:policy/policyforec2instancerole
AttachmentCount : 1
CreateDate : 2/17/2015 2:51:38 PM
DefaultVersionId : v11
Description :
IsAttachable : True
Path : /
PolicyId : X5JPBLJH2Z2SOEXAMPLE5
PolicyName : policyforec2instancerole
UpdateDate : 2/18/2015 8:52:31 AM
API 상세 내용은 AWS Tools for PowerShell Cmdlet Reference (V4)의 ListPolicies 문서를 참고하세요.
Tools for PowerShell V5
예시 1: 이 예시는 현재 AWS 계정에서 사용할 수 있는 관리형 정책 중 처음 세 개의 모음을 반환해요. -scope를 지정하지 않아 기본값인 all로 동작하며 AWS 관리형·고객 관리형 정책을 모두 포함해요.
Get-IAMPolicyList -MaxItem 3
출력:
Arn : arn:aws:iam::aws:policy/AWSDirectConnectReadOnlyAccess
AttachmentCount : 0
CreateDate : 2/6/2015 10:40:08 AM
DefaultVersionId : v1
Description :
IsAttachable : True
Path : /
PolicyId : Z27SI6FQMGNQ2EXAMPLE1
PolicyName : AWSDirectConnectReadOnlyAccess
UpdateDate : 2/6/2015 10:40:08 AM
Arn : arn:aws:iam::aws:policy/AmazonGlacierReadOnlyAccess
AttachmentCount : 0
CreateDate : 2/6/2015 10:40:27 AM
DefaultVersionId : v1
Description :
IsAttachable : True
Path : /
PolicyId : NJKMU274MET4EEXAMPLE2
PolicyName : AmazonGlacierReadOnlyAccess
UpdateDate : 2/6/2015 10:40:27 AM
Arn : arn:aws:iam::aws:policy/AWSMarketplaceFullAccess
AttachmentCount : 0
CreateDate : 2/11/2015 9:21:45 AM
DefaultVersionId : v1
Description :
IsAttachable : True
Path : /
PolicyId : 5ULJSO2FYVPYGEXAMPLE3
PolicyName : AWSMarketplaceFullAccess
UpdateDate : 2/11/2015 9:21:45 AM
예시 2: 이 예시는 현재 AWS 계정에서 사용할 수 있는 고객 관리형 정책 중 처음 두 개의 모음을 반환해요. -Scope local을 사용해 고객 관리형 정책만 출력하도록 제한해요.
Get-IAMPolicyList -Scope local -MaxItem 2
출력:
Arn : arn:aws:iam::123456789012:policy/MyLocalPolicy
AttachmentCount : 0
CreateDate : 2/12/2015 9:39:09 AM
DefaultVersionId : v2
Description :
IsAttachable : True
Path : /
PolicyId : SQVCBLC4VAOUCEXAMPLE4
PolicyName : MyLocalPolicy
UpdateDate : 2/12/2015 9:39:53 AM
Arn : arn:aws:iam::123456789012:policy/policyforec2instancerole
AttachmentCount : 1
CreateDate : 2/17/2015 2:51:38 PM
DefaultVersionId : v11
Description :
IsAttachable : True
Path : /
PolicyId : X5JPBLJH2Z2SOEXAMPLE5
PolicyName : policyforec2instancerole
UpdateDate : 2/18/2015 8:52:31 AM
API 상세 내용은 AWS Tools for PowerShell Cmdlet Reference (V5)의 ListPolicies 문서를 참고하세요.
SDK for Python (Boto3)
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
def list_policies(scope):
"""
Lists the policies in the current account.
:param scope: Limits the kinds of policies that are returned. For example,
'Local' specifies that only locally managed policies are returned.
:return: The list of policies.
"""
try:
policies = list(iam.policies.filter(Scope=scope))
logger.info("Got %s policies in scope '%s'.", len(policies), scope)
except ClientError:
logger.exception("Couldn't get policies for scope '%s'.", scope)
raise
else:
return policies
API 상세 내용은 AWS SDK for Python (Boto3) API Reference의 ListPolicies 문서를 참고하세요.
SDK for Ruby
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
이 예시 모듈은 역할 정책을 나열·생성·연결·분리해요.
# Manages policies in AWS Identity and Access Management (IAM)
class RolePolicyManager
# Initialize with an AWS IAM client
#
# @param iam_client [Aws::IAM::Client] An initialized IAM client
def initialize(iam_client, logger: Logger.new($stdout))
@iam_client = iam_client
@logger = logger
@logger.progname = 'PolicyManager'
end
# Creates a policy
#
# @param policy_name [String] The name of the policy
# @param policy_document [Hash] The policy document
# @return [String] The policy ARN if successful, otherwise nil
def create_policy(policy_name, policy_document)
response = @iam_client.create_policy(
policy_name: policy_name,
policy_document: policy_document.to_json
)
response.policy.arn
rescue Aws::IAM::Errors::ServiceError => e
@logger.error("Error creating policy: #
{
e.message}")
nil
end
# Fetches an IAM policy by its ARN
# @param policy_arn [String] the ARN of the IAM policy to retrieve
# @return [Aws::IAM::Types::GetPolicyResponse] the policy object if found
def get_policy(policy_arn)
response = @iam_client.get_policy(policy_arn: policy_arn)
policy = response.policy
@logger.info("Got policy '#
{
policy.policy_name}'. Its ID is: #
{
policy.policy_id}.")
policy
rescue Aws::IAM::Errors::NoSuchEntity
@logger.error("Couldn't get policy '#
{
policy_arn}'. The policy does not exist.")
raise
rescue Aws::IAM::Errors::ServiceError => e
@logger.error("Couldn't get policy '#
{
policy_arn}'. Here's why: #
{
e.code}: #
{
e.message}")
raise
end
# Attaches a policy to a role
#
# @param role_name [String] The name of the role
# @param policy_arn [String] The policy ARN
# @return [Boolean] true if successful, false otherwise
def attach_policy_to_role(role_name, policy_arn)
@iam_client.attach_role_policy(
role_name: role_name,
policy_arn: policy_arn
)
true
rescue Aws::IAM::Errors::ServiceError => e
@logger.error("Error attaching policy to role: #
{
e.message}")
false
end
# Lists policy ARNs attached to a role
#
# @param role_name [String] The name of the role
# @return [Array<String>] List of policy ARNs
def list_attached_policy_arns(role_name)
response = @iam_client.list_attached_role_policies(role_name: role_name)
response.attached_policies.map(&:policy_arn)
rescue Aws::IAM::Errors::ServiceError => e
@logger.error("Error listing policies attached to role: #
{
e.message}")
[]
end
# Detaches a policy from a role
#
# @param role_name [String] The name of the role
# @param policy_arn [String] The policy ARN
# @return [Boolean] true if successful, false otherwise
def detach_policy_from_role(role_name, policy_arn)
@iam_client.detach_role_policy(
role_name: role_name,
policy_arn: policy_arn
)
true
rescue Aws::IAM::Errors::ServiceError => e
@logger.error("Error detaching policy from role: #
{
e.message}")
false
end
end
API 상세 내용은 AWS SDK for Ruby API Reference의 ListPolicies 문서를 참고하세요.
SDK for Rust
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
pub async fn list_policies(
client: iamClient,
path_prefix: String,
) -> Result<Vec<String>, SdkError<ListPoliciesError>>
{
let list_policies = client
.list_policies()
.path_prefix(path_prefix)
.scope(PolicyScopeType::Local)
.into_paginator()
.items()
.send()
.try_collect()
.await?;
let policy_names = list_policies
.into_iter()
.map(|p|
{
let name = p
.policy_name
.unwrap_or_else(|| "Missing Policy Name".to_string());
println!("
{
}", name);
name
})
.collect();
Ok(policy_names)
}
API 상세 내용은 AWS SDK for Rust API reference의 ListPolicies 문서를 참고하세요.
SDK for SAP ABAP
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
TRY.
oo_result = lo_iam->listpolicies( iv_scope = iv_scope ).
MESSAGE 'Retrieved policy list.' TYPE 'I'.
CATCH /aws1/cx_iamservicefailureex.
MESSAGE 'Service failure when listing policies.' TYPE 'E'.
ENDTRY.
API 상세 내용은 AWS SDK for SAP ABAP API reference의 ListPolicies 문서를 참고하세요.
SDK for Swift
참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.
import AWSIAM
import AWSS3
public func listPolicies() async throws -> [MyPolicyRecord]
{
var policyList: [MyPolicyRecord] = []
// Use "Paginated" to get all the policies.
// This lets the SDK handle the 'isTruncated' in "ListPoliciesOutput".
let input = ListPoliciesInput()
let output = client.listPoliciesPaginated(input: input)
do
{
for try await page in output
{
guard let policies = page.policies else
{
print("Error: no policies returned.")
continue
}
for policy in policies
{
guard let name = policy.policyName,
let id = policy.policyId,
let arn = policy.arn
else
{
throw ServiceHandlerError.noSuchPolicy
}
policyList.append(MyPolicyRecord(name: name, id: id, arn: arn))
}
}
} catch
{
print("ERROR: listPolicies:", dump(error))
throw error
}
return policyList
}
API 상세 내용은 AWS SDK for Swift API reference의 ListPolicies 문서를 참고하세요.