0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linkbal(リンクバル)Advent Calendar 2023

Day 18

AWS CopilotでARMのFargateを使う場合にPipelineで設定が必要なこと

Last updated at Posted at 2023-12-23

この記事は リンクバルアドベントカレンダー2023 の18日目の記事です。

3日連続AWS Copilotの記事です!

16日

17日

はじめに

コスト削減やサステナビリティで電気代削減のため?に、AWS CopilotのFargateのアーキテクチャをARMにしたい方、いいですね!

しかし、Serviceの manifest.ymlplatform: linux/arm64 にするだけではだめです。
より正確には、Pipelineを使う場合はだめです。

CopilotのPipelineは、自動でARMに対応してくれるなんてことはありません(v1.28くらいの時点では)。

対応が必要なこと

以下の2つが必要です。

  1. pipelineの manifest.yml で、CodeBuildのイメージにARMのイメージを指定する
  2. copilot/pipelines/xxx/buildspec.yml のcopilotコマンドのインストールは、ARM版のURLを指定する

pipelineの manifest.yml で、CodeBuildのイメージにARMのイメージを指定する

platform: linux/arm64 を指定した場合、ARMアーキテクチャでDocker buildする必要があります。
※それ以外の方法もあります。Docker Buildxを使うなど。

pipelineの manifest.ymlbuild.image という項目を設定できます。

公式ドキュメント

v1.32.1時点では、次のように書かれています。

CodeBuild のビルドプロジェクトで利用する Docker イメージの URI。aws/codebuild/amazonlinux2-x86_64-standard:4.0 がデフォルトで利用されます。

x86_64 だと!?

ここがハマりどころで、この項目に気づかない限り、pipelienのbuild stageが一生失敗します。

次のように manifest.yml を編集しましょう。

copilot/pipelines/xxx/manifest.yml
# 略
build:
  image: aws/codebuild/amazonlinux2-aarch64-standard:3.0 # ここでARMのイメージを指定する。バージョンは必要なランタイムに応じて変えてください。
# 略

指定できる値はこちらをご覧ください。

copilot/pipelines/xxx/buildspec.yml のcopilotコマンドのインストールは、ARM版のURLを指定する

CodeBuildをARMにしたら、そこで動くバイナリもARM版にする必要があります。

copilot/pipelines/xxx/buildspec.yml は、自動生成のものだとx86版のcopilotコマンドをインストールするようになっています。
そこを、ARM版に変えましょう。

buildspec.yml
# 略
phases:
  install:
    runtime-versions:
      # 略
    commands:
      - echo "cd into $CODEBUILD_SRC_DIR"
      - cd $CODEBUILD_SRC_DIR
      # Download the copilot linux binary.
      
      - wget -q https://ecs-cli-v2-release.s3.amazonaws.com/copilot-linux-arm64 -O copilot-linux
      - chmod +x ./copilot-linux

ここまでやれば、CopilotのPipelineが成功します!

おわりに

おわり

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?