Terraform-aws-github-runner: dev-usw2-scale-up μ‹€νŒ¨: "SQS 이벀트 처리 μ‹€νŒ¨" "PEM 루틴: get_name: Sign.sign에 μ‹œμž‘ 라인 μ—†μŒ"

에 λ§Œλ“  2020λ…„ 07μ›” 28일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: philips-labs/terraform-aws-github-runner

μš”μ•½

dev-usw2-scale-up μ‹€ν–‰ κ²°κ³Ό: μ‹€νŒ¨

μž¬ν˜„ 단계

이 리포지토리 및 https://040code.github.io/2020/05/25/scaling-selfhosted-action-runners 의 λ¬Έμ„œ/README에 따라 ν•„μˆ˜ github 앱을 μ‚¬μš©ν•˜μ—¬ κ΅¬μ„±λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 컀밋을 톡해 트리거

ν˜„μž¬ 버그 λ™μž‘μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?

였λ₯˜ 였λ₯˜: 였λ₯˜: 0909006C :PEM 루틴: get_name : Sign.signμ—μ„œ μ‹œμž‘ 라인 μ—†μŒ 였λ₯˜ 호좜 였λ₯˜
(μ•„λž˜ 전체 였λ₯˜ 좔적/아웃 μ°Έμ‘°)

μ˜ˆμƒλ˜λŠ” μ˜¬λ°”λ₯Έ λ™μž‘μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?

κ΅¬μ„±λœ 리포지토리에 λŒ€ν•œ μ»€λ°‹μœΌλ‘œ 인해 λžŒλ‹€ ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜κ³  AWS EC2 슀팟 μΈμŠ€ν„΄μŠ€μ˜ ν•„μˆ˜ ν™•μž₯ λ˜λŠ” 배포가 λ°œμƒν•©λ‹ˆλ‹€.

κ΄€λ ¨ 둜그 및/λ˜λŠ” μŠ€ν¬λ¦°μƒ·

κ°μ‹œν•˜λ„λ‘ κ΅¬μ„±λœ github μ•±μœΌλ‘œ κ΅¬μ„±λœ github repo에 컀밋할 λ•Œ κ°€μž₯ 졜근의 μ‹€νŒ¨/였λ₯˜
CloudWatch: CloudWatch Logs: 둜그 그룹: /aws/lambda/dev-usw2-scale-up
μ—¬κΈ° github μš”μ§€μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

gist-file-aws-lambda-dev-usw2-scale-up-error

κ°€λŠ₯ν•œ μˆ˜μ • 사항

μ–Έλœ» 보면 μΈμ¦μ„œ/ν‚€ 였λ₯˜μ™€ 관련이 μžˆλŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆκΉŒ?

λˆ„κ°€ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

확인 및 ν•΄κ²° μ œμ•ˆ μš”μ²­

기타 링크/μ°Έμ‘°

κ°μ‚¬ν•©λ‹ˆλ‹€

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@compiaffe 감사
이제 λžŒλ‹€/cloudwatch λ‘œκ·Έμ— 더 이상 였λ₯˜κ°€ μ—†μœΌλ©° S3 버킷에 μžˆλŠ” action-runners.zip νŒŒμΌμ„ ν™•μΈν•˜κ³  READMEλ₯Ό λ”°λ₯΄κ³  슀팟 μΈμŠ€ν„΄μŠ€ 생성을 μ œμ™Έν•˜κ³  μ˜ˆμƒλ˜λŠ” κΈ°λŠ₯을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰ 문제인 것 κ°™μŠ΅λ‹ˆλ‹€.

μ°Έμ‘°: μŠ€μΌ€μΌλ§-μ…€ν”„ν˜ΈμŠ€νŠΈ-μ•‘μ…˜-λŸ¬λ„ˆ#νΌνŒ…-올-νˆ¬κ²Œλ”

λŸ¬λ„ˆλ₯Ό λΉŒλ“œν•˜λŠ” 경우 μ‹œμž‘ν•˜κ±°λ‚˜ λ“±λ‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 당신이 ν•  수 μžˆλŠ” μ΅œμ„ μ€ κ·Έ 흔적을 λ”°λΌκ°€λŠ” κ²ƒμž…λ‹ˆλ‹€. GitHub μ•±μ—λŠ” μ›Ήν›…μœΌλ‘œ μ „μ†‘λœ 이벀트λ₯Ό λ³Ό 수 μžˆλŠ” κ³ κΈ‰ μ„€μ • νŽ˜μ΄μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λ²€νŠΈκ°€ μˆ˜λ½λ˜μ§€ μ•ŠμœΌλ©΄ 끝점과 비밀을 λ‹€μ‹œ ν™•μΈν•˜μ‹­μ‹œμ˜€. λ‹€μŒμœΌλ‘œ 웹훅에 λŒ€ν•œ 둜그λ₯Ό ν™•μΈν•˜κ³  ν΄λΌμš°λ“œ μ›ŒμΉ˜μ—μ„œ λžŒλ‹€λ₯Ό ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ EC2 μ‚¬μš©μž 데이터 λ‘œκΉ…μ„ 검사할 수 μžˆμŠ΅λ‹ˆλ‹€. SSM을 ν†΅ν•œ μ•‘μ„ΈμŠ€(MP: sshμ—¬μ•Ό ν•©λ‹ˆκΉŒ?)λŠ” 기본적으둜 ν™œμ„±ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μΈμŠ€ν„΄μŠ€μ— 연결을 μ„ νƒν•˜κ³  /var/log/user_data.log 둜그λ₯Ό κ²€μ‚¬ν•˜λ©΄ λ©λ‹ˆλ‹€.

