1
0

CodeDeployでつまづいた件

Last updated at Posted at 2024-04-24

はじめに

Code PipelineからEC2にCodeDeployする際に、想定以上に手を取られました
起こった事象と対応方法をShareします

事象と対策

EC2のデプロイが途中で止まる

CodeBuildの設定をCodeBuild内のエディタで1行

go build -o xxxx main.go

としていると、CodeDeployが途中で止まり、5分でタイムアウトになりエラーとなります
その際のメッセージが、S3にアーティファクトを取りに行ったけど「S3へのアクセス権限がない」というものです
RoleやPolicyを確認しますが、特に不味そうなところはなく...

手を抜かずに、buildspec.ymlを作成し、そのArtifactsにビルド後のファイル名(xxxx)を記載したところ、解決しました

EC2にデプロイできない

デプロイ先に同名のファイルがあるとダメなようです
BeforInstallに、デプロイ先のファイルを削除するshellファイルを指定すれば大丈夫でした

appspec.ymlがないと怒られる

これは単純にCodeBuildのArtifactsに、appspec.ymlがないだけでした

参考までに、今回使ったbuildspec.ymlとappspec.ymlを載せておきます
(1部改変しています)

buildspec.yml
version: 0.2

phases:
  install:
    runtime-versions:
      golang: 1.21
  build:
    commands:
      - go build -o xxxx main.go
artifacts:
  files:
    - xxxx
    - appspec.yml
    - hooks/rm_xxxx.sh
appspec.yml
version: 0.0
os: linux
files:
  - source: /xxxx
    destination: /home/ec2-user/bin

hooks:
  BeforeInstall:
    - location: hooks/rm_xxxx.sh
      timeout: 5

以上、同じエラーで困っている方の参考になれば嬉しいです

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0