Jenkins S3 정적호스팅 업로드 오류 (s3 인증 오류)

1 minute read

jenkins로 git에서 소스를 내려 받아 서버에서 빌드 후 AWS S3에 업로드하여 정적호스팅을 하려고 설정을 했다

그러다 다음과 같은 오류가 발생하였다

The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256

원인은 2버전의 인증을 허용하지 않는 리전에서 4버전의 인증을 이용하기 때문에 발생하는 오류라고 한다. (V4 인증 오류) *아래 링크 참고

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/API/sig-v4-authenticating-requests.html

Exception caught during task execution: A client error (InvalidRequest) occurred when calling the PutObjects operation: The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256

검색해보면 꽤 다양한 방법이 나오는데…
명령어를 사용해서 v4 정책을 default 로 설정하라는 내용이 많았다

$aws configure set default.s3.signature_version s3v4


그러나 불행히도, 나의 환경에서는 위의 방법으로 문제를 해결 할 수 없었다
그렇게 얼마간의 삽질을 거듭할 무렵… 나와 같은 문제로 고통받는 외국인의 글을 발견했다!

https://github.com/aws/aws-cli/issues/2432

문제가 발생한 이유가 aws cli를 리눅스 apt 패키지 관리자로 설치하였기 때문이라고 한다 (엥!? 정말??)

aws cli를 apt 패키지 관리자로 설치하게 되면 최신 버전으로 설치되지 않아서 인증관련 문제가 발생하는 것


즉, aws cli 를 pip3 로 설치해야 문제가 발생하지 않는다.

해결방법

aws cli 를 pip3 패키지로 (python 3.x) 설치해야 한다

먼저, ubunutu 에 pip3 를 설치해야 한다
설치 후 $pip3 --version 명령으로 확인한다

$sudo apt install python3-pip
$pip3 --version


pip 가 설치되면 aws 에서 안내하는 대로 awscli 를 설치하면 된다
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-install.html https://github.com/aws/aws-cli/blob/master/README.rst

$pip3 install awscli --upgrade --user


이후 다시 s3 버킷에 파일을 업로드하면 문제없이 업로드가 될 것이다

$aws s3 cp /home/jenkins/.jenkins/jobs/jenkins-s3-test/workspace/dist/ s3://jenkins-s3-test --recursive --grant read=uri=http://acs.amazonaws.com/groups/global/AllUsers

혹시 다른 권한 오류가 발생한다면

S3 버킷 정책에 GetObject, PutObject, DeleteObject 등의 내용이 잘 있는지 확인해 볼 것!

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::jenkins-s3-test/*"
        }
    ]
}

Leave a comment