Нет, cfn-init и cfn-signal - это две совершенно разные механики, и они могут использоваться одна без другой.
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-signal.html
Я широко использую cfn-signal в моем Snowplowшаблон облачной информации.Подбрасывая здесь соответствующие фрагменты ...
Вот пример фрагмента того, как я вызываю cfn-signal сам по себе:
EventCollectionGroup:
Type: 'AWS::AutoScaling::AutoScalingGroup'
Properties:
LaunchConfigurationName: !Ref EventCollectionLc
CreationPolicy:
ResourceSignal:
Count: 2
Timeout: PT10M
UpdatePolicy:
AutoScalingRollingUpdate:
MinInstancesInService: 1
WaitOnResourceSignals: 'true'
PauseTime: PT10M
EventCollectionLc:
Type: 'AWS::AutoScaling::LaunchConfiguration'
Properties:
UserData: !Base64
'Fn::Sub': |
#!/bin/bash
docker run -t --rm ${ContainerAwsUtil} cfn-signal -e $? --stack ${AWS::StackName} --resource EventCollectionGroup --region ${AWS::Region}
UpdatePolicy:
AutoScalingReplacingUpdate:
WillReplace: 'true'
В приведенном выше фрагменте обрезаны дополнительные элементы.Вы можете найти шаблон здесь:
https://github.com/Bit-Clouded/Glenlivet/blob/master/analytics/snowplow.template#L368
Как видите, я фактически запускаю cfn-init в самом контейнере и даже не устанавливаю утилиту на сервере.
Здесь приведено определение контейнера докера:
FROM alpine:3.6
RUN apk add --no-cache ca-certificates python py-pip groff less jq curl &&\
pip install awscli &&\
pip install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz
Опять же, с обрезанными дополнениями.Полный файл находится здесь:
https://github.com/Bit-Clouded/Angostura/blob/master/utility/aws-util/Dockerfile
На самом деле, я лично вообще отошел от cfn-init и переместил все необходимые двоичные файлы для загрузки через докер.Просто bash-скрипт в разделе UserData намного чище и его легче читать.