GiitHub Action Token ID를 사용한 AWS CDK
7238 단어 AWSGitHubGitHub Actionstech
GiitHub Secrets에 묻혀 있는 꺼림칙한 Access Key를 버리려 했다.
잘한 게 이거였어↓
GiitHub Action의 결과는 바로 이겁니다. ↓.
모티프
CDK를 사용하면...
"이렇게 하면 lambda 디자인을 진행할 수 있습니다."
"이렇게 하면 s3 depro를 진행할 수 있습니다."
이렇게 하면 ECR DEPRO를 수행할 수 있습니다.
내 생각에는 이렇다.
그러다 보니 기릿허브 액션스로 이동하려면 못 참겠어.
방법
AWS 편
CDK로 지저분하게 썼어요.
하는 일과 원문의 CFn는 기본적으로 변화가 없다.
GiitHub Action 편
이런 느낌으로 움직일 것 같아서요.
jobs:
invoke:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- run: sleep 5 # there's still a race condition for now
- name: Configure AWS
run: |
export AWS_ROLE_ARN=arn:aws:iam::407172421073:role/ExampleGithubRole
export AWS_WEB_IDENTITY_TOKEN_FILE=/tmp/awscreds
export AWS_REGION=ap-northeast-1
echo AWS_WEB_IDENTITY_TOKEN_FILE=$AWS_WEB_IDENTITY_TOKEN_FILE >> $GITHUB_ENV
echo AWS_ROLE_ARN=$AWS_ROLE_ARN >> $GITHUB_ENV
echo AWS_REGION=$AWS_REGION >> $GITHUB_ENV
curl -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" "$ACTIONS_ID_TOKEN_REQUEST_URL&audience=sigstore" | jq -r '.value' > $AWS_WEB_IDENTITY_TOKEN_FILE
- uses: actions/checkout@v2
- run: yarn
- run: yarn cdk deploy
기사와는 달리AWS_DEFAULT_REGION
가 아니라 사용AWS_REGION
이다.aws-Cdk에서 AWS SDK를 사용했기 때문에 aws cli가 조금 사용하는 환경 변수와는 다른 것 같습니다.(사실 푹 빠졌어요)
총결산
CodeCov 이벤트로 인해 GiitHub Action의 환경 변수에서 다양한 인증 정보 및 개인 정보가 유출된 이벤트 나는 기억이 새롭다고 생각한다.
이런 비극이 되풀이되지 않도록 이번 지아이허브의 신apede(공식 발표는 아니지만) 영구적인 신용을 쫓아내자.
쓴 말
나는 한순간에 완성할 수 있을 것이라고 생각했지만 CLI와 SDK가 레지온에 주는 환경 변수의 이름이 다르다는 것을 몰라서 무한히 시간을 소모했다...
일단 이거 나와.
Error: Need to perform AWS calls for account XXXXXXXXXXXX, but no credentials have been configured
--varbose
이후에 실행하면 리본을 설정하지 않은 오류가 발생합니다.Unable to determine the default AWS account: Error [ConfigError]: Missing region in config
at Request.optInRegionalEndpoint (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/services/sts.js:75:30)
at Request.callListeners (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/state_machine.js:14:12)
at Request.runTo (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/request.js:408:15)
at Request.send (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/request.js:372:10)
at features.constructor.makeUnauthenticatedRequest (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/service.js:230:31)
at features.constructor.assumeRoleWithWebIdentity (/home/runner/work/github-actions-id-sample/github-actions-id-sample/node_modules/aws-sdk/lib/services/sts.js:44:17) {
code: 'ConfigError',
time: 2021-09-16T12:02:44.650Z
}
오, SDK가 드디어 됐나요? Doc를 보면 설정된 환경 변수가 AWS_REGION
라는 것을 알 수 있습니다.위에서 말한 바와 같이 인류는 우여곡절이 많은 생물이기 때문에 나는 이미 코드를 읽었다.먼저 문서를 보여 주세요.아, 울었어.
Reference
이 문제에 관하여(GiitHub Action Token ID를 사용한 AWS CDK), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yamatatsu/articles/2021-09-17-github-actions-id-aws-cdk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)