CDP 규칙 가이드

개발 환경 설정

AWS SSO 인증 / Bitbucket 접근 / AI 작업 시 참고사항

개발환경 설정

AWS SSO 인증 설정과 Bitbucket 저장소 접근 방법

AWS SSO 설정

GS Retail의 AWS 접근은 SSO(Single Sign-On) 방식을 사용합니다. 최초 1회 설정 후, 이후에는 로그인 명령어 한 줄로 인증이 완료됩니다.


최초 설정 (1회만)

📋 복사해서 붙여넣기

aws configure sso

아래 순서로 입력합니다.

SSO session name (Recommended): gsr_cdp          # 원하는 이름 (기억하기 쉬운 것)
SSO start URL [None]: {팀에서 제공하는 SSO URL 입력}
SSO region [None]: ap-northeast-2
SSO registration scopes [sso:account:access]: (Enter)

브라우저가 열리면 액세스 허용을 클릭합니다. 이후 터미널로 돌아와서:

Using the role name "gs-cdp-perm"
Default client Region [None]: ap-northeast-2
CLI default output format (json if not specified) [None]: json
Profile name [gs-cdp-perm-{account_id}]: gsr_cdp     # 원하는 프로필 이름

설정 확인

📋 복사해서 붙여넣기

cat ~/.aws/config

예상 결과:

[profile gsr_cdp]
sso_session = gsr_cdp
sso_account_id = {account_id}
sso_role_name = gs-cdp-perm
region = ap-northeast-2
output = json

[sso-session gsr_cdp]
sso_start_url = {SSO URL}
sso_region = ap-northeast-2
sso_registration_scopes = sso:account:access

로그인 (매번 사용 전)

SSO 토큰은 만료 기간이 있습니다. 작업 시작 전에 로그인합니다.

📋 복사해서 붙여넣기

aws sso login --profile gsr_cdp

로그인 확인

📋 복사해서 붙여넣기

aws sts get-caller-identity --profile gsr_cdp

예상 결과:

{
    "UserId": "...",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/gs-cdp-perm/..."
}

project/.env 설정

인증 정보는 코드나 yaml에 넣지 않고 .env 파일로 관리합니다.

📋 복사해서 붙여넣기

# project/.env
AWS_PROFILE=gsr_cdp          # aws configure sso에서 설정한 profile 이름
EXECUTOR_ID=hjsong            # 실험을 실제 실행하는 사람의 ID
⚠️ .env 파일은 절대 git에 커밋하지 마세요. .gitignore.env가 포함되어 있는지 확인하세요.
ℹ️ EXECUTOR_IDworker_id (model.yaml)가 다른 경우, run_manifest.yaml재현 실험으로 기록됩니다.

AWS SSO 토큰 만료 시 재로그인

작업 중 아래 에러가 발생하면 SSO 토큰이 만료된 것입니다.

TokenRetrievalError: Error when retrieving token from sso: Token has expired and refresh failed

📋 복사해서 붙여넣기

aws sso login --profile gsr_cdp

로그인 완료 후 작업을 이어가면 됩니다.


Bitbucket 인증 — gsr_ml_lab_cdp repo 클론

항목SSH 키 (권장)HTTP + PAT
초기 설정약간 복잡간단
만료 관리없음토큰 갱신 필요 (90일~1년)
여러 머신머신별 키 발급토큰 재발급 또는 공유
ℹ️ 회사 보안 정책에서 SSH를 허용하는 경우 SSH 키 방식을 권장합니다.

방법 A: SSH 키 설정 (권장)

1 SSH 키 생성

📋 복사해서 붙여넣기

# 기존 키 확인
ls -la ~/.ssh/

# Ed25519 키 생성 (없을 경우)
ssh-keygen -t ed25519 -C "your_email@gsretail.com" -f ~/.ssh/id_ed25519_gsr

2 SSH config 작성

📋 복사해서 붙여넣기

touch ~/.ssh/config
chmod 600 ~/.ssh/config

~/.ssh/config에 추가:

Host code.gsretail.com
    HostName code.gsretail.com
    User git
    IdentityFile ~/.ssh/id_ed25519_gsr
    UseKeychain yes
    AddKeysToAgent yes

