amazon-web-services - 添加 cfn-signal 后 cfn-init 停止工作
问题描述
我正在尝试使用 cfn-init 在 Amazon EC2 Windows 实例中执行一些 powershell 命令。如果我添加 cfn-signal 和 CreationPolicy,cfn-init 不会被执行。在不添加 cfn-signal 和 Creation Policy 的情况下,一切都会执行并正常工作。这是我的脚本的一部分:
EC2Instance1:
Type: AWS::EC2::Instance
Metadata:
AWS::CloudFormation::Init:
config:
files:
'c:\cfn\cfn-hup.conf':
content: !Join
- ''
- - |
[main]
- stack=
- !Ref 'AWS::StackId'
- |+
- region=
- !Ref 'AWS::Region'
- |+
'c:\cfn\hooks.d\cfn-auto-reloader.conf':
content: !Join
- ''
- - |
[cfn-auto-reloader-hook]
- |
triggers=post.update
- >
path=Resources.EC2Instance1.Metadata.AWS::CloudFormation::Init
- 'action=cfn-init.exe -v -s '
- !Ref 'AWS::StackId'
- ' -r EC2Instance1'
- ' --region '
- !Ref 'AWS::Region'
- |+
commands:
1-createFile:
command: !Sub |
powershell.exe New-Item ${PathOfFile} -ItemType file
2-addContenttoFile:
command: !Sub |
powershell.exe Set-Content -path ${PathOfFile} -Value 'Ip of webserver1 here'
3-replaceText:
command: !Sub |
powershell.exe (Get-Content ${PathOfFile}).replace('webserver1', (Invoke-WebRequest ifconfig.me/ip).Content.Trim()) ^| Set-Content ${PathOfFile}
Properties:
ImageId: !Ref AMI1
InstanceType: !Ref EC2InstanceType
KeyName: !Ref KeyName
UserData: !Base64
'Fn::Join':
- ''
- - |
<script>
- 'cfn-init.exe -v -s '
- !Ref 'AWS::StackId'
- ' -r EC2Instance1'
- ' --region '
- !Ref 'AWS::Region'
- |+
- |
- 'cfn-signal.exe -e %ERRORLEVEL% -s --stack '
- !Ref 'AWS::StackName'
- ' --resource EC2Instance1'
- ' --region '
- !Ref 'AWS::Region'
- |+
- </script>
CreationPolicy:
ResourceSignal:
Count: "1"
Timeout: PT10M
我哪里错了?
解决方案
我有一个类似的问题,但原因是由于在 cfn-init 期间重新启动。我发现这很有帮助:https ://aws.amazon.com/premiumsupport/knowledge-center/create-complete-bootstrapping/ 。您可以尝试将 cfn-signal 放在配置集中的命令中,而不是放在 userData 中。
推荐阅读
- c# - 使用 NSubstitute 4.0 模拟 EF dbContext 异步方法
- vue.js - Vue Axios 本地存储的令牌未定义
- c# - 如何在 SeleniumWebdriver 中处理 shadowdom
- javascript - 确保索引 0 后数组中的唯一性
- javascript - 如何使用来自后端编码器文件的引导样式的 html 内容制作 pdf
- python - 保存复合 numpy 数组的 H5PY 问题
- excel - 如何在python中将多个带有多张工作表的excel文件加载到一个数据框中
- c# - restsharp 发出多异步请求
- jakarta-ee - 如何将多个 spring-data 应用程序与共享数据库一起使用
- accelerometer - 如何访问 Hololens 加速度计 (IMU)?