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

AWS::IAM::Role

AWS Identity and Access Management(IAM) 역할을 생성합니다. 역할을 사용하여 EC2 인스턴스에서 실행되는 애플리케이션에서 AWS 리소스에 안전하게 액세스할 수 있도록 활성화할 수 있습니다.

IAM 역할에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서Working with Roles를 참조하십시오.

구문

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

JSON

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

YAML

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

Properties

AssumeRolePolicyDocument

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

Required: Yes

Type: JSON 정책 문서입니다.

참고

AWS Identity and Access Management(IAM)에는 JSON 형식의 정책이 필요합니다. 그러나 YAML 형식으로 된 템플릿의 경우 IAM 정책을 JSON 또는 YAML 형식으로 만들 수 있습니다. AWS CloudFormation은 정책을 IAM에 제출하기 전에 항상 JSON 형식으로 변환합니다.

업데이트 필요 조건: 무중단

ManagedPolicyArns

이 역할에 연결할 하나 이상의 관리형 정책 ARN입니다.

Required: No

Type: List of String values

업데이트 필요 조건: 무중단

MaxSessionDuration

지정된 역할에 대한 최대 세션 기간(초)입니다. AWS CLI 또는 API를 사용하는 누구나 선택 사항인 DurationSeconds API 파라미터 또는 duration-seconds CLI 파라미터를 통해 기간을 지정할 수 있는 역할을 수임합니다. 최소값은 3600입니다. 최대 값 43200.

Required: No

Type: Integer

업데이트 필요 조건: 무중단

Path

이 역할과 연결된 경로입니다. IAM 경로에 대한 자세한 내용은 IAM 사용 설명서표시 이름 및 경로를 참조하십시오.

Required: No

Type: String

업데이트 필요 조건: 대체

PermissionsBoundary

역할에 대한 권한 경계 설정에 사용되는 정책의 ARN입니다. 최소 길이 20. 최대 길이 2048.

Required: No

Type: String

업데이트 필요 조건: 무중단

Policies

이 역할과 연결할 정책입니다. 샘플 템플릿은 템플릿 예를 참조하십시오.

중요

역할, 사용자 또는 그룹의 각 정책 이름은 고유해야 합니다. 그렇지 않으면 IAM 역할에 대한 업데이트가 실패합니다.

참고

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

Required: No

유형: IAM 정책의 목록

업데이트 필요 조건: 무중단

RoleName

IAM 역할의 이름입니다. 유효한 값은 IAM API ReferenceCreateRole 작업에 대한 RoleName 파라미터를 참조하십시오. 이름을 지정하지 않으면 은 고유의 물리적 ID를 생성하고 그 ID를 그룹 이름으로 사용합니다.

중요

이름을 지정하는 경우, 이 리소스를 대체해야 하는 업데이트는 수행할 수 없습니다. 그러나 거의 또는 전혀 중단하지 않아도 되는 업데이트는 가능합니다. 리소스를 바꿔야 한다면 새 이름을 지정하십시오.

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

주의

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

필수 항목 여부: 아니요

Type: String

업데이트 필요 조건: 대체

IAM 역할 정책에 대한 주의사항

IAM 정책 및 정책 문서에 대한 일반적인 정보는 IAM 사용 설명서정책 작성 방법을 참조하십시오.

반환 값

Ref

Ref 내장 함수에 이 리소스의 Logical ID를 입력하면 Ref는 해당 리소스 이름을 반환합니다. 예:

{ "Ref": "RootRole" }

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

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

Fn::GetAtt

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

Arn

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

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

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

RoleId

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

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

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

템플릿 예

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

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

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": "/", "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.amazonaws.com" 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 역할로 외부적으로 지정됩니다. 이 리소스는 각 역할 속성에서 "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"

참고 항목