ECS Fargate 작업에서 AWS SDK를 사용할 때 발생하는 메타데이터 오류를 해결하려면 어떻게 해야 합니까?

4분 분량
0

AWS Fargate 작업을 위한 Amazon Elastic Container Service(Amazon ECS)에서 AWS Software Development Kit(AWS SDK)를 사용할 때 발생하는 메타데이터 오류를 해결하려고 합니다.

간략한 설명

다음 시나리오를 기반으로 Fargate 작업을 위한 Amazon ECS에서 AWS SDK를 사용할 때 발생하는 메타데이터 오류를 해결합니다.

  • Fargate 작업에서 인스턴스 메타데이터를 가져올 수 없습니다.
  • 구성에서 자격 증명 누락 또는 자격 증명을 로드할 수 없음 오류가 발생했습니다.
  • 간헐적인 메타데이터 오류
  • 인스턴스 메타데이터 서비스에서 제한 시간 오류가 발생했습니다.

해결 방법

Fargate 작업에서 인스턴스 메타데이터를 가져올 수 없음

Fargate 작업에서 인스턴스 메타데이터를 가져올 수 없는 경우 다음 단계를 완료하십시오.

  1. Amazon ECS Exec를 사용하여 작업의 컨테이너에 액세스합니다.
    참고: example-clustername을 클러스터 이름으로 바꾸고, example-taskid를 필요한 작업 ID로 바꾸고, example-containername을 컨테이너 이름으로 바꾸십시오.

    aws ecs execute-command --cluster $example-clustername \
        --task $example-taskid \
        --container $example-containername \
        --interactive \
        --command "/bin/sh"
  2. 다음과 같이 메타데이터를 가져옵니다.
    플랫폼 버전 1.4.0 이상을 사용하는 Fargate의 작업에는 작업 메타데이터 엔드포인트 버전 4를 사용하십시오.

    curl ${ECS_CONTAINER_METADATA_URI_V4}/task

    1.4.0 이전의 플랫폼 버전을 사용하는 Fargate의 작업인 경우 다음 명령을 사용하십시오.

    curl ${ECS_CONTAINER_METADATA_URI}/task

"구성에서 자격 증명 누락 또는 자격 증명을 로드할 수 없음" 오류 발생

다음 오류 메시지 또는 유사한 오류 메시지를 받았는지 확인하십시오.

"Missing credentials in config or Could not load credentials from any providers or Fail to retrieve token"

이 오류는 작업 정의에 추가된 작업 역할 없이 Fargate 작업을 시작할 때 발생합니다. 이 오류는 수동 RunTask API 작업에서 작업 역할 재정의가 지정되어 있지 않고 다른 AWS 자격 증명이 제공되지 않은 경우에도 발생합니다.

이 오류를 해결하려면 다음 단계를 완료하십시오.

  1. Amazon ECS Exec를 사용하여 작업의 컨테이너에 액세스합니다.
    참고: example-cluster-name을 클러스터 이름으로 바꾸고, example-task-id를 필요한 작업 ID로 바꾸고, example-container-name을 컨테이너 이름으로 바꾸십시오.

    aws ecs execute-command --cluster $example-cluster-name \
        --task $example-task-id \
        --container $example-container-name \
        --interactive \
        --command "/bin/sh"
  2. 작업과 연결된 AWS Identity and Access Management(IAM) 역할을 확인합니다.

    curl -s 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

    출력 예시:

    {
      "RoleArn": "arn:aws:iam::ACCOUNT_ID:role/<task_role_name>",
      "AccessKeyId": "XXXXXXXXXXXXXXXXX",
      "SecretAccessKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "Token": "IQoJb......",
      "Expiration": "2024-03-29T19:19:25Z"
    }

    참고: Fargate 작업의 작업 정의에 작업 IAM 역할이 없는 경우 404 페이지를 찾을 수 없음 오류가 반환됩니다.

  3. AWS SDK가 Fargate 작업 애플리케이션 코드에 있는 컨테이너 메타데이터의 기본 자격 증명 공급자 체인을 사용하는지 확인합니다. 이를 통해 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 시스템 환경 변수에서 자격 증명을 로드할 수 있습니다.

간헐적인 메타데이터 오류

메타데이터 엔드포인트에 액세스할 때 간헐적인 메타데이터 오류가 발생할 수 있는 원인은 다음과 같습니다.

  • 리소스 고갈(예: 높은 CPU 및 메모리 사용률)
  • 많은 수의 스레드 또는 프로세스 동시 실행
  • CPU 사용 급증
  • 애플리케이션에서 실행되는 집약적인 작업으로 인한 작업 볼륨의 높은 디스크 사용량
  • 컨테이너 내에서 높은 빈도로 쿼리되는 작업 메타데이터 서비스(API 호출 시 발생)

간헐적인 메타데이터 오류를 해결하려면 다음 작업을 수행하십시오.

  • 작업 정의에서 적절한 양의 CPU와 메모리 용량으로 Fargate 작업을 구성합니다. 컨테이너화된 애플리케이션의 지표를 추적하도록 CloudWatch Container Insights를 설정합니다.
  • CloudWatch Container Insights와 Amazon ECS 작업 메타데이터 엔드포인트를 사용하여 작업 스토리지 사용률을 모니터링합니다. 디스크 사용률을 확인하고 증가시켜야 하는지 여부를 결정합니다.
  • 애플리케이션 코드가 작업 메타데이터 서비스를 쿼리하는 속도를 줄입니다. 예를 들어, AWS 객체를 한 번 생성합니다. 그런 다음, 애플리케이션 코드에서 후속 API 호출을 수행할 때 해당 인스턴스를 재사용합니다.
  • 최신 AWS SDK 버전을 사용합니다. 최신 버전의 AWS SDK는 API 호출 시 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 환경 변수에서 자동으로 자격 증명을 가져옵니다.

인스턴스 메타데이터 서비스에서 제한 시간 오류 발생

인스턴스 메타데이터 서비스에서 제한 시간 오류가 발생하는 경우 애플리케이션 코드에 정의된 제한 시간 임계값을 초과한 것입니다. 이 문제는 CPU 또는 메모리 부족으로 인해 메타데이터 서비스 요청이 대기열에 있거나 실행 중인 프로세스 수가 많을 때 발생합니다.

이 오류를 해결하려면, 다음 작업을 수행하십시오.

  • 애플리케이션 코드에 정의된 제한 시간을 확인합니다. 인스턴스 메타데이터 서비스에 적절한 제한 시간 값이 있어야 합니다.
  • 자격 증명을 가져오려면 재시도를 구현합니다. 또한 메타데이터 서비스에 대한 호출 빈도를 줄입니다.
  • 작업 정의에서 적절한 양의 CPU와 메모리로 Fargate 작업을 구성합니다.

관련 정보

Amazon ECS 작업 역할

AWS 공식
AWS 공식업데이트됨 9달 전