AWS CloudFormation
사용 설명서 (API 버전 2010-05-15)

AWS::IAM::Role

AWS 계정에 대한 새 역할을 생성합니다. 역할에 대한 자세한 내용은 IAM 역할을 참조하십시오. 역할 이름과 생성할 수 있는 역할 수에 대한 자세한 내용은 IAM 사용 설명서IAM 개체 제한을 참조하십시오.

구문

AWS CloudFormation 템플릿에서 이 개체를 선언하려면 다음 구문을 사용합니다.

JSON

{ "Type" : "AWS::IAM::Role", "Properties" : { "AssumeRolePolicyDocument" : Json, "ManagedPolicyArns" : [ String, ... ], "MaxSessionDuration" : Integer, "Path" : String, "PermissionsBoundary" : String, "Policies" : [ Policy, ... ], "RoleName" : String } }

YAML

Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Json ManagedPolicyArns: - String MaxSessionDuration: Integer Path: String PermissionsBoundary: String Policies: - Policy RoleName: String

Properties

AssumeRolePolicyDocument

이 역할과 연결된 신뢰 정책입니다. 신뢰 정책에서는 어느 개체가 역할을 수임할 수 있는지 정의합니다. 하나의 신뢰 정책만을 역할과 연결할 수 있습니다. 역할을 수임하는 데 사용할 수 있는 정책의 예는 템플릿 예를 참조하십시오. IAM 정책 내에서 사용할 수 있는 요소에 대한 자세한 내용은 IAM 사용 설명서IAM 정책 요소 참조를 참조하십시오.

Required: 예

Type: Json

Update requires: No interruption

ManagedPolicyArns

사용자에게 연결하려는 IAM 관리형 정책의 Amazon 리소스 이름(ARN)의 목록입니다.

ARN에 대한 자세한 내용은 AWS 일반 참조Amazon 리소스 이름(ARN) 및 AWS 서비스 네임스페이스를 참조하십시오.

Required: 아니요

Type: String 목록

Update requires: No interruption

MaxSessionDuration

지정된 역할에 대해 설정하려는 최대 세션 기간(초)입니다. 이 설정에 대해 값을 지정하지 않으면 기본 최댓값인 1시간이 적용됩니다. 이 설정에는 1~12시간의 값을 지정할 수 있습니다.

AWS CLI 또는 API에서 역할을 수임한 사람은 누구나 DurationSeconds API 파라미터 또는 duration-seconds CLI 파라미터를 사용해 더 긴 세션을 요청할 수 있습니다. MaxSessionDuration 설정은 DurationSeconds 파라미터를 사용해 요청할 수 있는 최대 기간을 결정합니다. 사용자가 DurationSeconds 파라미터의 값을 지정하지 않으면 보안 자격 증명이 기본적으로 한 시간 동안 유효하게 됩니다. 이는 AssumeRole* API 작업 또는 assume-role* CLI 작업 사용 시에 적용되지만 콘솔 URL을 생성하기 위해 이러한 작업을 사용하면 적용되지 않습니다. 자세한 내용은 IAM 사용 설명서IAM 역할 사용을 참조하십시오.

Required: 아니요

Type: 정수

최소: 3600

Maximum: 43200

Update requires: No interruption

Path

역할 경로입니다. 경로에 대한 자세한 내용은 IAM 사용 설명서IAM 식별자를 참조하십시오.

이 파라미터는 선택 항목입니다. 포함시키지 않을 경우 슬래시(/)로 기본 설정됩니다.

이 파라미터는 해당 regex 패턴을 통해 슬래시(/) 문자 자체 또는 슬래시로 시작하고 종료해야 하는 문자열로 구성된 문자열을 허용합니다. 또한 대부분의 구두점 문자, 숫자, 대문자, 소문자를 포함하여 !(\u0021)부터 DEL 문자(\u007F)까지의 ASCII 문자를 포함할 수 있습니다.

Required: 아니요

Type: 문자열

최소: 1

Maximum: 512

Pattern: (\u002F)|(\u002F[\u0021-\u007F]+\u002F)

Update requires: Replacement

PermissionsBoundary

역할에 대한 권한 경계 설정에 사용되는 정책의 ARN입니다.

권한 경계에 대한 자세한 내용은 IAM 사용 설명서IAM 자격 증명의 권한 경계를 참조하십시오.

Required: 아니요

Type: 문자열

Update requires: No interruption

Policies

지정된 IAM 역할에 포함된 인라인 정책 문서를 추가 또는 업데이트합니다.

인라인 정책을 역할에 포함시켰을 때 인라인 정책은 역할의 액세스(권한) 정책의 일환으로 사용됩니다. 역할의 신뢰 정책은 역할 생성과 동시에 생성됩니다. 역할의 신뢰 정책을 업데이트할 수 있습니다. IAM 역할에 대한 자세한 내용은 권한을 위임하고 자격 증명을 연동하기 위한 역할 사용을 참조하십시오.

또한 역할은 연결된 관리형 정책을 가질 수 있습니다. 정책에 대한 자세한 내용은 IAM 사용 설명서관리형 정책 및 인라인 정책을 참조하십시오.

