Amazon ECS 컨테이너 인스턴스 IAM 역할
Amazon ECS 컨테이너 인스턴스 IAM 역할
Amazon EC2 및 외부 인스턴스를 포함한 Amazon ECS 컨테이너 인스턴스는 Amazon ECS 컨테이너 에이전트를 실행하며, 서비스가 에이전트가 내 것임을 알 수 있도록 IAM 역할이 필요해요. 컨테이너 인스턴스를 시작하고 클러스터에 등록하기 전에 컨테이너 인스턴스가 사용할 IAM 역할을 만들어야 해요.
출처: 문서
본문
역할은 콘솔에 로그인하거나 AWS CLI 명령을 실행하는 데 사용하는 계정에 생성돼요.
중요 외부 인스턴스를 클러스터에 등록한다면 사용하는 IAM 역할에 Systems Manager 권한도 필요해요. 자세한 내용은 Amazon ECS Anywhere IAM role 을 참고해 주세요.
Amazon ECS는 전체 Amazon ECS 기능 세트를 사용하는 데 필요한 권한이 포함된 AmazonEC2ContainerServiceforEC2Role 관리형 IAM 정책을 제공해요. 이 관리형 정책은 IAM 역할에 연결하고 컨테이너 인스턴스와 연결할 수 있어요. 또는 이 관리형 정책을 가이드로 사용해 사용할 사용자 지정 정책을 만들 수 있어요. 컨테이너 인스턴스 역할은 Amazon ECS 컨테이너 에이전트와 Docker 데몬이 내 대신 AWS API를 호출하는 데 필요한 권한을 제공해요. 관리형 정책에 대한 자세한 내용은 AmazonEC2ContainerServiceforEC2Role 을 참고해 주세요.
컨테이너 인스턴스 역할 만들기 중요 외부 인스턴스를 클러스터에 등록한다면 Amazon ECS Anywhere IAM role 을 참고해 주세요.
역할을 수동으로 만들고 컨테이너 인스턴스용 관리형 IAM 정책을 연결해 Amazon ECS가 향후 도입되는 새 기능과 개선 사항에 대한 권한을 추가할 수 있게 할 수 있어요. 필요하다면 다음 절차를 사용해 관리형 IAM 정책을 연결해 주세요.
AWS Management Console Elastic Container Service용 서비스 역할을 만들려면(IAM 콘솔)
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
- IAM 콘솔의 탐색 창에서 Roles 를 선택한 다음 Create role 을 선택합니다.
- Trusted entity type 에서 AWS service 를 선택합니다.
- Service or use case 에서 Elastic Container Service 를 선택한 다음 EC2 Role for Elastic Container Service 사용 사례를 선택합니다.
- Next 를 선택합니다.
- Permissions policies 섹션에서
AmazonEC2ContainerServiceforEC2Role정책이 선택되었는지 확인합니다.- 중요:
AmazonEC2ContainerServiceforEC2Role관리형 정책을 컨테이너 인스턴스 IAM 역할에 연결해야 합니다. 그렇지 않으면 AWS Management Console을 사용해 클러스터를 만들 때 오류가 발생합니다.
- 중요:
- Next 를 선택합니다.
- Role name 에
ecsInstanceRole을 입력합니다. - 역할을 검토한 다음 Create role 을 선택합니다.
AWS CLI 모든 사용자 입력을 내 값으로 바꿔 주세요.
- 다음 내용으로
instance-role-trust-policy.json이라는 파일을 만듭니다.{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] } - 다음 명령을 사용해 신뢰 정책 문서로 인스턴스 IAM 역할을 만듭니다.
aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://instance-role-trust-policy.json create-instance-profile명령으로ecsInstanceRole-profile이라는 인스턴스 프로파일을 만듭니다.
예제 응답aws iam create-instance-profile --instance-profile-name ecsInstanceRole-profile{ "InstanceProfile": { "InstanceProfileId": "AIPAJTLBPJLEGREXAMPLE", "Roles": [], "CreateDate": "2022-04-12T23:53:34.093Z", "InstanceProfileName": "ecsInstanceRole-profile", "Path": "/", "Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole-profile" } }ecsInstanceRole역할을ecsInstanceRole-profile인스턴스 프로파일에 추가합니다.aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole- 다음 명령으로
AmazonEC2ContainerServiceForEC2Role관리형 정책을 역할에 연결합니다.aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \ --role-name ecsInstanceRole
역할을 만든 후 다음 기능을 위해 역할에 추가 권한을 추가해 주세요.
| 기능 | 추가 권한 |
|---|---|
| Amazon ECR에 컨테이너 이미지가 있음 | Amazon ECR permissions |
| CloudWatch Logs가 컨테이너 인스턴스를 모니터링하게 함 | Monitoring container instances permissions |
| Amazon S3 버킷에 구성 파일을 호스팅함 | Amazon S3 read-only access |
Amazon ECR 권한 컨테이너 인스턴스와 함께 사용하는 Amazon ECS 컨테이너 인스턴스 역할에는 Amazon ECR에 대한 다음 IAM 정책 권한이 있어야 해요.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:GetAuthorizationToken"
],
"Resource": "*"
}
]
}
컨테이너 인스턴스에 AmazonEC2ContainerServiceforEC2Role 관리형 정책을 사용한다면 역할에 적절한 권한이 있어요.
awsvpcTrunking 계정 설정 설정에 필요한 권한
Amazon ECS는 지원되는 Amazon EC2 인스턴스 유형을 사용해 ENI 밀도를 높인 컨테이너 인스턴스 시작을 지원해요. 이 기능을 사용할 때는 컨테이너 인스턴스 역할 2개를 만들 것을 권장해요. 한 역할에 awsvpcTrunking 계정 설정을 활성화하고 ENI 트렁킹이 필요한 태스크에 그 역할을 사용해 주세요. awsvpcTrunking 계정 설정에 대한 정보는 Access Amazon ECS features with account settings 를 참고해 주세요.
컨테이너 인스턴스와 함께 사용하는 컨테이너 인스턴스 역할에는 계정 설정을 설정하기 위한 다음 IAM 정책 권한이 있어야 해요.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:ListAccountSettings",
"ecs:ListAttributes",
"ecs:PutAccountSetting"
],
"Resource": "*"
}
]
}
컨테이너 인스턴스 역할을 사용하려면 인스턴스 user data에 다음을 추가해 주세요.
#!/bin/bash
aws ecs put-account-setting --name awsvpcTrunking --value enabled --region region
ECS_CLUSTER=MyCluster>> /etc/ecs/ecs.config
EOF