【问题标题】:AWS CodeDeploy under AWS Educate AccountAWS Educate 账户下的 AWS CodeDeploy
【发布时间】:2020-07-10 00:03:50
【问题描述】:

我在使用我的 AWS Educate 帐户进行代码部署时遇到了一些问题。最初,当我进行设置时,我正在关注这篇文章。

https://hackernoon.com/deploy-to-ec2-with-aws-codedeploy-from-bitbucket-pipelines-4f403e96d50c?fbclid=IwAR3rezVMGpuQxTJ3AneOeTL2oMHjCKbQB5C5ouTLhJQ5gRp3JeL4GK0f53o

其中讨论了设置 IAM 服务帐户。问题是 AWS Educate 允许您创建账户,但它不会生成密钥。为了让我将我的 Spring Boot(和 VueJS)应用程序部署到我的 bitbucket 存储库中的 s3 存储桶和 ec2,我需要一个密钥和密钥以及 CodeDeploy 组。

很好,我可以使用 labs.vocareum 页面上的单击帐户详细信息按钮并获取我的密钥,但是当我尝试设置代码部署组时,它要求提供服务角色,我不确定在哪里明白了吗?

【问题讨论】:

    标签: amazon-web-services aws-code-deploy bitbucket-aws-code-deploy


    【解决方案1】:

    为什么需要服务角色?

    CodeDeploy 服务使用服务角色来执行 CodeDeploy 外部的操作(即在另一个服务上,例如 S3)。

    AWS 有一种特殊的集成服务方法。基本上,您必须明确允许您使用的每个服务使用另一个服务(即使访问权限保持在同一帐户的范围内)。 CodeDeploy 服务没有固有的权限来更改 S3 中的内容。事实上,CodeDeploy 甚至不允许在没有明确允许的情况下从 S3 读取文件。

    这是来自文档 [1] 的官方解释:

    在 AWS 中,服务角色用于向 AWS 服务授予权限,以便它可以访问 AWS 资源。您附加到服务角色的策略决定了该服务可以访问哪些 AWS 资源以及可以对这些资源执行什么操作。

    根据hackernoon文章你实际上在做什么

    1. 您需要一个能够以编程方式访问您的 aws 帐户的用户帐户
    2. 用户帐户需要附加一个策略,该策略授予将文件上传到 S3 并触发 CodeDeploy 部署的权限 --> 您将此用户的访问密钥和秘密访问密钥提供给 Bitbucket,以便它可以将内容上传到 S3并以您的用户身份触发部署
    3. 与步骤 1 和 2 无关:在 AWS IAM [2] 中创建一个角色,该角色将被两种服务(不是 Bitbucket)使用:CodeDeploy 和 EC2。严格来说,hackernoon 文章的作者在这里将两个步骤合二为一:您正在创建一个由 两个 服务使用的角色(由信任关系中的两个不同主体指定:ec2.amazonaws.comcodedeploy.us-west-2.amazonaws.com)。通常这不是应该如何配置 IAM 策略,因为它违反了授予最小权限 [4] 的原则,因为 EC2 实例从它可能执行的 AWSCodeDeployRole 策略接收权限据我所知不需要。但这只是这里的哲学注释。 hackernoon 文章中提到的所有步骤在技术上都应该有效。

    所以,你实际做的是:

    • 授予 CodeDeploy 权限以在您的账户内执行各种操作,例如查看您已启动的 EC2 实例等(这在策略 AWSCodeDeployRole [3] 中指定)
    • 授予 EC2 读取上传到 S3 的修订的权限(这在 AmazonS3FullAccess 策略中指定)

    回到您的问题...

    但是,当我尝试设置代码部署组时,它要求提供服务角色,而我不确定从哪里获得这个角色?

    您需要在 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

    【讨论】:

    • 我有点尴尬,我错过了创建角色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2020-11-01
    • 2020-01-12
    • 1970-01-01
    • 2019-10-31
    • 2014-04-13
    相关资源
    最近更新 更多