不太清楚 AWS 如何想象工程师从 EC2Launch v1 到 EC2Launch v2...从长远来看,这可能是解决方案,但 atm idk。努力寻找有关如何与 EC2Launch v2 交互的有用文档。我离题了。
上下文: 我正在尝试使用具有多个硬盘的 CloudFormation 脚本启动 WS2022 服务器。我希望使用
AWS::SSM::Document
资源来自动化它的初始化。
问题 当 WS2022 服务器上线时,您必须使用磁盘管理器手动初始化附加硬盘。
想要的结果 具有多个硬盘驱动器的 WS2022 服务器在首次启动时可访问。
我做了什么
AWS EC2 Launch
并初始化 HDD。 (没有成功)EC2Launch v1
脚本 InitializeDisk.ps1
,希望可以将其扔进 S3 存储桶并由 SSMDocument
稍后执行。云形成模板代码:
# Don't worry about the Ref Variables as they are pretty generic.
#Create Instance
WindowsServer2022Instance:
Type: 'AWS::EC2::Instance'
Properties:
InstanceType: 'i3.large'
ImageId: #WS2022 AMI Image
IamInstanceProfile: # Some InstanceProfile
EbsOptimized: true
KeyName:
Ref: # Some KeyName
NetworkInterfaces:
- DeviceIndex: '0'
SubnetId: # Some Subnet ID
AssociatePublicIpAddress: true
GroupSet:
- Ref: # Some Subnet ID
#EC2 Volume Creation
AdditionalVolume:
Type: 'AWS::EC2::Volume'
Properties:
Size: 100
AvailabilityZone:
Fn::GetAtt:
- 'WindowsServer2022Instance'
- 'AvailabilityZone'
VolumeType: 'gp3'
#Attach EC2 Volume
VolumeAttachment:
Type: 'AWS::EC2::VolumeAttachment'
Properties:
InstanceId:
Ref: 'WindowsServer2022Instance'
VolumeId:
Ref: 'AdditionalVolume'
Device: '/dev/sdf'
对于遇到此问题的任何人,文档中有一个 PowerShell 片段,展示了如何更新 EC2Launch V2 配置。不幸的是,该片段有错误。
这是一个经过修改且有效的版本,用于初始化实例存储卷。
$config = &"$env:ProgramFiles/Amazon/EC2Launch/EC2Launch.exe" get-agent-config --format json | ConvertFrom-Json
$initializeVolumeTask =@"
{
"task": "initializeVolume",
"inputs": {
"initialize": "all"
}
}
"@
$config.config | %{if($_.stage -eq 'postReady'){$_.tasks += (ConvertFrom-Json -InputObject $initializeVolumeTask)}}
$config | ConvertTo-Json -Depth 6 | Out-File -encoding UTF8 $env:ProgramData/Amazon/EC2Launch/config/agent-config.yml
&"$env:ProgramFiles/Amazon/EC2Launch/EC2Launch.exe" get-agent-config --format json