如何设计Bootup脚本以设置在全新AWS EC2 Ubuntu实例上运行的apache Web服务器?

时间:2016-12-15 10:40:47

标签: apache amazon-web-services amazon-s3 amazon-ec2

我想配置一个EC2实例,以便在没有我(人为)干预的情况下安装,配置和启动Apache Web服务器。

为此,我正在利用“用户数据”部分,并编写了以下脚本:

#!/bin/bash
sudo apt-get upgrade
sudo apt-get install -y apache2
sudo apt-get install -y awscli
while [ ! -e /tmp/index.html ]; do  aws s3 cp s3://vietnhi-s-bucket/index.html /var/www/html; done
sudo systemctl restart apache2

Bootup脚本功能描述:

脚本强制更新Ubuntu实例,无论AMI图像创建时的日期是什么,从图像创建EC2实例到今天。

该脚本安装Apache 2服务器。

该脚本安装AWS CLI界面。因为没有AWS CLI界面,下一行的aws s3 cp命令无法运行。

该脚本将示例index.html文件从vietnhi-s-bucket S3存储桶复制到Apache Web服务器的/ var / www / html目录,并覆盖其默认的index.html文件。

该脚本重新启动Apache Web服务器。我可以使用“开始”,但我选择使用“重启”。

解释性说明:

  1. 该脚本假定我创建了一个IAM角色,允许AWS从名为“vietnhi-s-bucket”的S3存储桶中复制文件index.html。我已将名称“S3”赋予IAM角色,并为该角色分配了“S3ReadAccess”策略。
  2. 该脚本假设我创建了一个名为“vietnhi-s-bucket”的S3存储桶,我在其中存储了一个示例index.html文件。
  3. 供参考,以下是示例index.html文件的内容:

    [HTML] [身体] 这是一个测试 [/身体] [/ HTML]

  4. 启动脚本是否按预期工作?

1 个答案:

答案 0 :(得分:0)

该脚本按原样运行。

为了达到那个剧本,我必须克服三个挑战:

  1. 创建适当的IAM角色。最小的可行角色必须包括" S3ReadAccess"政策。此角色对于AWS能够使用您的AWS账户的公共和私有访问密钥以及环境中加载的密钥是绝对必要的。如果AWS无权访问您的AWS账户密钥,则无法从Vietnhi-s-bucket S3存储桶复制index.html文件。
  2. 安装AWS CLI界面(awscli)。无论出于何种原因,我从未在任何AWS官方文档或Web上提供的任何支持(包括AWS论坛)中看到该行。如果您未安装AWS CLI界面,则无法运行AWS CLI s3 cp命令。
  3. 我最初使用" aws s3 cp s3://vietnhi-s-bucket/index.html / var / www / html"作为我的原始copy-from-S3指令。不好的电话。 https://forums.aws.amazon.com/thread.jspa?threadID=220187
  4. 上面的链接指的是AWS尚未解决的时间问题,唯一的解决方法是围绕aws s3 cp命令重试。

相关问题