1
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?

More than 3 years have passed since last update.

AWS Systems Manager で時間のかかるAMI取得を待たずに次のステップに移行する

Last updated at Posted at 2021-02-12

経緯など

最近はSystems Managerをこねこねしてます。
メンテナンスウィンドウを利用して、①AMIを取得(AWS-CreateImage のドキュメントを利用) → ②SSMAgentを更新 という一連のタスクの処理を設定していました。
しかし、EBSの容量が大きかったり、長い間AMIを取得していなかったりするとAMI取得にかなりの時間がかかる場合がありました。
インスタンスによってどのくらい時間がかかるのか分からないので、AMIの取得リクエストをしたら次のステップに移行したいという要望がありました。

AWSに問い合わせた

AWSに問い合わせると「AWS-CreateImage の代わりにカスタムドキュメントを作成するときにaws:executeAwsApi を利用することでAMIの作成完了を待たずに結果を返すよ」という旨の返答をいただきました。

aws:executeAwsApi を利用してAMIを作成するドキュメントを作成する

ドキュメント作成時にaws:executeAwsApi を利用するとAWS APIを呼び出して実行することができます。
実際にAMIを作成するドキュメントを作成するにはAWSコンソールの Systems Manager > ドキュメント で「オートメーションを作成する」から作成することができます。
20210212_1.png
オートメーション作成の画面にてエディタのタブから編集を選び、以下のyamlをエディタにコピペすれば作成することができます。
20210212_2.png

description: ''
schemaVersion: '0.3'
outputs:
  - create_ami.ImageId
parameters:
  InstanceId:
    type: String
  NoReboot:
    type: Boolean
mainSteps:
  - name: create_ami
    action: 'aws:executeAwsApi'
    inputs:
      Service: ec2
      Api: CreateImage
      InstanceId: '{{ InstanceId }}'
      Name: '{{ InstanceId }}_{{automation:EXECUTION_ID}}'
      NoReboot: '{{ NoReboot }}'
    outputs:
      - Name: ImageId
        Selector: $.ImageId

このyamlではinputにインスタンスIDと再起動のフラグを入力できるようにできますが、AWS APIのドキュメントを参考にもっと細かく制御することもできます。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.create_image
オートメーション単体で実行すると、実行はすぐに終わり、AMIのステータスはPendingで作成中ということが分かります。
(対象のインスタンスに大きめのディスクを付けてダミーのデータを積んでから確認したほうが分かりやすいですが、ここでは割愛します。)
20210212_3.png
20210212_4.png
20210212_5.png
20210212_6.png

まとめ

aws:executeAwsApi を利用してAMIを取得するドキュメントの作成方法を紹介しました。
今回はAMIを取得の際にaws:executeAwsApi を利用しましたが、もしかしたら他にも結果を待たずに次のステップに移行することができる処理があるかもしれません。
今後も実行が終了するまで待つべきタスク・スキップしてもよいタスクを見極めて実装していけたらと思います。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?