【AWS】CodeDeploy를 구현했을 때의 에러와 그 해결까지

소개



CodeDeploy에서 배포 자동화를 구현하려고 할 때 몇 가지 오류가 발생하여 기록으로 남습니다.
거의 범 미스 같은 느낌입니다만, 참고가 되면 다행입니다.

조건


macOS: "11.2.3 Big Sur"

php artisan -V
# > Laravel Framework 6.20.30

php -v
# > PHP 8.0.8 

nginx -v
# > nginx version: nginx/1.12.2

git --version
# > git version 2.32.0

1. DownloadBundle에서 오류





The specified key does not exist.
(訳)指定されたキーは存在しません。

해결



이것은 단순히 .circleci/config.yml 디렉토리에 s3へのアップロード 의 기재를 하지 않았기 때문이었습니다.

config.yml
   // 省略
      - run:
          name: upload artifacts to s3
          command: aws s3 cp lantern.zip s3://${AWS_S3_BUCKET_NAME}
   // 省略

참고



2. AfterInstall에서 오류 : ①





Script does not exist at specified location
(訳)スクリプトが指定された場所に存在しません

해결



원인은, AfterInstall 이벤트로 사용되고 있던 쉘 스크립트가 반영되어 있지 않은 것이었습니다.
scripts/after_install.sh 를 추가했지만 이것이 프로덕션 환경에 반영되지 않았습니다.

그래서 프로덕션 환경에 마찬가지로 디렉토리와 파일을 작성.
# ① scriptsディレクトリ作成
$ mkdir scripts

# ② scriptsディレクトリ内に移動して、after_install.shファイルを作成
[scripts] $ touch after_install.sh

# ③ ファイルの中を編集
[scripts] $ vi after_install.sh

다음은 after_install.sh 파일의 설명 내용입니다.

after_install.sh
#!/bin/bash

set -eux

cd ~/Lantern/lantern
php artisan migrate --force
php artisan config:cache

좋아, 이것으로 갈 수 있을 것이다! 생각하고 다시 배포. . .

3. AfterInstall에서 오류 : ②




Could not open input file: artisan
(訳)入力ファイルを開くことができませんでした:artisan
artisan 명령을 사용할 수 없다는 것은 지정하고 있는 디렉토리가 다른 것일까...라고 생각했으므로 확인.
방안의 정, 디렉토리를 지정하고 있는 곳이 달랐기 때문에 이하와 같이 수정.

after_install.sh
- cd ~/Lantern/lantern
+ cd ~/Lantern/lantern-ssh-deploy
  php artisan migrate --force
  php artisan config:cache

좋아, 이것으로 갈 수 있을 것이다! !



무사히 배포 완료!

결론



다시 되돌아 보면 디렉토리의 지정 실수가 깜짝 놀랐습니다 ....
조금은 AWS와 친해진 것 같습니다.

참고

좋은 웹페이지 즐겨찾기