였λ₯˜ ν¬μΈνŠΈλŠ” λžŒλ‹€μ™€ ν΄λΌμš°λ“œμ›ŒμΉ˜ 이후이고 λ‹€μŒ 문제 ν•΄κ²° λ‹¨κ³„λŠ” EC2 μ‚¬μš©μž 데이터(둜그)λ₯Ό κ²€μ‚¬ν•˜λŠ” κ²ƒμ΄μ§€λ§Œ 슀팟 μΈμŠ€ν„΄μŠ€κ°€ λ°°ν¬λ˜μ§€ μ•Šμ„ λ•Œ μΈμŠ€ν„΄μŠ€κ°€ μ—†κΈ° λ•Œλ¬Έμ— 이것은 μ•½κ°„ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

도와 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

λͺ¨λ“  7 λŒ“κΈ€

PEM ν‚€ 없이 base64 인코딩을 μˆ˜ν–‰ν•œ κ²½μš°μ—λ„ 이와 λ˜‘κ°™μ€ 문제λ₯Ό λ³΄μ•˜μŠ΅λ‹ˆλ‹€.
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

.pem 파일의 전체 λ‚΄μš©μ„ κ°€μ Έμ™€μ„œ base64둜 인코딩해야 ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

@compiaffe 감사

README/docs에 λ‹€μŒκ³Ό 같은 λ‚΄μš©μ΄ 있으면 ν™•μ‹€νžˆ 도움이 λ©λ‹ˆλ‹€.

  • GITHUB_KEY=$(base64 ./myapp-aws-github-runner.2020-07-29.private-key.pem) ; cat $GITHUB_KEY > encoded_key.out now use this entire file as the github_app_key_base64 value

μž¬λ°°ν¬ν–ˆλŠ”λ° 이제 λžŒλ‹€ ν™•μž₯ κΈ°λŠ₯μ—μ„œ λ‹€μŒκ³Ό 같은 SQS 였λ₯˜κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€. '이전에 λ³Έ 적이 μžˆλŠ”μ§€ κΆκΈˆν•˜μ‹­λ‹ˆκΉŒ?

2020-07-29T12:38:43.476-07:00 | 2020-07-29T19:38:43.476Z    e67a6201-6e39-50c8-94f7-359abc4954cd    ERROR   Invoke Error    {     "errorType": "Error",     "errorMessage": "Failed handling SQS event",     "stack": [         "Error: Failed handling SQS event",         "    at _homogeneousError (/var/runtime/CallbackContext.js:12:12)",         "    at postError (/var/runtime/CallbackContext.js:29:54)",         "    at callback (/var/runtime/CallbackContext.js:41:7)",         "    at /var/runtime/CallbackContext.js:104:16",         "    at /var/task/index.js:17333:16",         "    at Generator.throw (<anonymous>)",         "    at rejected (/var/task/index.js:17315:65)",         "    at processTicksAndRejections (internal/process/task_queues.js:97:5)"     ] }

κ°μ‚¬ν•©λ‹ˆλ‹€.

@cmcconnell1 예, ν•œ 번 λ³Έ 적이 μžˆμŠ΅λ‹ˆλ‹€. 이전에 둜그 ν•­λͺ©μ„ ν™•μΈν•˜λ©΄ Github 끝점에 λŒ€ν•œ API 호좜이 403으둜 μ‘λ‹΅λœ κ²ƒμœΌλ‘œ ν‘œμ‹œλ  수 μžˆμŠ΅λ‹ˆλ‹€.

Github 앱에 Actions, Checks 및 Self-hosted Runners에 λŒ€ν•œ κΆŒν•œμ„ λΆ€μ—¬ν•΄μ•Ό ν–ˆμ§€λ§Œ 관리에 λŒ€ν•œ μ•‘μ„ΈμŠ€ κΆŒν•œμ„ λΆ€μ—¬ν•  ν•„μš”λŠ” μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

쑰직 λ˜λŠ” μ €μž₯μ†Œμ˜ μ„€μΉ˜λ‘œ μ΄λ™ν•˜μ—¬ μΆ”κ°€/λ‹€λ₯Έ κΆŒν•œ μš”μ²­μ„ ν—ˆμš©ν•˜λŠ” 것을 μžŠμ§€ λ§ˆμ‹­μ‹œμ˜€.

