CloudFormation を使用して Windows で Amazon EBS ボリュームにドライブ文字をマッピングするにはどうすればよいですか?
AWS CloudFormation を使用して Windows の Amazon Elastic Block Store (Amazon EBS) ボリュームにドライブ文字をマッピングするにはどうすればよいですか?
簡単な説明
起動中に実行されるカスタムスクリプトを使用して、CloudFormation で Windows の Amazon EBS ボリュームにドライブ文字をマッピングできます。
解決方法
1. Windows Server 2016 Base 以降の Amazon マシンイメージ (AMI) を使用して Windows インスタンスを起動します。
2. (オプション) D ドライブを手動で作成し、D ドライブにデータファイルを配置します。詳細については、Amazon EBS ボリュームを Windows で使用できるようにするを参照してください。
3. Sysprep オプションを指定したシャットダウンを使用して、インスタンスから AMI を作成します。詳細については、EC2Launch を使用して Windows インスタンスを構成するを参照してください。
4. 次のテンプレートに基づいて CloudFormation スタックを作成します。
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. { "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS CloudFormation template AV Group, Launch Config for EC2", "Resources": { "DBServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "files" : { "c:\\cfn\\cfn-hup.conf" : { "content" : { "Fn::Join" : ["", [ "[main]\n", "stack=", { "Ref" : "AWS::StackId" }, "\n", "region=", { "Ref" : "AWS::Region" }, "\n" ]]} }, "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf" : { "content": { "Fn::Join" : ["", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.DBServer.Metadata.AWS::CloudFormation::Init\n", "action=cfn-init.exe -v -s ", { "Ref" : "AWS::StackId" }, " -r DBServer", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]} }, "c:\\cfn\\hooks.d\\drives.diskpart.txt" : { "content": { "Fn::Join" : ["", [ "select disk 2\n", "attributes disk clear readonly\n", "clean\n", "online disk\n", "convert gpt\n", "create partition primary\n", "format quick fs=ntfs label=","\"","ORATEMP","\"","\n", "assign letter=X\n", "select disk 3\n", "attributes disk clear readonly\n", "clean\n", "online disk\n", "convert gpt\n", "create partition primary\n", "format quick fs=ntfs label=","\"","ORADATA","\"","\n", "assign letter=S\n", "select disk 1\n", "online disk\n" ]]}}, "c:\\cfn\\hooks.d\\renamedrives.ps1" : { "content": { "Fn::Join" : ["", [ "diskpart /s c:\\cfn\\hooks.d\\drives.diskpart.txt\n" ]]}} }, "commands" : { "1-rename-drives" : { "command" : "powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File c:\\cfn\\hooks.d\\renamedrives.ps1", "waitAfterCompletion" : "0" }, "2-signal-success" : { "command" : { "Fn::Join" : [ "", [ "cfn-signal.exe -e %ERRORLEVEL% \"", { "Fn::Base64" : { "Ref" : "WindowsServerWaitHandle" }}, "\""]] } } }, "services" : { "windows" : { "cfn-hup" : { "enabled" : "true", "ensureRunning" : "true", "files" : ["c:\\cfn\\cfn-hup.conf", "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf"] } } } } } }, "Properties": { "ImageId": "ami-01xxxxxxxxxx", "InstanceType": "m4.xlarge", "KeyName": "xxxxxxxx", "BlockDeviceMappings": [ {"DeviceName": "xvdg","Ebs":{"VolumeSize":"20"}}, {"DeviceName": "xvdm","Ebs":{"VolumeSize":"20"}} ], "Tags": [ { "Key": "Name", "Value": {"Fn::Join": ["-", ["DB",{"Ref": "AWS::StackName"}]]} }], "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "<powershell>\n", "cfn-init.exe -v -s ", { "Ref" : "AWS::StackId" }, " -r DBServer", " --region ", { "Ref" : "AWS::Region" }, "\n", "</powershell>" ]]}} } }, "WindowsServerWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle" }, "WindowsServerWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "DBServer", "Properties" : { "Handle" : {"Ref" : "WindowsServerWaitHandle"}, "Timeout" : "1800" } } } }
注: 上記のテンプレートには、ドライブ文字 X で Disk 2 を作成し、ドライブ文字 S で Disk 3 を作成するスクリプトが含まれています。
次のスクリプトはステップ 4 で示したテンプレートの一部であり、ここでは強調するために呼び出されます。このスクリプトは、マスターブートレコード (MBR) パーティション構造でボリュームを構成し、 NTFS ボリュームとしてフォーマットしてから、ドライブ文字を割り当てます。
"select disk 2\n", "attributes disk clear readonly\n", "clean\n", "online disk\n", "convert gpt\n", "create partition primary\n", "format quick fs=ntfs label=","\"","ORATEMP","\"","\n", "assign letter=X\n", "select disk 3\n", "attributes disk clear readonly\n", "clean\n", "online disk\n", "convert gpt\n", "create partition primary\n", "format quick fs=ntfs label=","\"","ORADATA","\"","\n", "assign letter=S\n", "select disk 1\n", "online disk\n"
5. スクリプトを AWS::CloudFormation::Init のファイルセクションに移動し、コマンドセクションを使用してスクリプトを実行します。
注意: Disk0 は常にルートボリュームです。
ヒント: Windows Explorer では、ドライブシーケンスがアルファベット順に表示されます。CloudFormation テンプレートからディスク文字に割り当てられたディスク番号を確認するには、ディスク管理ユーティリティで diskmgmt コマンドを実行します。
6. インスタンスをデプロイし、リモートデスクトッププロトコル (RDP) を使用してインスタンスに接続します。
この例では、インスタンスに 4 つのドライブがあります。D ドライブには、ステップ 1 で保存したデータファイルがあります。
Drive D =====> Drive with the data file Drive S =====> This is the Disk 3 Drive X =====> This is the Disk 2
関連するコンテンツ
- 質問済み 1年前lg...
- 質問済み 1年前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 1年前