역할과 함께 포함할 수 있는 인라인 정책 수 제한에 대한 자세한 내용은 IAM 사용 설명서IAM 개체에 대한 제한 단원을 참조하십시오.

참고

외부 정책(예: AWS::IAM::Policy 또는 AWS::IAM::ManagedPolicy)에 역할에 대한 Ref가 있고 리소스(예: AWS::ECS::Service)에도 동일한 역할에 대한 Ref가 있는 경우 리소스가 외부 정책에 종속되도록 DependsOn 속성을 리소스에 추가합니다. 이 종속성은 리소스의 수명 주기 전반에서 역할의 정책을 사용할 수 있도록 해줍니다. 예를 들어, AWS::ECS::Service 리소스를 사용하여 스택을 삭제하는 경우 DependsOn 속성을 사용하면 역할의 정책이 삭제되기 전에 AWS CloudFormation에서 AWS::ECS::Service 리소스를 삭제할 수 있습니다.

Required: 아니요

Type: Policy 목록

Update requires: No interruption

RoleName

IAM 역할의 이름입니다. 유효한 값은 IAM 사용 설명서 CreateRole 작업에 대한 RoleName 파라미터를 참조하십시오.

이 파라미터에는 해당 regex 패턴에 따라 공백 없이 대문자 및 소문자 영숫자로 구성된 문자열을 사용할 수 있습니다. 또한 _+=,.@- 문자도 사용할 수 있습니다. 역할 이름은 계정 내에서 고유해야 합니다. 역할 이름은 대/소문자를 구분하지 않습니다. 예를 들어, 이름이 ‘Role1’ 및 ‘role1’, 두 가지로 지정된 역할을 만들 수는 없습니다.

이름을 지정하지 않은 경우 AWS CloudFormation은 고유한 물리적 ID를 생성한 후 역할 이름에 해당 ID를 사용합니다.

이름을 지정한 경우 CAPABILITY_NAMED_IAM 값을 지정하여 템플릿의 기능을 승인해야 합니다. 자세한 내용은 AWS CloudFormation 템플릿에서 IAM 리소스 승인을 참조하십시오.

중요

동일한 템플릿을 여러 리전에서 재사용하는 경우 IAM 리소스의 이름을 지정하면 복구할 수 없는 오류가 발생할 수 있습니다. 이 문제를 방지하려면 Fn::JoinAWS::Region을 사용하여 다음 예와 같이 리전별 이름을 생성하는 것이 좋습니다. {"Fn::Join": ["", [{"Ref": "AWS::Region"}, {"Ref": "MyResourceName"}]]}.

Required: 아니요

Type: 문자열

Update requires: Replacement

반환 값

Ref

When the logical ID of this resource is provided to the Ref intrinsic function, Ref returns the resource name.

예:

{ "Ref": "RootRole" }

논리적 ID RootRole을 사용하는 AWS::IAM::Role 리소스의 경우 Ref는 역할 이름을 반환합니다.

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 내장 함수는 이 유형의 지정된 속성에 대한 값을 반환합니다. 다음은 사용 가능한 속성과 반환되는 샘플 값입니다.

Fn::GetAtt 내장 함수를 사용하는 방법에 대한 자세한 내용은 Fn::GetAtt를 참조하십시오.

Arn

역할에 대한 Amazon 리소스 이름(ARN)을 반환합니다. 예:

{"Fn::GetAtt" : ["MyRole", "Arn"] }

이 예제는 arn:aws:iam::1234567890:role/MyRole-AJJHDSKSDF와 같은 값을 반환합니다.

RoleId

역할을 식별하는 안정적이고 고유한 문자열을 반환합니다. 예: AIDAJQABLZS4A3QDU576Q.

ID에 대한 자세한 내용은 IAM 사용 설명서IAM 식별자를 참조하십시오.

예제

포함 정책 및 인스턴스 프로파일이 있는 IAM 역할

이 예제에서는 AWS::IAM::Role에 포함된 정책을 보여 줍니다. 정책은 AWS::IAM::RolePolicies 속성에서 인라인으로 지정됩니다.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "RootRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.&api-domain;" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] } } ] } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "RootRole" } ] } } } }

YAML

AWSTemplateFormatVersion: "2010-09-09" Resources: RootRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ec2.&api-domain;" Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "*" Resource: "*" RootInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: Path: "/" Roles: - Ref: "RootRole"

외부 정책 및 인스턴스 프로파일이 있는 IAM 역할

이 예제에서는 Policy 및 InstanceProfile 리소스가 IAM 역할로 외부적으로 지정됩니다. 이 리소스는 각 Roles 속성에서 ‘RootRole’이라는 이름을 지정하여 역할을 참조합니다.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "RootRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RolePolicies": { "Type": "AWS::IAM::Policy", "Properties": { "PolicyName": "root", "PolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }, "Roles": [ { "Ref": "RootRole" } ] } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "RootRole" } ] } } } }

YAML

AWSTemplateFormatVersion: "2010-09-09" Resources: RootRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ec2.amazonaws.com" Action: - "sts:AssumeRole" Path: "/" RolePolicies: Type: "AWS::IAM::Policy" Properties: PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "*" Resource: "*" Roles: - Ref: "RootRole" RootInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: Path: "/" Roles: - Ref: "RootRole"

참고 항목