CreateUser 사용하기
CreateUser 사용하기 (SDK/CLI)
CreateUser(IAM 사용자 생성) API를 활용하는 방법을 코드 예시로 정리했어요. 각 예시는 어떤 동작을 하는지, 어떤 파라미터를 쓰는지 순서대로 살펴볼 수 있어요.
출처: 문서
본문
다음 코드 예시들은 CreateUser 를 어떻게 사용하는지 보여줘요.
.NET
/// <summary>
/// Create an IAM user.
/// </summary>
/// <param name="userName">The username for the new IAM user.</param>
/// <returns>The IAM user that was created.</returns>
public async Task<User> CreateUserAsync(string userName)
{
var response = await _IAMService.CreateUserAsync(new CreateUserRequest { UserName = userName });
return response.User;
}
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_create_user
#
# This function creates the specified IAM user, unless
# it already exists.
#
# Parameters:
# -u user_name -- The name of the user to create.
#
# Returns:
# The ARN of the user.
# And:
# 0 - If successful.
# 1 - If it fails.
###############################################################################
function iam_create_user() {
local user_name response
local option OPTARG # Required to use getopts command in a function.
# bashsupport disable=BP5008
function usage() {
echo "function iam_create_user"
echo "Creates an AWS Identity and Access Management (IAM) user. You must supply a username:"
echo " -u user_name The name of the user. It must be unique within the account."
echo ""
}
# Retrieve the calling parameters.
while getopts "u:h" option; do
case "${option}" in
u) user_name="${OPTARG}" ;;
h)
usage
return 0
;;
\?)
echo "Invalid parameter"
usage
return 1
;;
esac
done
export OPTIND=1
if [[ -z "$user_name" ]]; then
errecho "ERROR: You must provide a username with the -u parameter."
usage
return 1
fi
iecho "Parameters:\n"
iecho " User name: $user_name"
iecho ""
# If the user already exists, we don't want to try to create it.
if (iam_user_exists "$user_name"); then
errecho "ERROR: A user with that name already exists in the account."
return 1
fi
response=$(aws iam create-user --user-name "$user_name" \
--output text \
--query 'User.Arn')
local error_code=${?}
if [[ $error_code -ne 0 ]]; then
aws_cli_error_log $error_code
errecho "ERROR: AWS reports create-user operation failed.$response"
return 1
fi
echo "$response"
return 0
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
C++
Aws::IAM::IAMClient iam(clientConfig);
Aws::IAM::Model::CreateUserRequest create_request;
create_request.SetUserName(userName);
auto create_outcome = iam.CreateUser(create_request);
if (!create_outcome.IsSuccess()) {
std::cerr << "Error creating IAM user " << userName << ":" <<
create_outcome.GetError().GetMessage() << std::endl;
}
else {
std::cout << "Successfully created IAM user " << userName << std::endl;
}
return create_outcome.IsSuccess();
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
AWS CLI
예시 1: IAM 사용자 생성하기
aws iam create-user \
--user-name Bob
다음 create-user 명령은 현재 계정에 Bob이라는 IAM 사용자를 생성해요.
{
"User": {
"UserName": "Bob",
"Path": "/",
"CreateDate": "2023-06-08T03:20:41.270Z",
"UserId": "AIDAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::123456789012:user/Bob"
}
}
출력:
예시 2: 지정한 경로에 IAM 사용자 생성하기
aws iam create-user \
--user-name Bob \
--path /division_abc/subdivision_xyz/
더 자세한 내용은 AWS IAM User Guide의 "Creating an IAM user in your AWS account"를 참고하세요.
다음 create-user 명령은 지정한 경로에 Bob이라는 IAM 사용자를 생성해요.
{
"User": {
"Path": "/division_abc/subdivision_xyz/",
"UserName": "Bob",
"UserId": "AIDAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::12345678012:user/division_abc/subdivision_xyz/Bob",
"CreateDate": "2023-05-24T18:20:17+00:00"
}
}
출력:
예시 3: 태그가 있는 IAM 사용자 생성하기
aws iam create-user \
--user-name Bob \
--tags '{"Key": "Department", "Value": "Accounting"}' '{"Key": "Location", "Value": "Seattle"}'
더 자세한 내용은 AWS IAM User Guide의 "IAM identifiers"를 참고하세요.
다음 create-user 명령은 태그가 있는 Bob이라는 IAM 사용자를 생성해요. 이 예시는 --tags 플래그에 다음 JSON 형식 태그를 사용해요: ' { "Key": "Department", "Value": "Accounting"}' ' { "Key": "Location", "Value": "Seattle"}' . 또는 --tags 플래그를 축약 형식의 태그와 함께 쓸 수도 있어요: 'Key=Department,Value=Accounting Key=Location,Value=Seattle' .
{
"User": {
"Path": "/",
"UserName": "Bob",
"UserId": "AIDAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::12345678012:user/Bob",
"CreateDate": "2023-05-25T17:14:21+00:00",
"Tags": [
{
"Key": "Department",
"Value": "Accounting"
},
{
"Key": "Location",
"Value": "Seattle"
}
]
}
}
출력:
예시 3: 권한 경계를 설정한 IAM 사용자 생성하기
aws iam create-user \
--user-name Bob \
--permissions-boundary arn:aws:iam::aws:policy/AmazonS3FullAccess
더 자세한 내용은 AWS IAM User Guide의 "Tagging IAM users"를 참고하세요.
다음 create-user 명령은 AmazonS3FullAccess라는 권한 경계가 적용된 Bob이라는 IAM 사용자를 생성해요.
{
"User": {
"Path": "/",
"UserName": "Bob",
"UserId": "AIDAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::12345678012:user/Bob",
"CreateDate": "2023-05-24T17:50:53+00:00",
"PermissionsBoundary": {
"PermissionsBoundaryType": "Policy",
"PermissionsBoundaryArn": "arn:aws:iam::aws:policy/AmazonS3FullAccess"
}
}
}
출력:
Go(SDK for Go V2)
import (
"context"
"encoding/json"
"errors"
"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"
"github.com/aws/smithy-go"
)
// UserWrapper encapsulates user actions used in the examples.
// It contains an IAM service client that is used to perform user actions.
type UserWrapper struct {
IamClient *iam.Client
}
// CreateUser creates a new user with the specified name.
func (wrapper UserWrapper) CreateUser(ctx context.Context, userName string) (*types.User, error) {
var user *types.User
result, err := wrapper.IamClient.CreateUser(ctx, &iam.CreateUserInput{
UserName: aws.String(userName),
})
if err != nil {
log.Printf("Couldn't create user %v. Here's why: %v\n", userName, err)
} else {
user = result.User
}
return user, err
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
Java(SDK for Java 2.x)
import software.amazon.awssdk.core.waiters.WaiterResponse;
import software.amazon.awssdk.services.iam.model.CreateUserRequest;
import software.amazon.awssdk.services.iam.model.CreateUserResponse;
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.waiters.IamWaiter;
import software.amazon.awssdk.services.iam.model.GetUserRequest;
import software.amazon.awssdk.services.iam.model.GetUserResponse;
/**
* 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 CreateUser {
public static void main(String[] args) {
final String usage = """
Usage:
<username>\s
Where:
username - The name of the user to create.\s
""";
if (args.length != 1) {
System.out.println(usage);
System.exit(1);
}
String username = args[0];
Region region = Region.AWS_GLOBAL;
IamClient iam = IamClient.builder()
.region(region)
.build();
String result = createIAMUser(iam, username);
System.out.println("Successfully created user: " + result);
iam.close();
}
public static String createIAMUser(IamClient iam, String username) {
try {
// Create an IamWaiter object.
IamWaiter iamWaiter = iam.waiter();
CreateUserRequest request = CreateUserRequest.builder()
.userName(username)
.build();
CreateUserResponse response = iam.createUser(request);
// Wait until the user is created.
GetUserRequest userRequest = GetUserRequest.builder()
.userName(response.user().userName())
.build();
WaiterResponse<GetUserResponse> waitUntilUserExists = iamWaiter.waitUntilUserExists(userRequest);
waitUntilUserExists.matched().response().ifPresent(System.out::println);
return response.user().userName();
} catch (IamException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
return "";
}
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
JavaScript(SDK v3)
import { CreateUserCommand, IAMClient } from "@aws-sdk/client-iam";
const client = new IAMClient({});
/**
*
* @param {string} name
*/
export const createUser = (name) => {
const command = new CreateUserCommand({ UserName: name });
return client.send(command);
};
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
사용자를 만들어요.
JavaScript(SDK v2)
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });
// Create the IAM service object
var iam = new AWS.IAM({ apiVersion: "2010-05-08" });
var params = {
UserName: process.argv[2],
};
iam.getUser(params, function (err, data) {
if (err && err.code === "NoSuchEntity") {
iam.createUser(params, function (err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});
} else {
console.log(
"User " + process.argv[2] + " already exists",
data.User.UserId
);
}
});
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
Kotlin
suspend fun createIAMUser(usernameVal: String?): String? {
val request =
CreateUserRequest {
userName = usernameVal
}
IamClient.fromEnvironment { region = "AWS_GLOBAL" }.use { iamClient ->
val response = iamClient.createUser(request)
return response.user?.userName
}
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
PHP
$uuid = uniqid();
$service = new IAMService();
$user = $service->createUser("iam_demo_user_$uuid");
echo "Created user with the arn: {$user['Arn']}\n";
/**
* @param string $name
* @return array
* @throws AwsException
*/
public function createUser(string $name): array
{
$result = $this->iamClient->createUser([
'UserName' => $name,
]);
return $result['User'];
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
PowerShell Tools (V4)
예시 1: Bob이라는 IAM 사용자를 만들어요. Bob이 AWS 콘솔에 로그인해야 한다면 New-IAMLoginProfile 명령을 별도로 실행해 비밀번호가 있는 로그인 프로필을 만들어야 해요. Bob이 AWS PowerShell이나 크로스 플랫폼 CLI 명령을 실행하거나 AWS API를 호출해야 한다면 New-IAMAccessKey 명령을 별도로 실행해 액세스 키를 만들어야 해요.
New-IAMUser -UserName Bob
출력:
Arn : arn:aws:iam::123456789012:user/Bob
CreateDate : 4/22/2015 12:02:11 PM
PasswordLastUsed : 1/1/0001 12:00:00 AM
Path : /
UserId : AIDAJWGEFDMEMEXAMPLE1
UserName : Bob
PowerShell Tools (V5)
예시 1: Bob이라는 IAM 사용자를 만들어요. Bob이 AWS 콘솔에 로그인해야 한다면 New-IAMLoginProfile 명령을 별도로 실행해 비밀번호가 있는 로그인 프로필을 만들어야 해요. Bob이 AWS PowerShell이나 크로스 플랫폼 CLI 명령을 실행하거나 AWS API를 호출해야 한다면 New-IAMAccessKey 명령을 별도로 실행해 액세스 키를 만들어야 해요.
New-IAMUser -UserName Bob
출력:
Arn : arn:aws:iam::123456789012:user/Bob
CreateDate : 4/22/2015 12:02:11 PM
PasswordLastUsed : 1/1/0001 12:00:00 AM
Path : /
UserId : AIDAJWGEFDMEMEXAMPLE1
UserName : Bob
Python(Boto3)
def create_user(user_name):
"""
Creates a user. By default, a user has no permissions or access keys.
:param user_name: The name of the user.
:return: The newly created user.
"""
try:
user = iam.create_user(UserName=user_name)
logger.info("Created user %s.", user.name)
except ClientError:
logger.exception("Couldn't create user %s.", user_name)
raise
else:
return user
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
Ruby
# Creates a user and their login profile
#
# @param user_name [String] The name of the user
# @param initial_password [String] The initial password for the user
# @return [String, nil] The ID of the user if created, or nil if an error occurred
def create_user(user_name, initial_password)
response = @iam_client.create_user(user_name: user_name)
@iam_client.wait_until(:user_exists, user_name: user_name)
@iam_client.create_login_profile(
user_name: user_name,
password: initial_password,
password_reset_required: true
)
@logger.info("User '#{user_name}' created successfully.")
response.user.user_id
rescue Aws::IAM::Errors::EntityAlreadyExists
@logger.error("Error creating user '#{user_name}': user already exists.")
nil
rescue Aws::IAM::Errors::ServiceError => e
@logger.error("Error creating user '#{user_name}': #{e.message}")
nil
end
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
Rust
pub async fn create_user(client: &iamClient, user_name: &str) -> Result<User, iamError> {
let response = client.create_user().user_name(user_name).send().await?;
Ok(response.user.unwrap())
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
SAP ABAP
TRY.
oo_result = lo_iam->createuser(
iv_username = iv_user_name ).
MESSAGE 'User created successfully.' TYPE 'I'.
CATCH /aws1/cx_iamentityalrdyexex.
MESSAGE 'User already exists.' TYPE 'E'.
CATCH /aws1/cx_iamlimitexceededex.
MESSAGE 'Limit exceeded for IAM users.' TYPE 'E'.
CATCH /aws1/cx_iamnosuchentityex.
MESSAGE 'Entity does not exist.' TYPE 'E'.
ENDTRY.
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.
Swift
import AWSIAM
import AWSS3
public func createUser(name: String) async throws -> String {
let input = CreateUserInput(
userName: name
)
do {
let output = try await client.createUser(input: input)
guard let user = output.user else {
throw ServiceHandlerError.noSuchUser
}
guard let id = user.userId else {
throw ServiceHandlerError.noSuchUser
}
return id
} catch {
print("ERROR: createUser:", dump(error))
throw error
}
}
GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행 방법을 배울 수 있어요.