AWS Managed Apache Flink - S3 접근 시 발생하는 com.amazonaws.SdkClientException 장애 대응

김재민·2024년 9월 24일

flink

목록 보기
11/13
post-thumbnail

Spec


  • Python: 3.11
  • Apache Flink: 1.19.0 (Pyflink 사용)

Background


Pyflink 로 개발한 앱을 로컬 환경에서 실행 시켰을 때 com.amazonaws.SdkClientException 장애가 발생 하였다.


장애 메시지


Caused by: com.amazonaws.SdkClientException: Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY))
	at com.amazonaws.auth.EnvironmentVariableCredentialsProvider.getCredentials(EnvironmentVariableCredentialsProvider.java:49) ~[flink-s3-fs-hadoop-1.19.0.jar:1.19.0]
	at org.apache.hadoop.fs.s3a.AWSCredentialProviderList.getCredentials(AWSCredentialProviderList.java:177) ~[flink-s3-fs-hadoop-1.19.0.jar:1.19.0]
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1269) ~[flink-s3-fs-hadoop-1.19.0.jar:1.19.0]
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.runBeforeRequestHandlers(AmazonHttpClient.java:845) ~[flink-s3-fs-hadoop-1.19.0.jar:1.19.0]
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:794) ~[flink-s3-fs-hadoop-1.19.0.jar:1.19.0]

장애 원인


AWS S3 에 접근하기 위한 인증 권한이 없기 때문에 발생한 장애이다.


장애 대응 방법


방법1. AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 환경변수 등록

  • 아래와 같이 환경변수를 등록한 후 다시 코드 실행할 경우 인증 권한이 부여 된다.
$ export AWS_ACCESS_KEY_ID="my-access-key"
$ export AWS_SECRET_ACCESS_KEY="my-secret-key"

방법2. config.yaml 파일에 AWS S3 인증 정보 추가

  • 아래와 같이 PYFLINK_HOME/conf 경로에서 config.yaml 파일을 편집하여 s3 접근을 위한 인증 정보를 기입 하면 된다.
# PYFLINK_HOME 경로를 모른다면 아래 명령어로 경로 탐색하면 된다.
$ python3 -c "import pyflink;import os;print(os.path.dirname(os.path.abspath(pyflink.__file__)))"
$ export PYFLINK_HOME=$(python3 -c "import pyflink;import os;print(os.path.dirname(os.path.abspath(pyflink.__file__)))")

$ vim $PYFLINK_HOME/conf/config.yaml
>> 
s3.access-key: your-access-key
s3.secret-key: your-secret-key
profile
안녕하세요. 데이터 엔지니어 김재민 입니다.

0개의 댓글