Amazon ECS의 서비스 연결 역할 - Amazon Elastic Container Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

Amazon ECS의 서비스 연결 역할

Amazon Elastic Container Service는 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 권한에 대해 서비스 연결 역할을 사용합니다. 자세한 내용은 IAM 사용 설명서서비스 연결 역할 사용을 참조하십시오.

Amazon ECS에 서비스 연결 역할을 도입하기 전에는 Amazon ECS에 필요한 권한을 부여했던 Amazon ECS 서비스에 대한 IAM 역할을 만들어야 했습니다. 이 역할은 더 이상 필요하지 않지만, 필요한 경우 사용할 수 있습니다. 자세한 내용은 Amazon ECS의 레거시 IAM 역할 단원을 참조하십시오.

서비스 연결 역할에 의해 부여된 권한

Amazon ECS는 AWSServiceRoleForECS라는 서비스 연결 역할을 사용하여 사용자 대신 Amazon ECS가 AWS API를 호출하도록 합니다.

AWSServiceRoleForECS 서비스 연결 역할은 해당 역할을 맡을 ecs.amazonaws.com 서비스 주체를 신뢰합니다.

역할 권한 정책은 Amazon ECS가 리소스에서 다음 작업을 완료하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECSTaskManagement", "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:Describe*", "ec2:DetachNetworkInterface", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:Describe*", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:RegisterTargets", "route53:ChangeResourceRecordSets", "route53:CreateHealthCheck", "route53:DeleteHealthCheck", "route53:Get*", "route53:List*", "route53:UpdateHealthCheck", "servicediscovery:DeregisterInstance", "servicediscovery:Get*", "servicediscovery:List*", "servicediscovery:RegisterInstance", "servicediscovery:UpdateInstanceCustomHealthStatus" ], "Resource": "*" }, { "Sid": "AutoScaling", "Effect": "Allow", "Action": [ "autoscaling:Describe*" ], "Resource": "*" }, { "Sid": "AutoScalingManagement", "Effect": "Allow", "Action": [ "autoscaling:DeletePolicy", "autoscaling:PutScalingPolicy", "autoscaling:SetInstanceProtection", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:ResourceTag/AmazonECSManaged": "false" } } }, { "Sid": "AutoScalingPlanManagement", "Effect": "Allow", "Action": [ "autoscaling-plans:CreateScalingPlan", "autoscaling-plans:DeleteScalingPlan", "autoscaling-plans:DescribeScalingPlans" ], "Resource": "*" }, { "Sid": "CWAlarmManagement", "Effect": "Allow", "Action": [ "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm" ], "Resource": "arn:aws:cloudwatch:*:*:alarm:*" }, { "Sid": "ECSTagging", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*" }, { "Sid": "CWLogGroupManagement", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/ecs/*" }, { "Sid": "CWLogStreamManagement", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/ecs/*:log-stream:*" } ] }

서비스 연결 역할 생성

대부분의 상황에서는 서비스 연결 역할을 수동으로 생성할 필요가 없습니다. 예를 들어 새 클러스터를 생성하거나(예: Amazon ECS를 처음 실행하는 경우 클러스터 생성 마법사 또는 AWS CLI나 SDK) AWS Management 콘솔에서 서비스를 생성 또는 업데이트하는 경우 Amazon ECS은 서비스 연결 역할이 없으면 사용자를 대신하여 이를 생성합니다.

IAM 개체(사용자, 그룹, 역할 등)가 서비스 연결 역할을 작성하고 편집하거나 삭제할 수 있도록 권한을 구성할 수 있습니다.

IAM 개체가 AWSServiceRoleForECS 서비스 연결 역할을 생성하도록 허용하려면

서비스 연결 역할을 생성해야 하는 IAM 개체의 권한 정책에 다음 명령문을 추가합니다.

{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS*", "Condition": {"StringLike": {"iam:AWSServiceName": "ecs.amazonaws.com"}} }

IAM(AWS CLI)에서 서비스 연결 역할 만들기

AWS Command Line Interface의 IAM 명령을 사용하여 서비스가 역할을 위임하는 데 필요한 인라인 정책과 신뢰 정책을 적용해 서비스 연결 역할을 만들 수 있습니다.

서비스 연결 역할을 만들려면(CLI 사용)

다음 명령을 사용합니다.

$ aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com

서비스 연결 역할 편집

Amazon ECS에서는 AWSServiceRoleForECS 서비스 연결 역할의 편집을 허용하지 않습니다. 서비스 연결 역할을 생성한 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 그러나 역할에 대한 설명을 편집할 수 있습니다. 자세한 내용은 IAM 사용 설명서역할 변경을 참조하십시오.

IAM 개체가 AWSServiceRoleForECS 서비스 연결 역할의 설명을 편집할 수 있도록 허용하려면

서비스 연결 역할의 설명을 편집해야 하는 IAM 개체의 권한 정책에 다음 명령문을 추가합니다.

{ "Effect": "Allow", "Action": [ "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS*", "Condition": {"StringLike": {"iam:AWSServiceName": "ecs.amazonaws.com"}} }

서비스 연결 역할 삭제

Amazon ECS를 더 이상 사용하지 않을 경우에는 서비스 연결 역할을 삭제하는 것이 좋습니다. 따라서 적극적으로 모니터링하거나 유지하지 않는 미사용 개체가 없도록 합니다. 그러나 서비스 연결 역할을 삭제하려면 먼저 모든 리전에서 Amazon ECS 클러스터를 모두 삭제해야 합니다.

IAM 개체가 AWSServiceRoleForECS 서비스 연결 역할을 삭제하도록 허용하려면

서비스 연결 역할을 삭제해야 하는 IAM 개체의 권한 정책에 다음 문장을 추가합니다.

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS*", "Condition": {"StringLike": {"iam:AWSServiceName": "ecs.amazonaws.com"}} }

서비스 연결 역할 정리

IAM을 사용하여 서비스 연결 역할을 삭제하기 전에 먼저 역할에 활성 세션이 없는지 확인하고 모든 AWS 리전에서 Amazon ECS 클러스터를 모두 삭제해야 합니다.

서비스 연결 역할에 활성 세션이 있는지 확인하려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 Roles를 선택한 다음 확인란이 아닌 AWSServiceRoleForECS 이름을 선택합니다.

  3. 요약 페이지에서 Access Advisor를 선택하고 서비스 연결 역할의 최근 활동을 검토합니다.

    참고

    Amazon ECS에서 AWSServiceRoleForECS 역할을 사용하는지 잘 모를 경우에는 역할을 삭제할 수 있습니다. 서비스에서 역할을 사용하는 경우에는 삭제가 안 되어 역할이 사용 중인 리전을 볼 수 있습니다. 역할이 사용 중인 경우에는 세션이 종료될 때까지 기다렸다가 역할을 삭제해야 합니다. 서비스 연결 역할에 대한 세션은 취소할 수 없습니다.

AWSServiceRoleForECS 서비스 연결 역할에서 사용하는 Amazon ECS 리소스를 제거하려면

AWSServiceRoleForECS 역할을 삭제하려면 먼저 모든 AWS 리전에서 Amazon ECS 클러스터를 모두 삭제해야 합니다.

  1. 모든 리전에서 모든 Amazon ECS 서비스의 원하는 개수를 0으로 조정한 후 해당 서비스를 삭제합니다. 자세한 내용은 서비스 업데이트서비스 삭제 단원을 참조하십시오.

  2. 모든 리전에서 모든 클러스터의 모든 컨테이너 인스턴스를 강제로 등록 취소합니다. 자세한 내용은 컨테이너 인스턴스 등록 취소 단원을 참조하십시오.

  3. 모든 리전에서 Amazon ECS 클러스터를 모두 삭제합니다. 자세한 내용은 클러스터 삭제 단원을 참조하십시오.

IAM(콘솔)에서 서비스 연결 역할 삭제

IAM 콘솔을 사용하여 서비스 연결 역할을 삭제할 수 있습니다.

서비스 연결 역할을 삭제하려면(콘솔)

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. IAM 콘솔의 탐색 창에서 역할을 선택합니다. 이름이나 행 자체가 아닌 AWSServiceRoleForECS 옆의 확인란을 선택합니다.

  3. 역할 삭제를 선택합니다.

  4. 확인 대화 상자가 나타나면 서비스 마지막 액세스 데이터를 검토합니다. 이 데이터는 선택한 각 역할이 AWS 서비스를 마지막으로 액세스한 일시를 보여 줍니다. 이를 통해 역할이 현재 활동 중인지 여부를 확인할 수 있습니다. 계속 진행하려면 [Yes, Delete]을 선택하여 삭제할 서비스 연결 역할을 제출합니다.

  5. IAM 콘솔 알림을 보고 서비스 연결 역할 삭제 진행 상황을 모니터링합니다. IAM 서비스 연결 역할 삭제는 비동기이므로 삭제할 역할을 제출한 후에 삭제 작업이 성공하거나 실패할 수 있습니다.

    • 작업에 성공하면 목록에서 역할이 제거되고 성공 알림이 페이지 상단에 나타납니다.

    • 작업에 실패할 경우 알림의 [View details] 또는 [View Resources]를 선택하면 삭제 실패 이유를 확인할 수 있습니다. 역할에서 서비스 리소스를 사용 중이어서 삭제에 실패한 경우에는 알림에 리소스 목록이 포함됩니다(서비스에서 해당 정보를 반환할 경우). 이후 리소스를 정리하고 삭제를 다시 제출할 수 있습니다.

      참고

      서비스에서 반환하는 정보에 따라 이 과정을 여러 번 반복해야 할 수 있습니다. 예를 들어, 서비스 연결 역할에서 6개의 리소스를 사용할 수 있으며, 서비스에서 이중 5개에 관한 정보를 반환할 수 있습니다. 5개 리소스를 정리하고 삭제할 역할을 다시 제출할 경우 삭제에 실패하고 서비스에서 나머지 1개의 리소스를 보고합니다. 서비스에서 리소스 전부를 반환하거나, 일부만 반환하거나, 리소스를 보고하지 않을 수 있습니다.

    • 작업에 실패했는데 알림에 리소스 목록이 포함되지 않을 경우에는 서비스에서 해당 정보를 반환하지 않을 수 있습니다. 그 서비스의 리소스를 정리하는 방법은 IAM으로 작업하는 AWS 서비스 단원을 참조하십시오. 표에서 서비스를 확인하고 링크를 선택하여 해당 서비스의 서비스 연결 역할 문서를 확인합니다.

IAM(AWS CLI)에서 서비스 연결 역할 삭제

AWS Command Line Interface에서 IAM 명령을 사용하여 서비스 연결 역할을 삭제할 수 있습니다.

서비스 연결 역할(CLI)을 삭제하려면

  1. 서비스 연결 역할이 사용되지 않거나 연결된 리소스가 없는 경우에는 서비스 연결 역할을 삭제할 수 없으므로 삭제 요청을 제출해야 합니다. 이러한 조건이 충족되지 않으면 요청이 거부될 수 있습니다. 삭제 작업 상태를 확인하려면 응답의 deletion-task-id를 캡처해야 합니다. 다음 명령을 입력하여 서비스 연결 역할 삭제 요청을 제출합니다.

    $ aws iam delete-service-linked-role --role-name AWSServiceRoleForECS+OPTIONAL-SUFFIX
  2. 다음 명령을 사용하여 삭제 작업의 상태를 확인합니다.

    $ aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id

    삭제 작업은 NOT_STARTED, IN_PROGRESS, SUCCEEDED 또는 FAILED 상태일 수 있습니다. 삭제에 실패할 경우 문제를 해결할 수 있도록 실패 이유가 호출에 반환됩니다. 역할에서 서비스 리소스를 사용 중이어서 삭제에 실패한 경우에는 알림에 리소스 목록이 포함됩니다(서비스에서 해당 정보를 반환할 경우). 이후 리소스를 정리하고 삭제를 다시 제출할 수 있습니다.

    참고

    서비스에서 반환하는 정보에 따라 이 과정을 여러 번 반복해야 할 수 있습니다. 예를 들어, 서비스 연결 역할에서 6개의 리소스를 사용할 수 있으며, 서비스에서 이중 5개에 관한 정보를 반환할 수 있습니다. 5개 리소스를 정리하고 삭제할 역할을 다시 제출할 경우 삭제에 실패하고 서비스에서 나머지 1개의 리소스를 보고합니다. 서비스에서 리소스 전부를 반환하거나, 일부만 반환하거나, 리소스를 보고하지 않을 수 있습니다. 어떤 리소스도 보고하지 않는 서비스의 리소스를 정리하는 방법은 IAM으로 작업하는 AWS 서비스 단원을 참조하십시오. 표에서 서비스를 확인하고 링크를 선택하여 해당 서비스의 서비스 연결 역할 문서를 확인합니다.

IAM(AWS API)에서 서비스 연결 역할 삭제

IAM API를 사용하여 서비스 연결 역할을 삭제할 수 있습니다.

서비스 연결 역할(API)을 삭제하려면

  1. 서비스 연결 역할 삭제 요청을 제출하려면 DeleteServiceLinkedRole를 호출합니다. 요청에 AWSServiceRoleForECS 역할 이름을 지정합니다.

    서비스 연결 역할이 사용되지 않거나 연결된 리소스가 없는 경우에는 서비스 연결 역할을 삭제할 수 없으므로 삭제 요청을 제출해야 합니다. 이러한 조건이 충족되지 않으면 요청이 거부될 수 있습니다. 삭제 작업 상태를 확인하려면 응답의 DeletionTaskId를 캡처해야 합니다.

  2. 삭제 상태를 확인하려면 GetServiceLinkedRoleDeletionStatus를 호출합니다. 요청에 DeletionTaskId를 지정합니다.

    삭제 작업은 NOT_STARTED, IN_PROGRESS, SUCCEEDED 또는 FAILED 상태일 수 있습니다. 삭제에 실패할 경우 문제를 해결할 수 있도록 실패 이유가 호출에 반환됩니다. 역할에서 서비스 리소스를 사용 중이어서 삭제에 실패한 경우에는 알림에 리소스 목록이 포함됩니다(서비스에서 해당 정보를 반환할 경우). 이후 리소스를 정리하고 삭제를 다시 제출할 수 있습니다.

    참고

    서비스에서 반환하는 정보에 따라 이 과정을 여러 번 반복해야 할 수 있습니다. 예를 들어, 서비스 연결 역할에서 6개의 리소스를 사용할 수 있으며, 서비스에서 이중 5개에 관한 정보를 반환할 수 있습니다. 5개 리소스를 정리하고 삭제할 역할을 다시 제출할 경우 삭제에 실패하고 서비스에서 나머지 1개의 리소스를 보고합니다. 서비스에서 리소스 전부를 반환하거나, 일부만 반환하거나, 리소스를 보고하지 않을 수 있습니다. 어떤 리소스도 보고하지 않는 서비스의 리소스를 정리하는 방법은 IAM으로 작업하는 AWS 서비스 단원을 참조하십시오. 표에서 서비스를 확인하고 링크를 선택하여 해당 서비스의 서비스 연결 역할 문서를 확인합니다.