使用我的AWS Educate帐户进行代码部署时遇到麻烦。最初,当我进行设置时,我关注的是这篇文章。
其中讨论了如何设置IAM服务帐户。问题在于,AWS Educate允许您创建账户,但不会生成密钥。为了使我的Spring Boot(和VueJS)应用程序从我的位桶存储库中部署到s3存储桶和ec2中,我需要一个密钥和一个秘密密钥以及CodeDeploy组。
好的,我可以单击labs.vocareum页面上的Account Details按钮并获取我的密钥,但是,当我尝试设置Code Deploy Group时,它会要求服务角色,并且不确定在哪里得到这个吗?
答案 0 :(得分:1)
CodeDeploy服务使用该服务角色来执行CodeDeploy之外的操作(即在另一个服务,例如S3上)。
AWS具有一种集成服务的特殊方法。基本上,您必须授予正在使用的每个服务显式权限才能使用另一个服务(即使访问权限位于同一帐户的范围之内)。没有固有的权限授予CodeDeploy服务来更改S3中的内容。实际上,如果没有明确允许,甚至不允许CodeDeploy从S3读取文件。
这是文档[1]的官方解释:
在AWS中,服务角色用于向AWS服务授予权限,以便它可以访问AWS资源。您附加到服务角色的策略确定该服务可以访问哪些AWS资源以及该资源可以做什么。
所以,您实际要做的是:
但是,当我尝试建立代码部署组时,它要求服务角色,并且我不确定从何处获得该角色?
您需要在IAM服务中自己创建服务角色(请参阅[2])。我不知道AWS Educate是否支持此功能,但我想应该支持。创建服务角色后,必须将其分配给CodeDeploy组(这是您现在所处的位置)。此外,您必须将相同的服务角色分配给您的EC2实例配置文件。
[1] https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html
[2] https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console
[3] https://github.com/SummitRoute/aws_managed_policies/blob/master/policies/AWSCodeDeployRole
[4] https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege