运行 CloudFormation 模板中的 PowerShell 命令
Running PowerShell commands in CloudFormation template
我有一个 CloudFormation 模板,它以 Java 和 Tomcat 运行 作为服务启动 Windows 个实例。
我必须在注册表中为 Tomcat 设置最大内存池大小的值。我准备了一个 PowerShell 命令,它在命令行中运行良好。
然后我尝试了 3 种不同的方式 运行 它们作为 CloudFormation 模板的一部分,其中 none 有效。
Windows EventLog 和 C:\Program Files\Amazon\Ec2ConfigService\Logs 中的文件都没有给我提供任何关于它为什么不起作用的线索。
1
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
--- some props removed ---,
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"",
[
"<powershell>\n",
"Set-ItemProperty -Path \"HKLM:\Software\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat8\Parameters\Java\" -Name JvmMx -Value 5000 \n",
"Restart-Service Tomcat8 \n",
"</powershell>"
]
]
}
}
}
}
2
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
--- some props removed ---,
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"",
[
"<script>\n",
"PowerShell -Command \"& {Set-ItemProperty -Path 'HKLM:\Software\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat8\Parameters\Java' -Name JvmMx -Value 5000}\" \n",
"PowerShell -Command \"& {Restart-Service Tomcat8}\" \n",
"</script>"
]
]
}
}
}
}
3
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
--- some props removed ---,
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"",
[
"<script>\n",
"cfn-init.exe -v -s ", {"Ref" : "AWS::StackId"}, " -r LaunchConfig --region ", {"Ref" : "AWS::Region"}, "\n",
"</script>"
]
]
}
}
},
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"commands" : {
"1-heapsize" : {
"command" : "PowerShell -Command \"& {Set-ItemProperty -Path 'HKLM:\Software\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat8\Parameters\Java' -Name JvmMx -Value 5000}\""
},
"2-restart" : {
"command" : "PowerShell -Command \"& {Restart-Service Tomcat8}\""
}
}
}
}
}
}
必须在 EC2 实例中启用 User Data
才能应用 cfn-init 和其他用户数据注入脚本/运行.
您需要打开EC2ConfigurationService
-勾选启用用户数据,停止实例并获取AMI,请使用新创建的AMI。
详细信息可以在亚马逊文档中找到Link - http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html
我有一个 CloudFormation 模板,它以 Java 和 Tomcat 运行 作为服务启动 Windows 个实例。 我必须在注册表中为 Tomcat 设置最大内存池大小的值。我准备了一个 PowerShell 命令,它在命令行中运行良好。 然后我尝试了 3 种不同的方式 运行 它们作为 CloudFormation 模板的一部分,其中 none 有效。
Windows EventLog 和 C:\Program Files\Amazon\Ec2ConfigService\Logs 中的文件都没有给我提供任何关于它为什么不起作用的线索。
1
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
--- some props removed ---,
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"",
[
"<powershell>\n",
"Set-ItemProperty -Path \"HKLM:\Software\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat8\Parameters\Java\" -Name JvmMx -Value 5000 \n",
"Restart-Service Tomcat8 \n",
"</powershell>"
]
]
}
}
}
}
2
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
--- some props removed ---,
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"",
[
"<script>\n",
"PowerShell -Command \"& {Set-ItemProperty -Path 'HKLM:\Software\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat8\Parameters\Java' -Name JvmMx -Value 5000}\" \n",
"PowerShell -Command \"& {Restart-Service Tomcat8}\" \n",
"</script>"
]
]
}
}
}
}
3
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
--- some props removed ---,
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"",
[
"<script>\n",
"cfn-init.exe -v -s ", {"Ref" : "AWS::StackId"}, " -r LaunchConfig --region ", {"Ref" : "AWS::Region"}, "\n",
"</script>"
]
]
}
}
},
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"commands" : {
"1-heapsize" : {
"command" : "PowerShell -Command \"& {Set-ItemProperty -Path 'HKLM:\Software\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat8\Parameters\Java' -Name JvmMx -Value 5000}\""
},
"2-restart" : {
"command" : "PowerShell -Command \"& {Restart-Service Tomcat8}\""
}
}
}
}
}
}
User Data
才能应用 cfn-init 和其他用户数据注入脚本/运行.
您需要打开EC2ConfigurationService
-勾选启用用户数据,停止实例并获取AMI,请使用新创建的AMI。
详细信息可以在亚马逊文档中找到Link - http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html