我有一个基于CloudFormation的应用程序部署,它从带有IAM实例配置文件的Marketplace AMI创建一个Amazon Linux 2 EC2实例。在CloudFormation模板中,我通过cfn-init运行脚本,其中包含一些AWS CLI命令,如ssm-get parameter,还使用mount和amazon-EFS-utils装载EFS卷。这一直很有魅力。
现在,我有一个客户正在他们的AWS帐户中使用常见的AMI和CloudFormation模板运行。对他们来说,cfn-init失败是因为cfn-init以root身份运行,但奇怪的是,root没有IAM权限,无法运行脚本或基于efs助手的装载,即使存在实例配置文件。但是ec2用户确实具有来自实例配置文件的IAM权限!
总结:
ec2用户确实具有实例配置文件中的IAM权限。
# logged in as ec2-user
aws ssm get-parameter --name "/aParameter"
返回结果
root不具有实例配置文件中的IAM权限。
# logged in as ec2-user
sudo aws ssm get-parameter --name "/aParameter"
An error occurred (ParameterNotFound) when calling the GetParameter operation:
我希望所有在实例中运行的用户都将实例配置文件作为他们的凭据,如果他们没有以其他方式进行显式身份验证的话。我在客户的环境中看不到任何会导致这种情况的东西——我想可能是服务控制政策——但他们没有。
有人看到这种行为并有解决办法吗?
提前非常感谢。。。。。
我不知道ec2用户和实例配置文件之间的关系。ec2用户是linux上的用户。实例配置文件是附加到EC2实例的IAM角色。我认为您可以使用aws s3 ls
等其他命令进行检查。顺便说一句,你在用sudo和root。
原来AWS凭据留在了AMI上的根用户中。:-/
Asri Badlah的aws iam get-user
建议说明了这个问题。非常感谢。
实例配置文件没有访问get user的权限,但sudo get user访问了,并从/root/.aws.中的凭据中显示了该用户