내용으로 건너뛰기

API 호출 시 "Access Denied" 오류가 발생하지 않도록 Amazon ECS에서 IAM 작업 역할을 구성하려면 어떻게 해야 합니까?

3분 분량
0

API 호출 시 "Access Denied" 오류가 발생하지 않도록 Amazon Elastic Container Service(Amazon ECS)에서 AWS Identity and Access Management(AWS IAM) 작업 역할을 구성하고 싶습니다.

간략한 설명

Access Denied 오류를 방지하려면 Amazon ECS 작업 정의에 IAM 역할을 포함하십시오.

ECS 컨테이너 에이전트 구성 파일에서 IAM 역할을 활성화해야 합니다. 또한 작업이 해당 역할을 사용하여 API를 호출할 수 있도록 IAM 역할에 필요한 모든 권한이 있는지 확인하십시오.

참고: 구성 문제로 인해 작업에서 IAM 작업 역할을 찾을 수 없는 경우 해당 작업은 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 역할을 사용합니다.

해결 방법

ECS 컨테이너 에이전트가 실행 중인지 확인

docker ps 명령을 실행합니다.

docker ps

참고: 인스턴스를 다시 시작하면 iptables에 대한 규칙이 기본값으로 재설정됩니다. 재설정을 방지하려면 다음 명령 중 하나를 실행하여 규칙을 저장하십시오.

Amazon ECS 최적화 Amazon Linux Amazon Machine Image(AMI):

sudo service iptables save

Amazon ECS 최적화 Amazon Linux 2 AMI:

sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables

ECS 컨테이너 에이전트 구성 파일에서 IAM 역할 활성화

다음 단계를 완료하십시오.

  1. /etc/ecs/ecs.config 파일을 엽니다.

  2. bridgedefault 네트워크 모드를 사용하는 컨테이너의 작업에 대해 IAM 역할을 활성화하려면 ECS_ENABLE_TASK_IAM_ROLEtrue로 설정합니다.

    ECS_ENABLE_TASK_IAM_ROLE=true
  3. host 네트워크 모드에서 컨테이너 작업에 대해 IAM 역할을 활성화하려면 ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOSTtrue로 설정합니다.

    ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true
  4. 구성 파일을 업데이트하려면 다음 명령 중 하나를 실행하여 ECS 컨테이너 에이전트를 다시 시작합니다.
    Amazon ECS 최적화 Amazon Linux AMI:

    sudo stop ecs
    sudo start ecs

    Amazon ECS 최적화 Amazon Linux 2 AMI:

    sudo systemctl restart ecs

IAM 역할 신뢰 정책 업데이트

Amazon ECS 작업에 IAM 역할을 할당하려면 IAM 역할 신뢰 정책을 업데이트합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

ECS 컨테이너 에이전트의 HTTP_PROXY 설정 업데이트

Amazon ECS 컨테이너 에이전트 구성에 HTTP_PROXY를 사용하는 경우 다음과 같은 NO_PROXY 설정을 적용하십시오.

NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock

최신 AWS SDK 버전 사용

컨테이너에서 실행되는 애플리케이션은 AWS SDK 2016 이상 버전을 사용해야 합니다. AWS를 업데이트하려면 AWS SDK 및 도구 버전 지원 및 ](https://aws.amazon.com/tools/)AWS에서 구축할 도구[를 참조하십시오.

Amazon ECS 최적화 AMI가 아닌 경우에 대한 iptables 규칙 구성

Amazon ECS 최적화 AMI를 사용하지 않는 경우 iptables필요한 규칙을 설정하십시오.

PID 1이 아닌 프로세스에서 환경 변수를 사용할 수 있도록 설정

AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 환경 변수는 컨테이너 내의 PID 1 프로세스에만 사용할 수 있습니다. 컨테이너가 여러 프로세스 또는 init 프로세스를 실행 중이면, PID 1이 아닌 프로세스에서는 환경 변수를 사용할 수 없습니다.

PID 1이 아닌 프로세스에서 사용할 수 있도록 환경 변수를 설정하려면 .profile 파일로 환경 변수를 내보내십시오. 예를 들어 다음 명령을 실행하여 Dockerfile에서 컨테이너 이미지용 환경 변수를 내보냅니다.

RUN echo 'export $(strings /proc/1/environ | grep AWS_CONTAINER_CREDENTIALS_RELATIVE_URI)' >> /root/.profile

참고: 환경 변수를 내보내내는 경우 문자열과 grep 명령에 대한 종속성이 있습니다.

관련 정보

Amazon EC2 Windows 인스턴스 추가 구성

AWS 공식업데이트됨 일 년 전
댓글 없음