有没有人成功将用户数据传递给AWS CLI?
我已经尝试了以下的各种咒语,但它不起作用。
文档说string必须是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视为一个不透明的数据types – 它按原样传递它,没有具体表示实际是什么 – 留给实例上的消费应用程序进程。 CLI的命令行特性需要这种编码,但是接收过程现在有义务对其进行解码。 而厨师不是。 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