📋 복사해서 붙여넣기

# SSH agent에 키 등록 (macOS Keychain에 저장)
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_gsr

3 공개키를 Bitbucket에 등록

📋 복사해서 붙여넣기

# 공개키 클립보드에 복사
pbcopy < ~/.ssh/id_ed25519_gsr.pub

Bitbucket 웹에서:

  1. 프로필 → Manage account → SSH keys
  2. Add key 클릭
  3. Label: 예) MacBook Pro - 작업용
  4. Key: 클립보드 붙여넣기 (ssh-ed25519 AAAA...로 시작)
  5. Add key 클릭

4 연결 테스트

📋 복사해서 붙여넣기

ssh -T git@code.gsretail.com

Authenticated to code.gsretail.com... 메시지가 나오면 성공.

5 SSH로 클론

⚠️ Bitbucket Server는 포트 7999를 사용합니다.

📋 복사해서 붙여넣기

git clone ssh://git@code.gsretail.com:7999/ds_lab/gsr_ml_lab_cdp.git

기존 HTTPS → SSH remote URL 변경

📋 복사해서 붙여넣기

cd gsr_ml_lab_cdp
git remote set-url origin ssh://git@code.gsretail.com:7999/ds_lab/gsr_ml_lab_cdp.git
git remote -v    # 확인

방법 B: HTTP + PAT (Personal Access Token)

SSH가 막혀있거나 정책상 PAT를 사용해야 하는 경우입니다.

1 PAT 발급

  1. 우측 상단 프로필 → Manage account
  2. 좌측 메뉴 → HTTP access tokens 또는 Personal access tokens
  3. Create token 클릭
  4. 설정: Token name: 예) mac-local-dev / Permissions: Repository Read + Repository Write
  5. Create → 토큰 문자열 즉시 복사 (한 번만 표시됨)
ℹ️ 메뉴 위치가 보이지 않으면 URL에 /plugins/servlet/access-tokens/manage를 직접 입력하세요.

2 macOS Keychain에 저장

📋 복사해서 붙여넣기

git config --global credential.helper osxkeychain

# 최초 clone 시도 → 프롬프트에서:
# Username: 본인 사번 또는 Bitbucket ID
# Password: 위에서 발급받은 PAT 토큰 (계정 비밀번호 아님!)
git clone https://code.gsretail.com/scm/ds_lab/gsr_ml_lab_cdp.git

잘못된 자격증명 삭제

📋 복사해서 붙여넣기

git credential-osxkeychain erase
host=code.gsretail.com
protocol=https
# Enter 두 번 입력

AI (Claude Code) + AWS SSO 작업 시 참고사항

잘못 답변했을 때 되돌리기

Claude Code에서 ! prefix로 명령어를 실행할 수 있고, 대화를 되돌리고 싶을 때:

/rewind

명령어 입력 후 restore 클릭 → 잘못 답변하기 직전 상태로 복귀합니다.

AI 작업 중 SSO 토큰 만료 시

아래 경고창이 뜨면:

TokenRetrievalError: Error when retrieving token from sso:
Token has expired and refresh failed

AWS SSO 로그인이 필요합니다. 터미널에서 직접 실행해주세요:
! aws sso login --profile gsr_cdp
로그인 완료 후 "계속" 이라고 답해주세요.

📋 Claude Code 입력창에 붙여넣기

! aws sso login --profile gsr_cdp

로그인 완료 후 "계속"이라고 입력하면 작업이 재개됩니다.


설정 완료 체크리스트

단계확인 방법
AWS SSO 초기 설정 완료cat ~/.aws/config
SSO 로그인 성공aws sts get-caller-identity --profile gsr_cdp
project/.envAWS_PROFILE, EXECUTOR_ID 설정cat project/.env
Bitbucket SSH 키 생성 및 등록ssh -T git@code.gsretail.com
gsr_ml_lab_cdp repo 클론 완료ls gsr_ml_lab_cdp/
.gitignore.env 포함 확인grep .env .gitignore
✅ 모든 항목이 완료됐다면 CDP 프레임워크를 사용할 준비가 된 것입니다!