有没有人成功地将用户数据传递给 AWS CLI?
我尝试了以下各种咒语,但它不起作用。
文档说字符串必须是 base64 编码:http ://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html
实例日志从不指示脚本已执行并已安装厨师。
aws ec2 run-instances --image-id ami-a73264ce --count 1 --instance-type t1.micro --key-name scrubbed --iam-instance-profile Arn=arn:aws:iam::scrubbed:instance-profile/scrubbed --user-data $(base64 chef_user_data.sh --wrap=0)
chef_user_data.sh
#!/bin/bash
curl -L https://www.opscode.com/chef/install.sh | sudo bash
: aws 网站、工具的 git 存储库和工具本身的输出之间的文档不一致。
似乎最新信息在回购页面中:https ://github.com/aws/aws-cli
答案是使用类似的东西:--user-data file://chef_user_data.sh
是的我们有。该参数按定义工作,但问题在于 ec2 将 userdata 视为不透明数据类型 - 它按原样传递它,没有具体表示它的真实含义- 留给实例上的消费应用程序进程。CLI 的命令行特性需要这种编码,但是接收进程现在有义务对其进行解码。厨师没有。CloudINIT.net 也没有。您可以通过检查实例元数据来确认这一点
似乎 CLI 应该对 base64 用户数据有效负载进行编码。
编辑:原来文档不好,-user-data 参数实际上接受文件参数,并进行编码。--user-data file:///path/to/the/file. 请参阅https://github.com/aws/aws-cli/issues/366