📝
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