有人成功将用户数据传递给 AWS CLI 吗?
我尝试过以下各种咒语,但都没有效果。
文档说字符串必须采用 base64 编码:http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html
实例日志从未表明脚本已执行且 chef 已安装。
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_用户_数据.sh
#!/bin/bash
curl -L https://www.opscode.com/chef/install.sh | sudo bash
答案1
该文档在 aws 网站、该工具的 git repo 和该工具本身的输出之间不一致。
看来最新的信息是在 repo 页面中:https://github.com/aws/aws-cli
答案是使用类似的东西:--user-data file://chef_user_data.sh
答案2
是的,我们有。该参数按定义工作,但问题是 ec2 将用户数据视为不透明的数据类型 - 它按原样传递它,没有具体表示它是什么真的是 - 这留给实例上的消费应用程序进程。 CLI 的命令行特性需要这种编码,但接收进程现在有义务对其进行解码。 Chef 不需要。 CloudINIT.net 也不需要。 您可以通过检查实例元数据来确认这一点
http://169.254.169.254/latest/user-data
似乎 CLI 应该对 base64 用户数据有效负载进行编码。
编辑:事实证明文档很糟糕,-user-data 参数实际上接受文件参数,并进行编码。--user-data file:///path/to/the/file。请参阅https://github.com/aws/aws-cli/issues/366