在第二个地区创建AppRunner服务的困难

0

【以下的问题经过翻译处理】 你能否在另一个区域中使用一个ECR镜像创建一个新的AppRunner服务?我读了一点关于复制的内容,但如果可能的话,我想避免额外的复杂性来让它工作。额外的区域会引入任何额外的权限问题吗?

否则,这是我的当前设置:

我已经成功地在一个区域中运行了一个AppRunner服务。我正在尝试在第二个区域中使用相同的镜像启动一个服务,但是我遇到了类似于这个问题的问题: 当前服务因无法拉取私有ECR镜像而无法创建或部署服务。

具体而言,该服务被创建,但会进入“OPERATION_IN_PROGRESS”状态一段时间,然后失败并进入“创建失败”状态。在事件“创建服务”的部署日志中查看,我看到:

01-25-2022 01:58:36 PM [AppRunner] Failed to pull your application image. Be sure you configure your service with a valid access role to your ECR repository.
01-25-2022 01:48:54 PM [AppRunner] Starting to pull your application image.

按照其他re:Post问题的建议,我尝试查看源自“ecr.amazonaws.com”的Cloud Trail事件。我有大量的GetAuthorizationToken事件,但是查看它们并没有给我带来太多有趣的信息-它们似乎通过并且使用我期望的角色。

关于权限的一些内容-我正在使用我在创建AWS服务时通过UI创建的默认的AppRunnerECRAccessRole。我正在重用它尝试创建不同的服务。它有一个带有以下JSON的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:DescribeImages",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "*"
        }
    ]
}

有没有针对这个特定场景的其他调试技巧?如果问题1有更通用的建议,我会尽量遵循它。如果可能的话,我想“在与服务器映像所在区域不同的区域创建一个具有相同服务器映像的新服务”(即使这是长期低效的)。

profile picture
专家
已提问 5 个月前31 查看次数
1 回答
0

【以下的回答经过翻译处理】 根据我的观察,这似乎是AppRunner的一个错误或设计问题。

简而言之,我建议您根据需要启用ECR复制。

ECR的登录凭据是区域特定的。

根据CloudTrail日志,您可以看到,AppRunner仅向最初创建AppRunner服务的区域中的ECR API端点发出GetAuthorizationToken API调用。您可以在CloudTrail控制台中更改区域并过滤事件来验证此事实。

该凭据不适用于位于不同区域的ECR存储库,显然AppRunner服务会不断重试API调用以获取新的身份验证凭据,直到达到服务创建超时,约为10分钟。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则