gpt4 book ai didi

amazon-ec2 - 是否可以在我的 cloudformation 模板中使用 cfn-signal 而不使用 cfn-init ?

转载 作者:行者123 更新时间:2023-12-03 07:44:27 25 4
gpt4 key购买 nike

我现在有一个 cloudformation 堆栈,它设置了一个简单的 ec2 实例,并在用户数据部分安装了所有 python 包和文件。我什至从未在堆栈中的任何地方提到 cfn-init,也没有元数据。是否仍然可以使用 cfn-signal 来提醒我的堆栈 ec2 实例的设置尚未完成?或者cfn-signal和cfn-init必须一起使用吗?

谢谢。

最佳答案

不,cfn-init 和 cfn-signal 是两种完全独立的机制,可以单独使用。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-signal.html

我在 Snowplow cloudformation 模板中广泛使用 cfn-signal。在这里查出相关片段...

以下是我如何单独调用 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,甚至不在服务器上安装 util。

docker 容器定义在这里:

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,并将所有必需的二进制文件移至通过 docker 拉入。仅 UserData 部分中的 bash 脚本就更加干净且易于阅读。

关于amazon-ec2 - 是否可以在我的 cloudformation 模板中使用 cfn-signal 而不使用 cfn-init ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54538612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com