
AWS IaC EC2
AWS Infrastructure as Code (IaC)
従来の手動によるインフラストラクチャの設定や管理をコードで自動化する手法のこと。これにより、インフラストラクチャの構築、デプロイ、管理が効率的かつ一貫性を持って行えるようになる。
また、コードは再利用可能であり、モジュール化することで様々なプロジェクトや環境に適用可能であり、一度作成したテンプレートやスクリプトは、他のプロジェクトでも簡単に利用できる。
インフラの拡張や縮小がコードを変更するだけで行えるため、スケーラブルなアーキテクチャを簡単に実現。
IaCツール
AWS CloudFormation:
JSONまたはYAMLで記述されたテンプレートを使って、AWSリソースのプロビジョニングを自動化。
スタックという単位でリソースを管理し、依存関係も自動で解決。
AWS CDK (Cloud Development Kit):
プログラミング言語(Python、JavaScript、TypeScript、Java、C#など)を使ってインフラストラクチャを記述。
高レベルの抽象化を提供し、開発者が使いやすい。
Terraform:
HashiCorpが開発したオープンソースのIaCツール。
AWSだけでなく、他のクラウドプロバイダもサポートし、柔軟なインフラ管理が可能。
CloudFormationでのEC2作成例
標準的なEC2の作成テンプレート
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Provision EC2",
"Parameters": {
"KeyName": {
"Description": "The EC2 Key Pair to allow SSH access to the instance",
"Type": "AWS::EC2::KeyPair::KeyName"
},
"SubnetId": {
"Description": "The subnet ID where the instance will be deployed",
"Type": "AWS::EC2::Subnet::Id"
},
"SecurityGroupId": {
"Description": "ID of an existing Security Group",
"Type": "AWS::EC2::SecurityGroup::Id",
"AllowedPattern": "sg-[a-zA-Z0-9]+",
"ConstraintDescription": "Must be a valid security group ID."
},
"InstanceType": {
"Description": "EC2 instance type",
"Type": "String",
"Default": "t2.micro",
"AllowedValues": [
"t1.micro",
"t2.nano",
"t2.micro",
"t2.small",
"t2.medium",
"t2.large",
"m1.small",
"m1.medium",
"m1.large",
"m1.xlarge",
"m2.xlarge",
"m2.2xlarge",
"m2.4xlarge",
"m3.medium",
"m3.large",
"m3.xlarge",
"m3.2xlarge",
"m4.large",
"m4.xlarge",
"m4.2xlarge",
"m4.4xlarge",
"m4.10xlarge",
"c1.medium",
"c1.xlarge",
"c3.large",
"c3.xlarge",
"c3.2xlarge",
"c3.4xlarge",
"c3.8xlarge",
"c4.large",
"c4.xlarge",
"c4.2xlarge",
"c4.4xlarge",
"c4.8xlarge",
"g2.2xlarge",
"g2.8xlarge",
"r3.large",
"r3.xlarge",
"r3.2xlarge",
"r3.4xlarge",
"r3.8xlarge",
"i2.xlarge",
"i2.2xlarge",
"i2.4xlarge",
"i2.8xlarge",
"d2.xlarge",
"d2.2xlarge",
"d2.4xlarge",
"d2.8xlarge",
"hi1.4xlarge",
"hs1.8xlarge",
"cr1.8xlarge",
"cc2.8xlarge",
"cg1.4xlarge"
],
"ConstraintDescription": "Must be a valid EC2 instance type."
},
"VolumeSize": {
"Description": "Size of the EBS volume in GiB",
"Type": "Number",
"Default": 10,
"MinValue": 1,
"MaxValue": 30
},
"VolumeType": {
"Description": "Type of the EBS volume",
"Type": "String",
"Default": "gp2",
"AllowedValues": [
"gp2",
"io1",
"sc1",
"st1",
"standard"
]
}
},
"Mappings": {
"AWSInstanceType2Arch": {
"c1.medium": {
"Arch": "HVM64"
},
"c1.xlarge": {
"Arch": "HVM64"
},
"c3.2xlarge": {
"Arch": "HVM64"
},
"c3.4xlarge": {
"Arch": "HVM64"
},
"c3.8xlarge": {
"Arch": "HVM64"
},
"c3.large": {
"Arch": "HVM64"
},
"c3.xlarge": {
"Arch": "HVM64"
},
"c4.2xlarge": {
"Arch": "HVM64"
},
"c4.4xlarge": {
"Arch": "HVM64"
},
"c4.8xlarge": {
"Arch": "HVM64"
},
"c4.large": {
"Arch": "HVM64"
},
"c4.xlarge": {
"Arch": "HVM64"
},
"cc2.8xlarge": {
"Arch": "HVM64"
},
"cr1.8xlarge": {
"Arch": "HVM64"
},
"d2.2xlarge": {
"Arch": "HVM64"
},
"d2.4xlarge": {
"Arch": "HVM64"
},
"d2.8xlarge": {
"Arch": "HVM64"
},
"d2.xlarge": {
"Arch": "HVM64"
},
"g2.2xlarge": {
"Arch": "HVMG2"
},
"g2.8xlarge": {
"Arch": "HVMG2"
},
"hi1.4xlarge": {
"Arch": "HVM64"
},
"hs1.8xlarge": {
"Arch": "HVM64"
},
"i2.2xlarge": {
"Arch": "HVM64"
},
"i2.4xlarge": {
"Arch": "HVM64"
},
"i2.8xlarge": {
"Arch": "HVM64"
},
"i2.xlarge": {
"Arch": "HVM64"
},
"m1.large": {
"Arch": "HVM64"
},
"m1.medium": {
"Arch": "HVM64"
},
"m1.small": {
"Arch": "HVM64"
},
"m1.xlarge": {
"Arch": "HVM64"
},
"m2.2xlarge": {
"Arch": "HVM64"
},
"m2.4xlarge": {
"Arch": "HVM64"
},
"m2.xlarge": {
"Arch": "HVM64"
},
"m3.2xlarge": {
"Arch": "HVM64"
},
"m3.large": {
"Arch": "HVM64"
},
"m3.medium": {
"Arch": "HVM64"
},
"m3.xlarge": {
"Arch": "HVM64"
},
"m4.10xlarge": {
"Arch": "HVM64"
},
"m4.2xlarge": {
"Arch": "HVM64"
},
"m4.4xlarge": {
"Arch": "HVM64"
},
"m4.large": {
"Arch": "HVM64"
},
"m4.xlarge": {
"Arch": "HVM64"
},
"r3.2xlarge": {
"Arch": "HVM64"
},
"r3.4xlarge": {
"Arch": "HVM64"
},
"r3.8xlarge": {
"Arch": "HVM64"
},
"r3.large": {
"Arch": "HVM64"
},
"r3.xlarge": {
"Arch": "HVM64"
},
"t1.micro": {
"Arch": "HVM64"
},
"t2.large": {
"Arch": "HVM64"
},
"t2.medium": {
"Arch": "HVM64"
},
"t2.micro": {
"Arch": "HVM64"
},
"t2.nano": {
"Arch": "HVM64"
},
"t2.small": {
"Arch": "HVM64"
}
},
"AWSInstanceType2NATArch": {
"c1.medium": {
"Arch": "NATHVM64"
},
"c1.xlarge": {
"Arch": "NATHVM64"
},
"c3.2xlarge": {
"Arch": "NATHVM64"
},
"c3.4xlarge": {
"Arch": "NATHVM64"
},
"c3.8xlarge": {
"Arch": "NATHVM64"
},
"c3.large": {
"Arch": "NATHVM64"
},
"c3.xlarge": {
"Arch": "NATHVM64"
},
"c4.2xlarge": {
"Arch": "NATHVM64"
},
"c4.4xlarge": {
"Arch": "NATHVM64"
},
"c4.8xlarge": {
"Arch": "NATHVM64"
},
"c4.large": {
"Arch": "NATHVM64"
},
"c4.xlarge": {
"Arch": "NATHVM64"
},
"cc2.8xlarge": {
"Arch": "NATHVM64"
},
"cr1.8xlarge": {
"Arch": "NATHVM64"
},
"d2.2xlarge": {
"Arch": "NATHVM64"
},
"d2.4xlarge": {
"Arch": "NATHVM64"
},
"d2.8xlarge": {
"Arch": "NATHVM64"
},
"d2.xlarge": {
"Arch": "NATHVM64"
},
"g2.2xlarge": {
"Arch": "NATHVMG2"
},
"g2.8xlarge": {
"Arch": "NATHVMG2"
},
"hi1.4xlarge": {
"Arch": "NATHVM64"
},
"hs1.8xlarge": {
"Arch": "NATHVM64"
},
"i2.2xlarge": {
"Arch": "NATHVM64"
},
"i2.4xlarge": {
"Arch": "NATHVM64"
},
"i2.8xlarge": {
"Arch": "NATHVM64"
},
"i2.xlarge": {
"Arch": "NATHVM64"
},
"m1.large": {
"Arch": "NATHVM64"
},
"m1.medium": {
"Arch": "NATHVM64"
},
"m1.small": {
"Arch": "NATHVM64"
},
"m1.xlarge": {
"Arch": "NATHVM64"
},
"m2.2xlarge": {
"Arch": "NATHVM64"
},
"m2.4xlarge": {
"Arch": "NATHVM64"
},
"m2.xlarge": {
"Arch": "NATHVM64"
},
"m3.2xlarge": {
"Arch": "NATHVM64"
},
"m3.large": {
"Arch": "NATHVM64"
},
"m3.medium": {
"Arch": "NATHVM64"
},
"m3.xlarge": {
"Arch": "NATHVM64"
},
"m4.10xlarge": {
"Arch": "NATHVM64"
},
"m4.2xlarge": {
"Arch": "NATHVM64"
},
"m4.4xlarge": {
"Arch": "NATHVM64"
},
"m4.large": {
"Arch": "NATHVM64"
},
"m4.xlarge": {
"Arch": "NATHVM64"
},
"r3.2xlarge": {
"Arch": "NATHVM64"
},
"r3.4xlarge": {
"Arch": "NATHVM64"
},
"r3.8xlarge": {
"Arch": "NATHVM64"
},
"r3.large": {
"Arch": "NATHVM64"
},
"r3.xlarge": {
"Arch": "NATHVM64"
},
"t1.micro": {
"Arch": "NATHVM64"
},
"t2.large": {
"Arch": "NATHVM64"
},
"t2.medium": {
"Arch": "NATHVM64"
},
"t2.micro": {
"Arch": "NATHVM64"
},
"t2.nano": {
"Arch": "NATHVM64"
},
"t2.small": {
"Arch": "NATHVM64"
}
},
"AWSRegionArch2AMI": {
"af-south-1": {
"HVM64": "ami-0412806bd0f2cf75f",
"HVMG2": "NOT_SUPPORTED"
},
"ap-east-1": {
"HVM64": "ami-0e0a21f8bd5195698",
"HVMG2": "NOT_SUPPORTED"
},
"ap-northeast-1": {
"HVM64": "ami-0c3e3e7af817ad732",
"HVMG2": "NOT_SUPPORTED"
},
"ap-northeast-2": {
"HVM64": "ami-0f8dbbf156e3a5cc6",
"HVMG2": "NOT_SUPPORTED"
},
"ap-northeast-3": {
"HVM64": "ami-02a371c41f08cc499",
"HVMG2": "NOT_SUPPORTED"
},
"ap-south-1": {
"HVM64": "ami-0f4ab3c8db917e421",
"HVMG2": "NOT_SUPPORTED"
},
"ap-south-2": {
"HVM64": "ami-008b9c53bb1dcd29c",
"HVMG2": "NOT_SUPPORTED"
},
"ap-southeast-1": {
"HVM64": "ami-0c3189395e5b39df7",
"HVMG2": "NOT_SUPPORTED"
},
"ap-southeast-2": {
"HVM64": "ami-040d698318c0b1575",
"HVMG2": "NOT_SUPPORTED"
},
"ap-southeast-3": {
"HVM64": "ami-065dcca47dde26602",
"HVMG2": "NOT_SUPPORTED"
},
"ap-southeast-4": {
"HVM64": "ami-043e25432cf94e107",
"HVMG2": "NOT_SUPPORTED"
},
"il-central-1": {
"HVM64": "ami-0054be7d7d9d65a1d",
"HVMG2": "NOT_SUPPORTED"
},
"ca-central-1": {
"HVM64": "ami-05f40104305a2cdf7",
"HVMG2": "NOT_SUPPORTED"
},
"cn-north-1": {
"HVM64": "ami-03f1e08d409b1e5fd",
"HVMG2": "NOT_SUPPORTED"
},
"cn-northwest-1": {
"HVM64": "ami-00093746b9a0e272a",
"HVMG2": "NOT_SUPPORTED"
},
"eu-central-1": {
"HVM64": "ami-0f454ec961da9a046",
"HVMG2": "NOT_SUPPORTED"
},
"eu-north-1": {
"HVM64": "ami-0e78cd18c67fcf512",
"HVMG2": "NOT_SUPPORTED"
},
"eu-south-1": {
"HVM64": "ami-07d048788725b9602",
"HVMG2": "NOT_SUPPORTED"
},
"eu-west-1": {
"HVM64": "ami-0db5ca3e5748fb7e2",
"HVMG2": "NOT_SUPPORTED"
},
"eu-west-2": {
"HVM64": "ami-07baf6b15b7387f24",
"HVMG2": "NOT_SUPPORTED"
},
"eu-west-3": {
"HVM64": "ami-05a13fbd8aa57eedc",
"HVMG2": "NOT_SUPPORTED"
},
"me-south-1": {
"HVM64": "ami-0007de3fdcaba7e44",
"HVMG2": "NOT_SUPPORTED"
},
"me-central-1": {
"HVM64": "ami-06ce88defa3fc74ed",
"HVMG2": "NOT_SUPPORTED"
},
"eu-south-2": {
"HVM64": "ami-051306f4e885d6de4",
"HVMG2": "NOT_SUPPORTED"
},
"eu-central-2": {
"HVM64": "ami-0fcd532574732cb0f",
"HVMG2": "NOT_SUPPORTED"
},
"sa-east-1": {
"HVM64": "ami-07f6e9fce0e888425",
"HVMG2": "NOT_SUPPORTED"
},
"us-east-1": {
"HVM64": "ami-01989ebfd388ea377",
"HVMG2": "NOT_SUPPORTED"
},
"us-east-2": {
"HVM64": "ami-0de69dde1945155da",
"HVMG2": "NOT_SUPPORTED"
},
"us-west-1": {
"HVM64": "ami-08fe20a82dcaa1c92",
"HVMG2": "NOT_SUPPORTED"
},
"us-west-2": {
"HVM64": "ami-05848d23360f5edfe",
"HVMG2": "NOT_SUPPORTED"
}
}
},
"Resources": {
"EC2": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": {
"Fn::FindInMap": [
"AWSRegionArch2AMI",
{
"Ref": "AWS::Region"
},
{
"Fn::FindInMap": [
"AWSInstanceType2Arch",
{
"Ref": "InstanceType"
},
"Arch"
]
}
]
},
"InstanceType": {
"Ref": "InstanceType"
},
"KeyName": {
"Ref": "KeyName"
},
"SubnetId": {
"Ref": "SubnetId"
},
"SecurityGroupIds": [
{
"Ref": "SecurityGroupId"
}
],
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"VolumeSize": {
"Ref": "VolumeSize"
},
"VolumeType": {
"Ref": "VolumeType"
},
"DeleteOnTermination": true
}
}
]
}
}
}
}
コードの説明
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Provision EC2",
}
解説:
`AWSTemplateFormatVersion`はテンプレートのフォーマットバージョンを指定するもので、この場合は`2010-09-09`が指定されている。
`Description`はテンプレートの概要を説明しており、ここではEC2インスタンスの設定内容について述べている。
Parameters セクション
CloudFormationテンプレートに動的な入力を提供するために使用する。ユーザーがテンプレートを実行する際に、特定の値を指定できるようにする。
Description: パラメータの説明。
Type: パラメータのデータ型(例: String, Number)。
Default: パラメータのデフォルト値。
AllowedPattern, MinLength, MaxLength, MinValue, MaxValueなど: パラメータの入力制約。
{
"Parameters": {
"KeyName": {
"Description": "The EC2 Key Pair to allow SSH access to the instance",
"Type": "AWS::EC2::KeyPair::KeyName"
},
"SubnetId": {
"Description": "The subnet ID where the instance will be deployed",
"Type": "AWS::EC2::Subnet::Id"
},
"SecurityGroupId": {
"Description": "ID of an existing Security Group",
"Type": "AWS::EC2::SecurityGroup::Id",
"AllowedPattern": "sg-[a-zA-Z0-9]+",
"ConstraintDescription": "Must be a valid security group ID."
},
"InstanceType": {
"Description": "EC2 instance type",
"Type": "String",
"Default": "t2.micro",
"AllowedValues": [
"t1.micro",
"t2.nano",
"t2.micro",
"t2.small",
"t2.medium",
"t2.large",
"m1.small",
"m1.medium",
"m1.large",
"m1.xlarge",
"m2.xlarge",
"m2.2xlarge",
"m2.4xlarge",
"m3.medium",
"m3.large",
"m3.xlarge",
"m3.2xlarge",
"m4.large",
"m4.xlarge",
"m4.2xlarge",
"m4.4xlarge",
"m4.10xlarge",
"c1.medium",
"c1.xlarge",
"c3.large",
"c3.xlarge",
"c3.2xlarge",
"c3.4xlarge",
"c3.8xlarge",
"c4.large",
"c4.xlarge",
"c4.2xlarge",
"c4.4xlarge",
"c4.8xlarge",
"g2.2xlarge",
"g2.8xlarge",
"r3.large",
"r3.xlarge",
"r3.2xlarge",
"r3.4xlarge",
"r3.8xlarge",
"i2.xlarge",
"i2.2xlarge",
"i2.4xlarge",
"i2.8xlarge",
"d2.xlarge",
"d2.2xlarge",
"d2.4xlarge",
"d2.8xlarge",
"hi1.4xlarge",
"hs1.8xlarge",
"cr1.8xlarge",
"cc2.8xlarge",
"cg1.4xlarge"
],
"ConstraintDescription": "Must be a valid EC2 instance type."
},
"VolumeSize": {
"Description": "Size of the EBS volume in GiB",
"Type": "Number",
"Default": 10,
"MinValue": 1,
"MaxValue": 30
},
"VolumeType": {
"Description": "Type of the EBS volume",
"Type": "String",
"Default": "gp2",
"AllowedValues": [
"gp2",
"io1",
"sc1",
"st1",
"standard"
]
}
}
}
解説:
`Parameters`セクションでは、テンプレートに渡されるパラメータを定義している。
`SecurityGroupId`は既存のセキュリティグループのIDを受け取るためのパラメータ。AllowedPatternでフォーマットを制限。
`SubnetId`はインスタンスをデプロイするサブネットのIDを受け取るパラメータ。
`KeyName`はEC2接続時に使用するキーペア。
`EbsVolumeSize`はEBSボリュームのサイズ(GB)を受け取るパラメータ。デフォルトは10GB、最小1GB、最大30GB。
Mappings
{
"Mappings": {
"AWSInstanceType2Arch": {
"c1.medium": {
"Arch": "HVM64"
},
"c1.xlarge": {
"Arch": "HVM64"
},
"c3.2xlarge": {
"Arch": "HVM64"
},
// さらに多くのインスタンスタイプ
},
"AWSInstanceType2NATArch": {
"c1.medium": {
"Arch": "NATHVM64"
},
"c1.xlarge": {
"Arch": "NATHVM64"
},
"c3.2xlarge": {
"Arch": "NATHVM64"
},
// さらに多くのインスタンスタイプ
},
"AWSRegionArch2AMI": {
"us-east-1": {
"HVM64": "ami-01989ebfd388ea377",
"HVMG2": "NOT_SUPPORTED"
},
"us-west-1": {
"HVM64": "ami-08fe20a82dcaa1c92",
"HVMG2": "NOT_SUPPORTED"
},
// さらに多くのリージョン
}
}
}
インスタンスタイプとアーキテクチャ、リージョンとAMIのマッピング情報。これにより、インスタンスの適切なAMIを選択するための情報が提供される。
Resources セクション
AWSリソースを定義する。ここで定義されたリソースがCloudFormationによって作成、設定、管理される。
{
"Resources": {
"EC2": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": {
"Fn::FindInMap": [
"AWSRegionArch2AMI",
{
"Ref": "AWS::Region"
},
{
"Fn::FindInMap": [
"AWSInstanceType2Arch",
{
"Ref": "InstanceType"
},
"Arch"
]
}
]
},
"InstanceType": {
"Ref": "InstanceType"
},
"KeyName": {
"Ref": "KeyName"
},
"SubnetId": {
"Ref": "SubnetId"
},
"SecurityGroupIds": [
{
"Ref": "SecurityGroupId"
}
],
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"VolumeSize": {
"Ref": "VolumeSize"
},
"VolumeType": {
"Ref": "VolumeType"
},
"DeleteOnTermination": true
}
}
]
}
}
}
}
解説:
`Resources`セクションでは、AWSリソースを定義している。
InstanceType: InstanceType パラメータを参照
KeyName: KeyName パラメータを参照
ImageId: ImageId パラメータを参照
SubnetId: SubnetId パラメータを参照
SecurityGroupIds: SecurityGroupId パラメータを参照
BlockDeviceMappings: EBS ボリュームの設定を含む
Parametersセクションで定義されたパラメータは、Resourcesセクションでリソースのプロパティとして参照される。
これにより、テンプレートの実行時にユーザーが指定した値を使ってリソースを動的に設定できる。
このテンプレートを使うことで、指定されたパラメータを基に、セキュリティグループ、サブネット、KMSキーなどの設定が行われたEC2インスタンスが自動で作成される。
補足
"Ref"
指定されたリソースやパラメータの値を参照することができる。
"Ref": "SubnetId"
Fn::Sub
文字列の置換を行うために使用され、リソースの名前やパラメータの値などを動的に埋め込むことができる。
{
"Resources": {
"MyEC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"InstanceType": "t2.nano",
"KeyName": { "Ref": "KeyName" },
"ImageId": "ami-064d2a8f528240c59",
"SubnetId": { "Ref": "SubnetId" },
"PrivateIpAddress": { "Ref": "PrivateIpAddress" },
"SecurityGroupIds": [
{ "Ref": "SecurityGroupId" }
],
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"VolumeSize": { "Ref": "EbsVolumeSize" },
"VolumeType": "gp2",
"Encrypted": true
}
}
],
"UserData": {
"Fn::Base64": {
"Fn::Sub": [
"#!/bin/bash\n" +
"yum update -y\n" +
"yum install -y httpd\n" +
"systemctl start httpd\n" +
"systemctl enable httpd\n" +
"echo \"<html><h1>Hello from your EC2 instance!</h1></html>\" > /var/www/html/index.html\n" +
"useradd ${NewUserName}\n" +
"echo ${NewUserName}:${NewUserPassword} | chpasswd",
{
"NewUserName": { "Ref": "NewUserName" },
"NewUserPassword": { "Ref": "NewUserPassword" }
}
]
}
}
}
}
}
}
テンプレートのパラメータ NewUserName と NewUserPassword を動的に挿入している。
AWS CloudFormationでの操作








