📝

cfn-init で EC2 インスタンスに AWS CLI をインストールしてみた

に公開

CloudFormation での EC2 インスタンス作成時にコマンドを実行できる cfn-init で AWS CLI をインストールしてみました。

CloudFormation テンプレート

AWSTemplateFormatVersion: "2010-09-09"
Description: Minimal EC2 with cfn-init installing AWS CLI

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        config:
          packages:
            yum:
              unzip: []
              curl: []
          commands:
            install_aws_cli:
              command: |
                curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
                unzip awscliv2.zip
                sudo ./aws/install
    Properties:
      ImageId: ami-xxx
      InstanceType: t2.micro
      SecurityGroupIds:
        - sg-xxx # 既存のセキュリティグループを使用
      IamInstanceProfile: xxx # 既存の IAM インスタンスプロファイル名に置き換え
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash
          /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}

今回は AWS CLI がデフォルトでインストールされていない Amazon Linux2 の AMI を使用しました。
また、セッションマネージャーでの接続用に既存のインスタンスプロファイルとセキュリティグループを指定しました。

動作確認

CloudFormation コンソールからデフォルト設定でデプロイします。

デプロイ完了後、EC2 インスタンスのステータスチェックが完了したらセッションマネージャーで接続します。
接続後、以下のように AWS CLI のインストールを確認できました。

$ aws --version
aws-cli/2.27.15 Python/3.13.3 Linux/5.10.236-228.935.amzn2.x86_64 exe/x86_64.amzn.2

冒頭のドキュメントには様々なコマンドの例が紹介されているため、興味があればお試しください。

まとめ

今回は cfn-init で EC2 インスタンスに AWS CLI をインストールしてみました。
どなたかの参考になれば幸いです。

参考資料

Discussion