AWS EC2 - yum 更新在 AutoScaling LaunchConfig UserData 中不起作用
AWS EC2 - yum update does not work in AutoScaling LaunchConfig UserData
当 SSH 连接到我的 EC2 实例时,我可以成功 运行 sudo yum update
。但是,当我将相同的命令附加到启动配置的 userData 时,我看到以下错误(在 /var/log/cloud-init-output.log
中):
launch script..
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
我的脚本:
#!/bin/bash
echo "launch script.."
sudo yum update -y
sudo yum install java-1.8.0 -y
aws s3 cp s3://bucket/app.jar ./app.jar
java -jar app.jar >> out.log
如何在 EC2 实例启动时 运行 yum 命令?
确保您确实有从 EC2 实例到互联网的路由。这通常意味着 public IP 或到 NAT instance/gateway 的路由,以及 VPC 中的互联网网关。
可能是用户数据脚本在连接建立之前开始 运行。您可能需要在脚本 运行s yum update 之前验证实例是否具有出站网络访问权限,例如:
#!/bin/bash
echo "launch script.."
until ping -c1 www.google.com &>/dev/null; do
echo "Waiting for network ..."
sleep 1
done
yum update -y
# other things here
还有其他选项等待网络(here and here)。
另请注意,用户数据脚本是作为 root 用户执行的,因此您不需要 sudo。
当 SSH 连接到我的 EC2 实例时,我可以成功 运行 sudo yum update
。但是,当我将相同的命令附加到启动配置的 userData 时,我看到以下错误(在 /var/log/cloud-init-output.log
中):
launch script..
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
我的脚本:
#!/bin/bash
echo "launch script.."
sudo yum update -y
sudo yum install java-1.8.0 -y
aws s3 cp s3://bucket/app.jar ./app.jar
java -jar app.jar >> out.log
如何在 EC2 实例启动时 运行 yum 命令?
确保您确实有从 EC2 实例到互联网的路由。这通常意味着 public IP 或到 NAT instance/gateway 的路由,以及 VPC 中的互联网网关。
可能是用户数据脚本在连接建立之前开始 运行。您可能需要在脚本 运行s yum update 之前验证实例是否具有出站网络访问权限,例如:
#!/bin/bash
echo "launch script.."
until ping -c1 www.google.com &>/dev/null; do
echo "Waiting for network ..."
sleep 1
done
yum update -y
# other things here
还有其他选项等待网络(here and here)。
另请注意,用户数据脚本是作为 root 用户执行的,因此您不需要 sudo。