CLIでのEC2作成例
# EC2インスタンスの作成
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--count 1 \
--instance-type t2.micro \
--key-name MyKeyPair \
--security-group-ids sg-0123456789abcdef0 \
--subnet-id subnet-6e7f829e \
--private-ip-address 10.0.0.10 \
--iam-instance-profile Name=MyIAMRole \
--user-data file://my_script.sh \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyInstance}]' \
--block-device-mappings '[{"DeviceName":"/dev/sdh","Ebs":{"VolumeSize":20,"VolumeType":"gp2","DeleteOnTermination":true}}]'
# 削除保護の有効化
aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --disable-api-termination
各オプションの説明
--image-id: 使用するAmazonマシンイメージ(AMI)のID。
--count: 作成するインスタンスの数。
--instance-type: インスタンスタイプ。
--key-name: インスタンスにSSHでアクセスするためのキーペアの名前。
--security-group-ids: インスタンスが所属するセキュリティグループのID。
--subnet-id: インスタンスを配置するサブネットのID。
--private-ip-address: インスタンスに割り当てるプライベートIPアドレス。
--iam-instance-profile: インスタンスにアタッチするIAMロールの名前。
--user-data: インスタンス起動時に実行するスクリプトのファイルパス。
--tag-specifications: リソースにタグを追加する設定。
--block-device-mappings: インスタンスにアタッチするブロックデバイス(EBSボリューム)の設定。
--disable-api-termination: 削除保護の有効化。
いいなと思ったら応援しよう!
