티스토리 뷰

" unable to sign request without credentials set "

 

최근, AWS Cloud9을 통해 배포를 하면서 위와 같은 에러 이슈로 인해 배포가 안되는 사례가 있어 해결법에 대해 공유하고자 합니다.

 

 

Ruby on Jets에서는 credentials에 적인 AWS ID와 Secret Key 정보를 토대로 자동으로 Region 판별 및 자동으로 Jets 프로젝트를 Deploy 하는 개념입니다.

 

해당 원인은 위 사진 속 메세지에 언급된 것과 같이  ~/.aws  폴더에  credentials  파일이 없어서 발생하는 원인입니다.

 

원래 정상적으로는 AWS Cloud9에서 자동으로 Credentials 파일이 생성 및 설정이됩니다.

credentials 파일에는 원래 아래와같이 AWS IDSecret Key가 적혀있습니다.

 

결국은 Credentials 파일이 누락되었다는 건데, Credentials 누락을 해결하기 위해 수동으로 credential 생성 및 자격인증 정보 작성법에 대해 알아보겠습니다.

 

 

  •  Chapter 1  AWS 자격증명 계정 생성

AWS API 정보

AWS 자격증명 계정을 통해 후에 생성할 계정의 API Key와 Secret Key를 통해 AWS 서비스를 제어할 수 있습니다.

Ruby on Jets는 위 API 계정 정보를 통해 AWS를 서비스를 제어하면서 자동으로 AWS Lambda 프로젝트를 배포하는 개념이라고 보면 됩니다.

 

1. AWS Console 페이지에서 상단에 보이면 닉네임이 보입니다.

닉네임을 클릭 후, 내 보안자격 증명 을 클릭합니다.

 

2. 좌측메뉴에 보이는 사용자 를 클릭 후,  사용자 추가  버튼을 클릭해주세요.

 

3. AWS의 API Key 정보를 가질 사용자를 등록하는 단계입니다.

사용자 이름은 자유롭게, 액세스 유형프로그래밍 방식 엑세스를 체크 후,  다음: 권한  버튼을 클릭해주세요. 

 

3. 사용자에 대한 AWS 서비스 사용에 대한 제어권한을 설정하는 단계입니다.

 ↳ 모든 AWS 서비스를 이용하게 된다면 후에 보안취약점 문제가 생길 수 있습니다.)

 ↳ 만약 Github에 모르고 AWS API Key 정보를 유출했는데, 해커가 의도적으로 AWS의 모든 서비스를 이용해버리게 된다면.... (과금폭탄;;)

 

그룹에 사용자 추가 를 클릭 후,  그룹 생성  버튼을 클릭해주세요.

 

4. 그룹은 AWS 서비스를 이용할 수 있는 권한에 대한 범위를 설정하는 곳입니다. (사용자가 그룹에 귀속되어있다고 보면 됩니다.)

 

그룹에 대한 이름은 자유롭게, 그룹에 귀속시킬 정책은 아래와 같이 추가해주세요.

  1. AWSLambdaFullAccess

  2. IAMFullAccess

  3. AmazonS3FullAccess

  4. AmazonDynamoDBFullAccess

  5. CloudWatchLogsFullAccess

  6. AmazonAPIGatewayAdministrator

  7. AmazonRoute53FullAccess

  8. CloudWatchEventsFullAccess

  9. AWSCloudFormationFullAccess

 

위에 언급된 정책들이 Ruby on Jets가 자동으로 AWS Lambda에 배포하면서 사용하는 서비스라고 보면 됩니다.

 부록  Minimal Deploy IAM Policy

 

 

5. 아래 사진과 같이 그룹에 추가된 AWS 서비스 정책이 동일하게 잘 등록되었는지 확인 후,  다음: 태그  버튼을 클릭합니다.

 

6. 태그는 별도로 추가할게 없어서 SKIP하겠습니다.

 다음: 검토  버튼을 클릭해주세요.

 

7. 정보가 맞게 등록되었는지 확인하고, 정보가 맞다면  사용자 만들기  버튼을 클릭해주세요.

 

8. 이제 사용자 및 해당 사용자 접근을 위한 API Access Key ID와 Secret Key가 발급되었습니다. 

 

위의 Key 정보를 메모장 프로그램 등에 에 임시로 복사/붙여넣기 해주세요.

 주의1  위에 보이는 Key ID와 Access Secret Key 정보는 절대 외부에 노출되선 안됩니다. 해당 API Key를 통해 무단으로 AWS 서비스를 이용할 수 있습니다.

 주의2  Access Secret Key 정보는 위 페이지에서 벗어나게 되면 다시 확인이 힘듭니다.

이전에 발급받은 API Key 정보에 대해 재확인은 힘들지만 재발급은 가능합니다.

대신 재발급을 받을 시, 이전의 API 키 정보는 삭제 및 재발급 받은 Key로 재설정을 해주세요.

 

 

  •  Chapter 2  Cloud9 : credentials 파일 생성 및 설정

 Chapter 1  에서 발급받은 API Key를 기반으로 Cloud9에 등록해보겠습니다.

 

1. AWS Cloud9 터미널에 다음 명령어를 이동해서 디렉터리를 이동해주세요.

cd ~/.aws

 

2. credentials 파일 생성 및 에디터모드로 전환합니다.

vi credentials

 

3. vi Editor에 아래 내용을 입력해주세요.

그리고 vi editor을 저장하고 나갑니다.

 1) 키보드에서  Shift+:  키를 누릅니다.

 2) 맨 하단에  :  와 함께 입력창이 나오는데 다음 내용을 입력하고 엔터를 해주세요. 

 

4. Ruby on Jets 프로젝트로 돌아갑니다.

# cd /home/ubuntu/environment/[Ruby on Jets 프로젝트]

cd /home/ubuntu/environment/kcm

 

5. 이제 배포를 해보세요!

jets deploy production

 

 

 

  • 자료 참고

1. Ruby on Jets 포럼

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함