AWS CloudFormation テンプレートを使用して作成した Amazon EC2 インスタンスのルートボリュームのプロパティを設定する方法を教えてください。
AWS CloudFormation テンプレートを使用して作成した Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのルートボリュームのプロパティを設定したいと考えています。例えば、ルートボリュームのサイズを変更したり、ルートボリュームの暗号化を有効にしたりしたいと考えています。
簡単な説明
EC2 インスタンスのルートボリュームのプロパティを設定するには、Amazon マシンイメージ (AMI) のルートボリュームのデバイス名を指定する必要があります。次に、AWS::EC2::Instance リソースの BlockDeviceMapping プロパティを使用して、ルートボリュームのプロパティを設定できます。
注: デフォルトでは、AMI のブロックデバイスマッピングで指定されたブロックデバイスが EC2 インスタンスによって使用されます。AMI ブロックデバイスマッピングを上書きするには、インスタンスブロックデバイスマッピングを使用します。ルートボリュームの場合、ボリュームサイズ、ボリュームタイプ、DeleteOnTermination 設定のみを上書きできます。インスタンスの実行後は、アタッチされた Amazon Elastic Block Store (Amazon EBS) ボリュームの DeleteOnTermination 設定のみを変更できます。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください。
解決方法
AMI のルートボリュームのデバイス名を特定する
デバイス名を確認するには、Amazon EC2 コンソールまたは AWS CLI で以下のステップを実行します。
Amazon EC2 コンソールを使って以下を実行します。
1. Amazon EC2 コンソールを開きます。
2. ナビゲーションバーから、インスタンスを起動する AWS リージョンを選択します。
3. ナビゲーションペインで [AMI] を選択します。
4. [フィルター] オプションを使用して AMI を見つけ、お客様の AMI を選択します。
5. [詳細] タブで、[ルートデバイス名] を見つけます。これは、ルートデバイス名が表示される場所です。
AWS CLI のコマンドを使用して、以下のとおり操作します。
AWS CLI で、次のコマンドを実行します。
aws ec2 describe-images \ --region us-east-1 \ --image-ids ami-1234567890AWSEXAMPLE
注: us-east-1 をお客様のリージョンに置き換えます。ami-1234567890AWSEXAMPLE をお客様の AMI に置き換えます。
前述のコマンドの出力は、ルートボリュームのデバイス名を示す RootDeviceName フィールドを返します。
EC2 インスタンスのルートボリュームのプロパティを設定する
AWS::EC2::Instance リソースの BlockDeviceMapping プロパティを使用して、EC2 インスタンスのルートボリュームのプロパティを設定します。
次の JSON および YAML の例では、AWS CloudFormation によって、ルートボリュームのサイズが 30 GB に設定された EC2 インスタンスが作成されます。
JSON および YAML テンプレートでは、ルートボリュームの DeleteOnTermination プロパティが trueに設定されます。指定した AMI が Amazon Linux 2 AMI であるため、DeviceName は /dev/xvda に設定されます。最後に、Encrypted プロパティが true に設定され、ルートボリュームのデフォルトの暗号化が有効になります。
重要: テンプレートで、/dev/xvda を、先ほど特定した Root Device Name プロパティの値に置き換えます。その後、要件に基づいてテンプレートの Ebs プロパティを変更します。
JSON テンプレート:
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS CloudFormation Sample Template that shows how to increase the size of the root volume. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resource used if you create a stack from this template.", "Parameters": { "KeyName": { "Type": "AWS::EC2::KeyPair::KeyName", "Description": "Name of an existing EC2 KeyPair to enable SSH access to the EC2 instance." }, "InstanceType": { "Description": "EC2 instance type", "Type": "String", "Default": "t2.micro", "ConstraintDescription": "Please choose a valid instance type." }, "AMIID": { "Description": "The Latest Amazon Linux 2 AMI taken from the public AWS Systems Manager Parameter Store", "Type": "AWS::SSM::Parameter::Value<String>", "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" } }, "Resources": { "LinuxInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "AMIID" }, "InstanceType": { "Ref": "InstanceType" }, "KeyName": { "Ref": "KeyName" }, "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "VolumeType": "gp2", "VolumeSize": "30", "DeleteOnTermination":"false", "Encrypted": "true" } } ] } } } }
YAML テンプレート:
AWSTemplateFormatVersion: 2010-09-09 Description: >- AWS CloudFormation Sample Template that shows how to increase the size of the root volume. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resource used if you create a stack from this template. Parameters: KeyName: Type: 'AWS::EC2::KeyPair::KeyName' Description: Name of an existing EC2 KeyPair to enable SSH access to the EC2 instance. InstanceType: Description: EC2 instance type Type: String Default: t2.micro ConstraintDescription: Please choose a valid instance type. AMIID: Description: >- The Latest Amazon Linux 2 AMI taken from the public Systems Manager Parameter Store Type: 'AWS::SSM::Parameter::Value<String>' Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 Resources: LinuxInstance: Type: 'AWS::EC2::Instance' Properties: ImageId: !Ref AMIID InstanceType: !Ref InstanceType KeyName: !Ref KeyName BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeType: gp2 VolumeSize: '30' DeleteOnTermination: 'false' Encrypted: 'true'
関連するコンテンツ
- 質問済み 7年前lg...
- 質問済み 4日前lg...
- 承認された回答質問済み 1年前lg...
- AWS公式更新しました 10ヶ月前
- AWS公式更新しました 1年前
- AWS公式更新しました 3年前