내용으로 건너뛰기

IAM 액세스 키 오류 ‘The security token included in the request isn’t valid’를 어떻게 해결합니까?

4분 분량
0

AWS Identity and Access Management(IAM) 액세스 키를 사용하면 잘못된 보안 토큰에 관한 InvalidClientTokenId 오류가 발생합니다.

간략한 설명

이 인증 오류가 발생하는 이유는 IAM 액세스 키가 예상하지 못한 위치에 있거나, 올바로 구성되지 않았거나, 삭제되거나 만료되었기 때문입니다. 사용된 액세스 키는 자격 증명 공급자의 순서 및 우선 순위에 따라 다릅니다. 자세한 내용은 구성 및 자격 증명 우선 순위를 참조하십시오.

다음 해결 방법에서는 Linux 기반 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 잘못된 액세스 키 때문에 오류가 발생합니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

이 오류를 해결하려면 사용자 자격 증명 위치를 찾아서 액세스 키가 유효한지 확인하고, 그런 다음 액세스 키를 업데이트 또는 교체하십시오.

사용자 자격 증명 위치 찾기

EC2 인스턴스가 사용한 IAM 액세스 키를 가져오려면 get-caller-identity AWS CLI 명령을 실행합니다.

aws sts get-caller-identity --debug

출력 예시:

2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: sso
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials

앞의 출력 예시에서 Amazon EC2 인스턴스가 사용한 액세스 키는 ~/.aws/credentials 파일 안에 있습니다.

참고: .aws/credentials 파일에 IAM 엔터티의 자격 증명 세부 정보가 포함되어 있습니다. 액세스 키를 관리할 때는 IAM의 보안 모범 사례를 따르는지 확인하십시오.

액세스 키가 유효한지 확인

액세스 키가 위치 및 API 호출 작업에 대해 유효한지 확인하려면 다음 단계를 완료하십시오.

  1. Amazon EC2 인스턴스가 사용하는 액세스 키가 무엇인지 확인하려면 다음 명령을 실행합니다.

    cd ~/.aws
    cat credentials

    출력 예시:

    [default]
    aws_access_key_id=AKIAIOSFODNN7EXAMPLE
    aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  2. 액세스 키 권한이 유효한지 확인하려면 AWS Management Console 또는 AWS CLI를 사용합니다.

액세스 키 업데이트 또는 교체

액세스 키가 만료되었거나 삭제된 경우, 액세스 키를 업데이트하십시오.

AWS CLI와 함께 이름이 지정된 프로파일을 사용하는 경우, aws_access_key_idaws_session_token 설정의 값이 올바른지 확인합니다. 프로파일 설정은 ./aws/credentials 또는 ./aws/config 파일에 저장됩니다.

액세스 키가 유효하지 않은 환경 변수에 저장된 경우, 다음 명령을 실행하여 제거합니다.

unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

프로파일 설정을 업데이트한 경우, 환경 변수를 재설정해야 합니다.

액세스 키를 업데이트 또는 교체한 이후, 자격 증명이 유효한지 확인하려면 다음 get-caller-identity AWS CLI 명령을 실행합니다.

aws sts get-caller-identity --debug

출력 예시:

2024-06-04 12:46:07,167 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env
2024-06-04 12:46:07,167 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: sso
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: custom-process
2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: config-file
2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: ec2-credentials-file
2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: boto-config
2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: container-role
2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: iam-role
2024-06-04 12:46:07,177 - MainThread - botocore.credentials - DEBUG - Found credentials from IAM Role: ec2_Role

앞의 출력 예시에서는 더 높은 우선 순위로 저장된 다른 자격 증명이 없기 때문에 인스턴스가 Amazon EC2 인스턴스 프로파일 자격 증명을 사용합니다.

임시 보안 자격 증명을 사용해 ExpiredToken 오류 해결

참고: 액세스 키와 같은 장기 보안 자격 증명 대신 임시 보안 자격 증명을 사용하는 것이 좋습니다. AWS 계정의 보안 프로비저닝에 관한 자세한 내용은 Security considerations(보안 고려 사항)를 참조하십시오.

임시 보안 자격 증명은 지정된 기간이 지나면 만료되며 원래 만료 시간을 넘겨 연장할 수 없습니다. 만료된 자격 증명을 사용하면 ExpiredToken 오류가 표시됩니다.

이 오류를 해결하려면 새 임시 자격 증명을 요청해야 합니다. 원래 임시 자격 증명을 얻는 데 GetSessionToken을 사용한 경우, get-session-token AWS CLI 명령을 실행해 새 자격 증명을 요청하십시오.

aws sts get-session-token \
    --duration-seconds 3600

참고: 3600을 원하는 세션 지속 시간(초 단위)으로 바꾸십시오. 최솟값은 900초이고, 최댓값은 129,600초입니다.

GetSessionToken,을 사용하는 방법에 관한 코드 예시는 Use GetSessionToken with an AWS SDK or CLI(AWS SDK 또는 CLI와 함께 GetSessionToken 사용)를 참조하십시오.

관련 정보

Amazon EC2 인스턴스가 역할 자격 증명 대신 IAM 사용자 자격 증명을 사용하는 이유는 무엇입니까?

일부 리전에서 ‘AWS was not able to validate the provided access credentials’라는 IAM 오류를 해결하려면 어떻게 해야 합니까?

AWS 리전의 AWS STS 관리

AWS 공식업데이트됨 5달 전
1 댓글

This article was reviewed and updated on 2026-04-02.

전문가

답글을 게시함 2시간 전