テンプレート名
ACS-ECS-RepairWindowsBlueScreenIssue
テンプレートの説明
Windows ブルースクリーンの問題を修正します。
テンプレートの種類
自動化
所有者
Alibaba Cloud
入力パラメーター
パラメーター | 説明 | 種類 | 必須 | デフォルト値 | 制限 |
instanceId | インスタンス ID | String | はい | ||
password | インスタンスのパスワード | String | はい | ||
regionId | リージョン ID です。 | String | いいえ | {{ ACS::RegionId }} |
出力パラメーター
なし
テンプレートを実行するために必要な権限ポリシー
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:AttachDisk",
"ecs:AuthorizeSecurityGroup",
"ecs:AuthorizeSecurityGroupEgress",
"ecs:ConfigureSecurityGroupPermissions",
"ecs:CreateSecurityGroup",
"ecs:DeleteInstance",
"ecs:DeleteSecurityGroup",
"ecs:DescribeDisks",
"ecs:DescribeInstances",
"ecs:DescribeInvocationResults",
"ecs:DescribeInvocations",
"ecs:DescribeNetworkInterfaces",
"ecs:DescribeSecurityGroupAttribute",
"ecs:DescribeSecurityGroups",
"ecs:DetachDisk",
"ecs:JoinResourceGroup",
"ecs:ModifySecurityGroupEgressRule",
"ecs:ModifySecurityGroupRule",
"ecs:RunCommand",
"ecs:RunInstances",
"ecs:StartInstance",
"ecs:StopInstance",
"ecs:TagResources",
"ecs:UntagResources"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ros:CreateStack",
"ros:DeleteStack",
"ros:GetStack"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"quotas:ListProductQuotas"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"rds:DescribeDBInstances"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"slb:DescribeLoadBalancers"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"vpc:AssociateVpcCidrBlock",
"vpc:CreateVSwitch",
"vpc:CreateVpc",
"vpc:DeleteVSwitch",
"vpc:DeleteVpc",
"vpc:DescribeVSwitches",
"vpc:DescribeVpcs",
"vpc:DescribeVpnGateways",
"vpc:DescribeZones",
"vpc:ModifyVSwitchAttribute",
"vpc:ModifyVpcAttribute",
"vpc:TagResources",
"vpc:UnTagResources"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
詳細
ACS-ECS-RepairWindowsBlueScreenIssue - 詳細
テンプレートコンテンツ
FormatVersion: OOS-2019-06-01
Description:
en: Windows システムのブルースクリーン問題を修復するためのソリューション
zh-cn: Solutions to Repair Windows System Blue Screen Issues
name-en: ACS-ECS-RepairWindowsBlueScreenIssue
name-zh-cn: RepairWindowsBlueScreenIssue
Parameters:
regionId:
Type: String
Label:
en: リージョン ID
zh-cn: Region ID
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
instanceId:
Type: String
AssociationProperty: ALIYUN::ECS::Instance::InstanceId
AssociationPropertyMetadata:
RegionId: regionId
Label:
en: インスタンス ID
zh-cn: Instance ID
password:
Type: String
AssociationProperty: ALIYUN::ECS::Instance::Password
Label:
en: ECS インスタンスのパスワード
zh-cn: ECS Instance Password
NoEcho: true
RamRole: ''
Tasks:
- Name: getZoneId
Action: ACS::ExecuteApi
Description:
en: ECS インスタンスのゾーン ID を取得します。
zh-cn: Get the zone of the ECS instance
Properties:
Service: ecs
API: DescribeInstances
Parameters:
RegionId: '{{ regionId }}'
InstanceIds:
- '{{ instanceId }}'
Outputs:
zoneId:
Type: String
ValueSelector: .Instances.Instance[].ZoneId
instanceType:
Type: String
ValueSelector: .Instances.Instance[].InstanceType
- Name: createStack
Action: ACS::ExecuteAPI
Description:
en: VPC リソーススタックを作成します。
zh-cn: Create a VPC resource stack
Properties:
Service: ROS
API: CreateStack
Parameters:
RegionId: '{{ regionId }}'
StackName: OOS-{{ACS::ExecutionId}}
TimeoutInMinutes: 10
DisableRollback: false
Parameters:
- ParameterKey: ZoneId
ParameterValue: '{{ getZoneId.zoneId }}'
- ParameterKey: VpcCidrBlock
ParameterValue: 192.168.0.0/16
- ParameterKey: VSwitchCidrBlock
ParameterValue: 192.168.1.0/24
TemplateBody: |
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
ZoneId:
Type: String
VpcCidrBlock:
Type: String
VSwitchCidrBlock:
Type: String
Resources:
EcsVpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock:
Ref: VpcCidrBlock
VpcName:
Ref: ALIYUN::StackName
EcsVSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
ZoneId:
Ref: ZoneId
VpcId:
Ref: EcsVpc
CidrBlock:
Ref: VSwitchCidrBlock
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
VpcId:
Ref: EcsVpc
Outputs:
SecurityGroupId:
Value:
Ref: EcsSecurityGroup
VSwitchId:
Value:
Ref: EcsVSwitch
Outputs:
StackId:
Type: String
ValueSelector: StackId
- Name: untilStackReady
Action: ACS::WaitFor
Description:
en: スタックのステータスが CREATE_COMPLETE になるのを待ちます。
zh-cn: Wait for the stack to reach the CREATE_COMPLETE state
OnError: deleteStack
Retries: 10
DelayType: Exponential
Delay: 2
BackOff: 2
Properties:
Service: ROS
API: GetStack
Parameters:
RegionId: '{{ regionId }}'
StackId: '{{createStack.StackId}}'
DesiredValues:
- CREATE_COMPLETE
StopRetryValues:
- CREATE_FAILED
- CHECK_FAILED
- ROLLBACK_FAILED
- ROLLBACK_COMPLETE
- CREATE_ROLLBACK_COMPLETE
PropertySelector: Status
NotDesiredValues: []
Outputs:
securityGroupId:
Type: String
ValueSelector: Outputs[0].OutputValue
vSwitchId:
Type: String
ValueSelector: Outputs[1].OutputValue
- Name: runInstances
Action: ACS::ECS::RunInstances
Description:
en: 一時的な ECS インスタンスを作成します。
zh-cn: Create a temporary ECS instance
OnError: deleteStack
Properties:
regionId: '{{ regionId }}'
imageId: wincore_2022_x64_dtc_en-us_40G_alibase_20240617.vhd
instanceType: '{{ getZoneId.instanceType }}'
securityGroupId: '{{ untilStackReady.securityGroupId }}'
vSwitchId: '{{ untilStackReady.vSwitchId }}'
systemDiskCategory: cloud_essd
systemDiskSize: '40'
internetMaxBandwidthIn: 0
internetMaxBandwidthOut: 0
amount: 1
Outputs:
instanceId:
Type: String
ValueSelector: instanceIds[0]
- Name: StopInstance
Action: ACS::ECS::StopInstance
Description:
en: 修復待ちの ECS インスタンスを停止します。
zh-cn: Stop the ECS instance pending repair.
OnError: deleteInstance
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ instanceId }}'
forceStop: true
- Name: getDiskId
Action: ACS::ExecuteApi
Description:
en: 修復待ちの ECS インスタンスのシステムディスク ID を取得します。
zh-cn: Get the system disk ID of the ECS instance pending repair.
Properties:
Service: ecs
API: DescribeDisks
Parameters:
RegionId: '{{ regionId }}'
InstanceId: '{{ instanceId }}'
DiskType: system
Outputs:
diskId:
Type: String
ValueSelector: .Disks.Disk[].DiskId
- Name: detachSystemDisk
Description:
en: 修復待ちの ECS インスタンスからシステムディスクをデタッチします。
zh-cn: Detach the system disk from the ECS instance pending repair.
Action: ACS::ECS::DetachDisk
OnError: deleteInstance
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ instanceId }}'
diskId: '{{ getDiskId.diskId }}'
- Name: attachDiskToTempInstance
Action: ACS::ECS::AttachDisk
Description:
en: ディスクを一時的な ECS インスタンスにアタッチします。
zh-cn: Attach the disk to a temporary ECS instance.
OnError: deleteInstance
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ runInstances.instanceId }}'
diskId: '{{ getDiskId.diskId }}'
- Name: waitForAWhile
Description:
en: システムが準備完了になるまで待機します。
zh-cn: Wait for the system to become ready
Action: ACS::Sleep
Properties:
Duration: PT4M
- Name: runCommand
Action: ACS::ECS::RunCommand
Description:
en: 修復コマンドを実行します。
zh-cn: Run the repair command.
Properties:
regionId: '{{ regionId }}'
commandType: RunPowerShellScript
instanceId: '{{ runInstances.instanceId }}'
commandContent: |-
$disks = Get-Disk
$disks | ForEach-Object {
if ($_.IsOffline) {
Set-Disk -Number $_.Number -IsOffline $false
}
if ($_.IsReadOnly) {
Set-Disk -Number $_.Number -IsReadOnly $false
}
}
# ドライバーディレクトリの名前を変更
$driverDir = "D:\windows\system32\drivers\CrowdStrike"
if (!(Test-Path $driverDir)) {
Write-Host "driver path not found"
exit 1
}
Rename-Item -Path $driverDir -NewName ($driverDir + ".bak")
- Name: detachDisk
Action: ACS::ECS::DetachDisk
Description:
en: 一時インスタンスからディスクをデタッチします。
zh-cn: Detach the disk from the temporary instance.
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ runInstances.instanceId }}'
diskId: '{{ getDiskId.diskId }}'
- Name: attachDiskToOriginalInstance
Action: ACS::ECS::AttachDisk
Description:
en: ディスクを元のインスタンスにアタッチします。
zh-cn: Attach the disk back to the original instance.
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ instanceId }}'
diskId: '{{ getDiskId.diskId }}'
bootable: true
password: '{{ password }}'
- Name: startInstance
Action: ACS::ECS::StartInstance
Description:
en: 元のインスタンスを起動します。
zh-cn: Start the original instance.
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ instanceId }}'
- Name: deleteInstance
Action: ACS::ExecuteAPI
Description:
en: 一時インスタンスを削除します。
zh-cn: Delete the temporary instance.
Properties:
Service: ECS
API: DeleteInstance
Risk: Normal
Parameters:
RegionId: '{{ regionId }}'
InstanceId: '{{ runInstances.instanceId }}'
Force: true
- Name: deleteStack
Action: ACS::ExecuteApi
Description:
en: VPC リソーススタックを削除します。
zh-cn: Delete the VPC resource stack
Properties:
Service: ROS
API: DeleteStack
Parameters:
RegionId: '{{ regionId }}'
StackId: '{{ createStack.StackId }}'