shell - 将脚本作为用户数据传递到 AWS EC2 spot 实例

标签 shell amazon-web-services amazon-ec2 aws-cli

我正在尝试使用 aws cli 创建一个新的 spot 请求,但是如果我将 shell 脚本作为用户数据传递给 spot 请求,它会给我一个错误

我试过了

    aws ec2 request-spot-instances --spot-price "0.04" --instance-count 1 --launch-specification "{\"UserData\": \"/srv/user-data.sh\",\"InstanceType\": \"m1.small\"}"

这给了我一个错误

    Invalid BASE64 encoding of user data (400 response code)

我如何使用名称和值标记我的现货请求

最佳答案

确切地说,aws 期望为 UserData 值传递一个 base64 编码的字符串。我不知道为什么这些工具不能为您执行此操作。

所以,而不是字符串:

  /srv/user-data.sh

使用字符串的 base64 编码版本(使用在线编码器,我得到以下内容):

 L3Nydi91c2VyLWRhdGEuc2g=

我猜最终的 json 应该是这样的:

   '{"UserData": "L3Nydi91c2VyLWRhdGEuc2g=","InstanceType": "m1.small"}'

创建标签非常简单。这是“aws”CLI 命令文档的链接:http://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html

您需要确定资源 AMI id:

  aws ec2 create-tags --resources ami-78a54011 --tags Key=Name,Value=myname

关于shell - 将脚本作为用户数据传递到 AWS EC2 spot 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204262/

相关文章:

mysql - 无法连接到 AWS RDS 上的 mysql(错误 2003)

shell - 如何使用shell判断软件是否安装?

node.js - AWS Lambda 转码器返回失真的音频

amazon-web-services - aws 步骤功能是如何实现的?

ubuntu - ufw 禁用和启用后 AWS ubuntu 云实例连接超时

amazon-ec2 - 在 EC2 上通过 mutt 发送电子邮件的语法问题

c++ - c shell 输入重定向保持打开状态

linux - 在 Linux 中设置变量

linux - 查找文件并以特定格式显示结果到txt文件

amazon-web-services - 通过 Terraform 或 Cloudformation 启用和配置 AWS Cognito 高级安全功能