EC2 Image Builderとは
AMI作成を自動化してくれるツール(パッケージインストール等をやってくれる)。
Developers.IO:EC2のイメージ作成を劇的に効率化するEC2 Image Builderが発表されました! #reinvent
Qiita:EC2 Image Builder を触ってみました。
パイプラインのアップデートできない
早速使ってみたのだが、
AMI作成用のパイプライン(Image pipelines)を作った後、コンソールを見てもパッケージ(ビルドコンポーネント)の追加方法が分からなかった。
後で追加したいパッケージが増えたらどうすんの?
正確に言うと、レシピのNew Versionは作れるのだが、パイプラインに反映できない(なんじゃこりゃ)。
パイプラインのアップデートできた
コンソールだけだとできなくて、AWS CLIだとできる事が判明1。
update-image-pipeline
get-image-pipeline
<手順>
-
まずはコンソールから、レシピのNew Versionを作る。
Image Builderコンソール→Recipes
対象のレシピを選択して、Actions→Create New Version
設定をしていく。※「Version」の入力を忘れないように。
レシピの作成が終わったところ。
-
AWS CLIで「Image pipelines」の設定を取得。
aws imagebuilder get-image-pipeline \ --image-pipeline-arn \ <Image pipelinesのARN> \ --query 'imagePipeline.{imageRecipeArn:imageRecipeArn,infrastructureConfigurationArn:infrastructureConfigurationArn}'
{ "imageRecipeArn": "arn:aws:imagebuilder:<Region>:<accountID>:image-recipe/<RecipeName>/1.0.0", "infrastructureConfigurationArn": "arn:aws:imagebuilder:<Region>:<accountID>:infrastructure-configuration/<PipelineName>-infrastructureconfiguration-xxxxxxxxxxxx" }
# エラーが出たら、AWS CLIのバージョンが低いかも(コマンドが存在しないのでエラーになる)。 usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument command: Invalid choice, valid choices are:
# 少なくとも 1.16.302 で動く事を確認。 $ aws --version aws-cli/1.16.302 Python/3.7.4 Linux/5.3.12-1-MANJARO botocore/1.13.38 $ aws imagebuilder help IMAGEBUILDER() IMAGEBUILDER() NAME imagebuilder - DESCRIPTION Amazon Elastic Compute Cloud Image Builder provides a one-stop-shop to automate the image management processes. You configure an automated
-
AWS CLIで「Image pipelines」のレシピを更新する。
aws imagebuilder update-image-pipeline \ --image-pipeline-arn \ <Image pipelinesのARN> \ --infrastructure-configuration-arn \ <2.で取得した"infrastructureConfigurationArn"> \ --image-recipe-arn \ <1.で新しく作ったRecipesのARN>
{ "requestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
-
AWS CLIで「Image pipelines」の設定を確認(2. と同じコマンド)。
aws imagebuilder get-image-pipeline \ --image-pipeline-arn \ <Image pipelinesのARN> \ --query 'imagePipeline.
{imageRecipeArn:imageRecipeArn,infrastructureConfigurationArn:infrastructureConfigurationArn}'
```
```json
{
"imageRecipeArn": "arn:aws:imagebuilder:<Region>:<accountID>:image-recipe/<RecipeName>/1.0.1",
"infrastructureConfigurationArn": "arn:aws:imagebuilder:<Region>:<accountID>:infrastructure-configuration/<PipelineName>-infrastructureconfiguration-xxxxxxxxxxxx"
}
```
※imageRecipeArnの末尾のバージョンが上がってる
-
AWSサポートに問い合わせた結果、APIはあるが現時点(2019/12/03)で、コンソールから操作できないとのこと(こういうパターンはまれによくある)。 ↩