【问题标题】:Elastic Beanstalk deployment stuck on updating config settingsElastic Beanstalk 部署停留在更新配置设置上
【发布时间】:2014-05-28 13:17:09
【问题描述】:

我一直在测试我的持续部署设置,试图获得一组最少的 IAM 权限,这将允许我的 CI IAM 组部署到我的“暂存”Elastic Beanstalk 环境。

在我最近的测试中,我的部署卡住了。控制台中的最后一个事件是:

Updating environment staging's configuration settings.

幸运的是,部署将在 30 分钟后超时,因此可以再次部署环境。

这似乎是一个权限问题,因为如果我在所有资源上授予s3:*,部署工作。似乎在调用UpdateEnvironment 时,Elastic Beanstalk 对 S3 做了一些事情,但我不知道是什么。

我尝试了以下策略来授予 EB 对其资源存储桶的完全访问权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-REGION-ACCOUNT/resources/_runtime/_embedded_extensions/APP",
                "arn:aws:s3:::elasticbeanstalk-REGION-ACCOUNT/resources/_runtime/_embedded_extensions/APP/*",
                "arn:aws:s3:::elasticbeanstalk-REGION-ACCOUNT/resources/environments/ENV_ID",
                "arn:aws:s3:::elasticbeanstalk-REGION-ACCOUNT/resources/environments/ENV_ID/*"
            ]
        }
    ]
}

其中REGION、ACCOUNT、APP 和 ENV_ID 分别是我的 AWS 区域、帐号、应用程序名称和环境 ID。

有人知道 EB 试图访问哪个 S3 操作和资源吗?

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    Shared this on your blog already,但这可能有更广泛的受众,所以这里是:

    在此之后,ElastiBeanstalk 团队向我提供了有关 S3 权限的以下答案:

    "[...]看到下面的要求,稍微锁定的版本可以工作吗?我在这个案例中附加了一个策略,它将在以 elasticbeanstalk 开头的存储桶上授予 s3:GetObject。这本质上是为了允许访问所有 elasticbeanstalk 存储桶,包括我们拥有的存储桶。您唯一需要对我们的存储桶做的就是一个 GetObject,所以这应该足以满足您的所有需求。”

    所以看起来 ElasticBeanstalk 正在访问任何人的领域之外的存储桶以正常工作(这有点糟糕,但事实就是这样)。

    因此,以下策略足以让事情与 S3 一起工作:

    {
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::elasticbeanstalk-<region>-<account_id>",
        "arn:aws:s3:::elasticbeanstalk-<region>-<account_id>/",
        "arn:aws:s3:::elasticbeanstalk-<region>-<account_id>/*"
      ],
      "Effect": "Allow"
    },
    {
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::elasticbeanstalk*",
      "Effect": "Allow"
    }
    

    显然,您需要将其包装到 IAM 可以理解的适当政策声明中。不过,您之前关于 IAM 政策的所有假设都被证明是正确的,所以我猜这应该不是问题。

    【讨论】:

    • 这太棒了。经过数小时的反复试验,这个策略是第一个让我从 Codeship 进行锁定部署的策略。谢谢!为什么 AWS 不能记录这些东西?他们的 API 文档中没有关于“我们需要的秘密角色”的内容。他们提出的托管政策基本上是“开放访问一切”......这是什么意思?
    • @qu1j0t3 我同意。我真的很惊讶托管策略只是“授予此用户/角色/组访问权限以在 eb、sqs、rds 等上执行所有操作”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2020-09-08
    • 2014-09-11
    • 2012-09-10
    • 2020-12-25
    • 1970-01-01
    相关资源
    最近更新 更多