我正在使用“aws ec2 run-instances”命令(来自AWS 命令行界面 (CLI))来启动Amazon EC2实例。我想为我正在启动的 EC2 实例设置IAM 角色。IAM 角色已配置,我可以在从 AWS Web UI 启动实例时成功使用它。但是当我尝试使用该命令和“--iam-instance-profile”选项执行此操作时,它失败了。执行“aws ec2 run-instances help”会显示值的 Arn= 和 Name= 子字段。当我尝试使用“aws iam list-instance-profiles”查找 Arn 时,它给出了以下错误消息:
发生客户端错误 (AccessDenied):用户:arn:aws:sts::xxxxxxxxxxxx:assumed-role/shell/i-15c2766d 无权执行:iam:ListInstanceProfiles on resource: arn:aws:iam::xxxxxxxxxxxx:instance -轮廓/
(其中 xxxxxxxxxxxx 是我的 AWS 12 位帐号)
我通过 Web UI 查找 Arn 字符串,并通过 run-instances 命令上的“--iam-instance-profile Arn=arn:aws:iam::xxxxxxxxxxxxxx:instance-profile/shell”使用它,但失败了:
发生客户端错误 (UnauthorizedOperation):您无权执行此操作。
如果我完全不使用“--iam-instance-profile”选项,实例将启动,但它不会具有我需要的 IAM 角色设置。因此,该权限似乎与使用“--iam-instance-profile”或访问 IAM 数据有关。我重复了几次以防 AWS 故障(它们有时会发生)但没有成功。
我怀疑可能存在一个限制,即不允许具有 IAM 角色的实例启动具有更强大 IAM 角色的实例。但在这种情况下,我正在执行命令的实例具有与我尝试使用的相同的 IAM 角色。命名为“shell”(虽然我也尝试使用另一个,但没有运气)。
是否甚至不允许从实例(通过其 IAM 角色凭证)设置 IAM 角色?
使用 IAM 角色是否需要比启动普通实例更高的 IAM …
在 AWS 上,我设法使用修改后的 Ubuntu 12.04 LTS amd64 创建了一个 AMI。我添加了很多包以及我们自己的很多代码和文件。云 init 仍然存在,我肯定应该留下来。但是,在我在用于为 AMI 创建快照的原始卷中启用 root 后,它通过在运行时重新禁用 root 来破坏我的自动化。
文件 /usr/share/pyshared/cloudinit/CloudConfig/cc_ssh.py 似乎与此有关。由于我没有 Python 编码经验,我不知道它调用的一些函数是什么,所以我无法真正看到所有这些脚本在做什么。
我可以添加一些我自己的 init 脚本,然后在某处运行,然后撤消该脚本并重新启用 root。 有没有一种方法,标准化或由 cloud init 批准,设置一个标志来指示不应该禁用 root 登录? 或者我应该推出我自己的解决方案(稍后初始化以放回我自己的 /root/.ssh/authorized_keys 文件)。
我还看到这个脚本正在删除旧的主机密钥并重新生成新的。这是我想保留的东西(因此我不需要自己这样做)。
我还将 SSH 侦听端口号更改为 22 以外的数字(并将安全组设置为仅允许从我自己的 IP 访问该端口)。这么多没有得到改变。这很好。
我可以触摸文件 /.autorelabel 并重新启动,在初始化期间恢复它将为我执行 SELINUX 重新标签。但我想在系统刚刚复制到硬盘驱动器映像的不同情况下执行此操作。我可以 chroot 到原始文件树,或者 chroot 到刚刚填充的设备映像并运行它。我只是找不到任何说明要运行什么的内容。
该映像正在 AWS EC2 上制作成 AMI,并包含 CentOS 6.3。但重新贴标签所需的时间太长(6分钟或更长)。我想将重新标签移至映像构建,其中额外的时间不是问题(因为它发生一次,而不是每次启动 AMI 时发生)。我可以将此重新标签作为文件系统最后一次卸载之前的最后一件事,直到它成为 AMI 并将启动。我只需要知道该打电话做什么就可以了。
我搜索了手册页但没有成功。我搜索了系统初始化脚本,但在检测到 /.autorelabel 的地方,尚不清楚发生了什么。
像http://www.centos.org/docs/5/html/5.2/Deployment_Guide/sec-sel-fsrelabel.html这样的文档只告诉如何做重启后仍然有效的事情。我需要在“重新启动”之前完成工作(卸载、构建 AMI 并准备启动)。
重点是……是的,将会重新启动……但我希望在此之前完成重新标记工作,这样就不会在每次启动 AMI 时都完成(因为需要很长时间)。