@compiaffe 감사
이제 λžŒλ‹€/cloudwatch λ‘œκ·Έμ— 더 이상 였λ₯˜κ°€ μ—†μœΌλ©° S3 버킷에 μžˆλŠ” action-runners.zip νŒŒμΌμ„ ν™•μΈν•˜κ³  READMEλ₯Ό λ”°λ₯΄κ³  슀팟 μΈμŠ€ν„΄μŠ€ 생성을 μ œμ™Έν•˜κ³  μ˜ˆμƒλ˜λŠ” κΈ°λŠ₯을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰ 문제인 것 κ°™μŠ΅λ‹ˆλ‹€.

μ°Έμ‘°: μŠ€μΌ€μΌλ§-μ…€ν”„ν˜ΈμŠ€νŠΈ-μ•‘μ…˜-λŸ¬λ„ˆ#νΌνŒ…-올-νˆ¬κ²Œλ”

λŸ¬λ„ˆλ₯Ό λΉŒλ“œν•˜λŠ” 경우 μ‹œμž‘ν•˜κ±°λ‚˜ λ“±λ‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 당신이 ν•  수 μžˆλŠ” μ΅œμ„ μ€ κ·Έ 흔적을 λ”°λΌκ°€λŠ” κ²ƒμž…λ‹ˆλ‹€. GitHub μ•±μ—λŠ” μ›Ήν›…μœΌλ‘œ μ „μ†‘λœ 이벀트λ₯Ό λ³Ό 수 μžˆλŠ” κ³ κΈ‰ μ„€μ • νŽ˜μ΄μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λ²€νŠΈκ°€ μˆ˜λ½λ˜μ§€ μ•ŠμœΌλ©΄ 끝점과 비밀을 λ‹€μ‹œ ν™•μΈν•˜μ‹­μ‹œμ˜€. λ‹€μŒμœΌλ‘œ 웹훅에 λŒ€ν•œ 둜그λ₯Ό ν™•μΈν•˜κ³  ν΄λΌμš°λ“œ μ›ŒμΉ˜μ—μ„œ λžŒλ‹€λ₯Ό ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ EC2 μ‚¬μš©μž 데이터 λ‘œκΉ…μ„ 검사할 수 μžˆμŠ΅λ‹ˆλ‹€. SSM을 ν†΅ν•œ μ•‘μ„ΈμŠ€(MP: sshμ—¬μ•Ό ν•©λ‹ˆκΉŒ?)λŠ” 기본적으둜 ν™œμ„±ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μΈμŠ€ν„΄μŠ€μ— 연결을 μ„ νƒν•˜κ³  /var/log/user_data.log 둜그λ₯Ό κ²€μ‚¬ν•˜λ©΄ λ©λ‹ˆλ‹€.

였λ₯˜ ν¬μΈνŠΈλŠ” λžŒλ‹€μ™€ ν΄λΌμš°λ“œμ›ŒμΉ˜ 이후이고 λ‹€μŒ 문제 ν•΄κ²° λ‹¨κ³„λŠ” EC2 μ‚¬μš©μž 데이터(둜그)λ₯Ό κ²€μ‚¬ν•˜λŠ” κ²ƒμ΄μ§€λ§Œ 슀팟 μΈμŠ€ν„΄μŠ€κ°€ λ°°ν¬λ˜μ§€ μ•Šμ„ λ•Œ μΈμŠ€ν„΄μŠ€κ°€ μ—†κΈ° λ•Œλ¬Έμ— 이것은 μ•½κ°„ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

도와 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

μ—¬μ „νžˆ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

@npalm μš°λ¦¬λŠ” 이것을 https://github.com/philips-labs/terraform-aws-github-runner/issues/104 와 λ™μΌν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” νœ΄κ°€ μ€‘μ΄μ—ˆκ³  ν…ŒμŠ€νŠΈλ₯Ό μ‹œμž‘ν•  0.3.0 및 0.4.0 νƒœκ·Έ 버전이 μžˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€.

λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 개발 λΆ„κΈ°/0.0.5λ₯Ό μ‚¬μš©ν•˜κ³  base64 인코딩(BEGIN 및 END λΉ„νŠΈ 포함)을 μˆ˜ν–‰ν•˜κ³  μ•„λž˜μ™€ 같이 λ³€μˆ˜.tf νŒŒμΌμ— 값을 μ €μž₯ν–ˆμ§€λ§Œ μ—¬μ „νžˆ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. . (였λ₯˜: 였λ₯˜: 0909006C :PEM 루틴: get_name: Sign.sign μ—μ„œ μ‹œμž‘ 라인 μ—†μŒ(internal/crypto/sig.js:105:29)) 및 λ°”λ‘œ κ·Έ 직후 ERROR Invoke Error {"errorType":"Error"," errorMessage":"SQS 이벀트 처리 μ‹€νŒ¨"

image

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