DeletePolicy 사용하기
DeletePolicy 사용하기 (SDK/CLI)
DeletePolicy(정책 삭제) API를 활용하는 방법을 코드 예시로 정리했어요. 각 예시는 어떤 동작을 하는지, 어떤 파라미터를 쓰는지 순서대로 살펴볼 수 있어요.
출처: 문서
본문
다음 코드 예시들은 DeletePolicy 를 어떻게 사용하는지 보여줘요.
.NET
/// <summary>
/// Delete an IAM policy.
/// </summary>
/// <param name="policyArn">The Amazon Resource Name (ARN) of the policy to
/// delete.</param>
/// <returns>A Boolean value indicating the success of the action.</returns>
public async Task<bool> DeletePolicyAsync(string policyArn)
{
var response = await _IAMService.DeletePolicyAsync(new DeletePolicyRequest { PolicyArn = policyArn });
return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
AWS CLI(Bash 스크립트)
###############################################################################
# function iecho
#
# This function enables the script to display the specified text only if
# the global variable $VERBOSE is set to true.
###############################################################################
function iecho() {
if [[ $VERBOSE == true ]]; then
echo "$@"
fi
}
###############################################################################
# function errecho
#
# This function outputs everything sent to it to STDERR (standard error output).
###############################################################################
function errecho() {
printf "%s\n" "$*" 1>&2
}
###############################################################################
# function iam_delete_policy
#
# This function deletes an IAM policy.
#
# Parameters:
# -n policy_arn -- The name of the IAM policy arn.
#
# Returns:
# 0 - If successful.
# 1 - If it fails.
###############################################################################
function iam_delete_policy() {
local policy_arn response
local option OPTARG # Required to use getopts command in a function.
# bashsupport disable=BP5008
function usage() {
echo "function iam_delete_policy"
echo "Deletes an AWS Identity and Access Management (IAM) policy"
echo " -n policy_arn -- The name of the IAM policy arn."
echo ""
}
# Retrieve the calling parameters.
while getopts "n:h" option; do
case "${option}" in
n) policy_arn="${OPTARG}" ;;
h)
usage
return 0
;;
\?)
echo "Invalid parameter"
usage
return 1
;;
esac
done
export OPTIND=1
if [[ -z "$policy_arn" ]]; then
errecho "ERROR: You must provide a policy arn with the -n parameter."
usage
return 1
fi
iecho "Parameters:\n"
iecho " Policy arn: $policy_arn"
iecho ""
response=$(aws iam delete-policy \
--policy-arn "$policy_arn")
local error_code=${?}
if [[ $error_code -ne 0 ]]; then
aws_cli_error_log $error_code
errecho "ERROR: AWS reports delete-policy operation failed.\n$response"
return 1
fi
iecho "delete-policy response:$response"
iecho
return 0
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
C++
bool AwsDoc::IAM::deletePolicy(const Aws::String &policyArn,
const Aws::Client::ClientConfiguration &clientConfig) {
Aws::IAM::IAMClient iam(clientConfig);
Aws::IAM::Model::DeletePolicyRequest request;
request.SetPolicyArn(policyArn);
auto outcome = iam.DeletePolicy(request);
if (!outcome.IsSuccess()) {
std::cerr << "Error deleting policy with arn " << policyArn << ": "
<< outcome.GetError().GetMessage() << std::endl;
}
else {
std::cout << "Successfully deleted policy with arn " << policyArn
<< std::endl;
}
return outcome.IsSuccess();
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
AWS CLI
IAM 정책 삭제하기
aws iam delete-policy \
--policy-arn arn:aws:iam::123456789012:policy/MySamplePolicy
이 예시는 ARN이 arn:aws:iam::123456789012:policy/MySamplePolicy인 정책을 삭제해요.
Go(SDK for Go V2)
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
}
// DeletePolicy deletes a policy.
func (wrapper PolicyWrapper) DeletePolicy(ctx context.Context, policyArn string) error {
_, err := wrapper.IamClient.DeletePolicy(ctx, &iam.DeletePolicyInput{
PolicyArn: aws.String(policyArn),
})
if err != nil {
log.Printf("Couldn't delete policy %v. Here's why: %v\n", policyArn, err)
}
return err
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
Java(SDK for Java 2.x)
import software.amazon.awssdk.services.iam.model.DeletePolicyRequest;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
/**
* Before running this Java V2 code example, set up your development
* environment, including your credentials.
*
* For more information, see the following documentation topic:
*
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
*/
public class DeletePolicy {
public static void main(String[] args) {
final String usage = """
Usage:
<policyARN>\s
Where:
policyARN - A policy ARN value to delete.\s
""";
if (args.length != 1) {
System.out.println(usage);
System.exit(1);
}
String policyARN = args[0];
Region region = Region.AWS_GLOBAL;
IamClient iam = IamClient.builder()
.region(region)
.build();
deleteIAMPolicy(iam, policyARN);
iam.close();
}
public static void deleteIAMPolicy(IamClient iam, String policyARN) {
try {
DeletePolicyRequest request = DeletePolicyRequest.builder()
.policyArn(policyARN)
.build();
iam.deletePolicy(request);
System.out.println("Successfully deleted the policy");
} catch (IamException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
System.out.println("Done");
}
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
JavaScript(SDK v3)
import { DeletePolicyCommand, IAMClient } from "@aws-sdk/client-iam";
const client = new IAMClient({});
/**
*
* @param {string} policyArn
*/
export const deletePolicy = (policyArn) => {
const command = new DeletePolicyCommand({ PolicyArn: policyArn });
return client.send(command);
};
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
정책을 삭제해요.
Kotlin
suspend fun deleteIAMPolicy(policyARNVal: String?) {
val request =
DeletePolicyRequest {
policyArn = policyARNVal
}
IamClient.fromEnvironment { region = "AWS_GLOBAL" }.use { iamClient ->
iamClient.deletePolicy(request)
println("Successfully deleted $policyARNVal")
}
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
PowerShell Tools (V4)
예시 1: ARN이 arn:aws:iam::123456789012:policy/MySamplePolicy인 정책을 삭제해요. 정책을 삭제하기 전에 Remove-IAMPolicyVersion을 실행해 기본 버전을 제외한 모든 버전을 먼저 삭제해야 해요. 또한 IAM 사용자·그룹·역할에서 정책을 분리해야 해요.
Remove-IAMPolicy -PolicyArn arn:aws:iam::123456789012:policy/MySamplePolicy
예시 2: 먼저 기본이 아닌 모든 정책 버전을 삭제하고, 연결된 모든 IAM 엔터티에서 분리한 뒤, 마지막으로 정책 자체를 삭제해요. 첫 번째 줄은 정책 객체를 가져와요. 두 번째 줄은 기본 버전으로 표시되지 않은 모든 정책 버전을 컬렉션으로 가져온 뒤 각 정책을 삭제해요. 세 번째 줄은 정책이 연결된 모든 IAM 사용자·그룹·역할을 가져와요. 네 번째부터 여섯 번째 줄은 각 연결 엔터티에서 정책을 분리해요. 마지막 줄은 이 명령으로 관리형 정책과 남아 있는 기본 버전을 제거해요. 이 예시는 확인 프롬프트를 막기 위해 필요한 줄에 -Force 스위치 파라미터를 포함하고 있어요.
$pol = Get-IAMPolicy -PolicyArn arn:aws:iam::123456789012:policy/MySamplePolicy
Get-IAMPolicyVersions -PolicyArn $pol.Arn | where {-not $_.IsDefaultVersion} | Remove-IAMPolicyVersion -PolicyArn $pol.Arn -force
$attached = Get-IAMEntitiesForPolicy -PolicyArn $pol.Arn
$attached.PolicyGroups | Unregister-IAMGroupPolicy -PolicyArn $pol.arn
$attached.PolicyRoles | Unregister-IAMRolePolicy -PolicyArn $pol.arn
$attached.PolicyUsers | Unregister-IAMUserPolicy -PolicyArn $pol.arn
Remove-IAMPolicy $pol.Arn -Force
PowerShell Tools (V5)
예시 1: ARN이 arn:aws:iam::123456789012:policy/MySamplePolicy인 정책을 삭제해요. 정책을 삭제하기 전에 Remove-IAMPolicyVersion을 실행해 기본 버전을 제외한 모든 버전을 먼저 삭제해야 해요. 또한 IAM 사용자·그룹·역할에서 정책을 분리해야 해요.
Remove-IAMPolicy -PolicyArn arn:aws:iam::123456789012:policy/MySamplePolicy
예시 2: 먼저 기본이 아닌 모든 정책 버전을 삭제하고, 연결된 모든 IAM 엔터티에서 분리한 뒤, 마지막으로 정책 자체를 삭제해요. 첫 번째 줄은 정책 객체를 가져와요. 두 번째 줄은 기본 버전으로 표시되지 않은 모든 정책 버전을 컬렉션으로 가져온 뒤 각 정책을 삭제해요. 세 번째 줄은 정책이 연결된 모든 IAM 사용자·그룹·역할을 가져와요. 네 번째부터 여섯 번째 줄은 각 연결 엔터티에서 정책을 분리해요. 마지막 줄은 이 명령으로 관리형 정책과 남아 있는 기본 버전을 제거해요. 이 예시는 확인 프롬프트를 막기 위해 필요한 줄에 -Force 스위치 파라미터를 포함하고 있어요.
$pol = Get-IAMPolicy -PolicyArn arn:aws:iam::123456789012:policy/MySamplePolicy
Get-IAMPolicyVersions -PolicyArn $pol.Arn | where {-not $_.IsDefaultVersion} | Remove-IAMPolicyVersion -PolicyArn $pol.Arn -force
$attached = Get-IAMEntitiesForPolicy -PolicyArn $pol.Arn
$attached.PolicyGroups | Unregister-IAMGroupPolicy -PolicyArn $pol.arn
$attached.PolicyRoles | Unregister-IAMRolePolicy -PolicyArn $pol.arn
$attached.PolicyUsers | Unregister-IAMUserPolicy -PolicyArn $pol.arn
Remove-IAMPolicy $pol.Arn -Force
Python(Boto3)
def delete_policy(policy_arn):
"""
Deletes a policy.
:param policy_arn: The ARN of the policy to delete.
"""
try:
iam.Policy(policy_arn).delete()
logger.info("Deleted policy %s.", policy_arn)
except ClientError:
logger.exception("Couldn't delete policy %s.", policy_arn)
raise
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
Rust
pub async fn delete_policy(client: &iamClient, policy: Policy) -> Result<(), iamError> {
client
.delete_policy()
.policy_arn(policy.arn.unwrap())
.send()
.await?;
Ok(())
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
SAP ABAP
TRY.
lo_iam->deletepolicy( iv_policyarn = iv_policy_arn ).
MESSAGE 'Policy deleted successfully.' TYPE 'I'.
CATCH /aws1/cx_iamnosuchentityex.
MESSAGE 'Policy does not exist.' TYPE 'E'.
CATCH /aws1/cx_iamdeleteconflictex.
MESSAGE 'Policy cannot be deleted due to attachments.' TYPE 'E'.
ENDTRY.
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
Swift
import AWSIAM
import AWSS3
public func deletePolicy(policy: IAMClientTypes.Policy) async throws {
let input = DeletePolicyInput(
policyArn: policy.arn
)
do {
_ = try await iamClient.deletePolicy(input: input)
} catch {
print("ERROR: deletePolicy:", dump(error))
throw error
}
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.