View a markdown version of this page

排除连接故障 - 开发工具控制台

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

排除连接故障

以下信息可以帮助您解决 AWS CodeBuild AWS CodeDeploy、和中资源连接的常见问题 AWS CodePipeline。

我无法创建连接

您可能无权创建连接。有关更多信息,请参阅 的权限和示例AWS CodeConnections。

当我尝试创建或完成连接时出现权限错误

当你尝试在 CodePipeline 控制台中创建或查看连接时,可能会返回以下错误消息。

用户:username无权permission在资源上执行:connection-ARN

If this message appears, make sure that you have sufficient permissions.(用户:username 无权对资源:connection-ARN 执行操作:permission。如果出现此消息,请确保您有足够的权限。)

在 AWS Command Line Interface (AWS CLI) 或中创建和查看连接的权限 AWS 管理控制台 只是您在控制台上创建和完成连接所需的权限的一部分。只执行查看、编辑或创建连接,然后完成待处理连接所需的权限,应该分配给仅需执行某些任务的用户。有关更多信息,请参阅 的权限和示例AWS CodeConnections。

当我尝试使用连接时出现权限错误

如果您尝试在 CodePipeline 控制台中使用连接,即使您有权列出、获取和创建权限,也可能会返回以下一条或两条错误消息。

您无法对您的账户进行身份验证。

用户:无权username在资源上执行:codestar-connections: UseConnection connection-ARN

If this occurs, make sure that you have sufficient permissions. (您帐户的身份验证失败。用户:username 无权对资源:connection-ARN 执行:codestar-connections:UseConnection。如出现此消息,请确保您有足够的权限。)

Make sure you have the permissions to use a connection, including listing the available repositories in the provider location。有关更多信息,请参阅 的权限和示例AWS CodeConnections。

Connection is not in available state or is no longer pending (确保您具有使用连接的权限,包括在提供程序位置列出可用存储库。连接不处于可用状态或不再处于待处理状态)

如果控制台显示连接不处于可用状态的消息,请选择 Complete connection (完成连接)。

如果选择完成连接,并显示一条消息,指出连接未处于待处理状态,则可以取消请求,因为连接已处于可用状态。

如果您与 GitHub 企业服务器的连接通过代理或防火墙通过公共互联网连接,则被阻止的安装 Webhook 可能会使连接处于该Pending状态。 AWS 请参阅GitHub 企业服务器连接处于待处理状态(出站代理或防火墙阻止安装 Webhook)。

为连接添加 GitClone 权限

当您在源操作和操作中使用 AWS CodeStar 连接时 CodeBuild ,可以通过两种方式将输入构件传递给构建:

  • 默认值:源操作生成一个包含 CodeBuild下载代码的 zip 文件。

  • Git 克隆:源代码可以直接下载到构建环境中。

    Git 克隆模式允许您将源代码作为工作 Git 存储库进行交互。要使用此模式,必须向您的 CodeBuild 环境授予使用连接的权限。

要向您的 CodeBuild 服务角色策略添加权限,您需要创建附加到 CodeBuild 服务角色的客户管理策略。以下步骤会创建一个策略,其中 UseConnection 权限在 action 字段中指定,而 Amazon Resource Name (ARN) 在 Resource 字段中指定。

使用控制台添加 UseConnection 权限
  1. 要查找管道的连接 ARN,请打开管道,然后在源操作中选择 (i) 图标。配置窗格打开,连接 ARN 显示在旁边。 ConnectionArn 您将连接 ARN 添加到您的 CodeBuild 服务角色策略中。

  2. 要查找您的 CodeBuild 服务角色,请打开管道中使用的构建项目,然后导航到构建详细信息选项卡。

  3. 在 Environment (环境) 部分,选择 Service role (服务角色) 链接。这将打开 AWS Identity and Access Management (IAM) 控制台,您可以在其中添加授予连接访问权限的新策略。

  4. 在 IAM 控制台中,选择 Attach policies (附加策略),然后选择 Create policy (创建策略)。

    使用以下示例策略模板。将您的连接 ARN 添加到 Resource 字段,如此示例中所示。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codestar-connections:UseConnection", "Resource": "arn:aws:iam::*:role/Service*" } ] }

    在存储库的 JSON 选项卡上,粘贴您的策略。

  5. 选择查看策略。为策略输入名称(例如 connection-permissions),然后选择 Create policy (创建策略)。

  6. 返回到服务角色 Attach Permissions (附加权限) 页面上,刷新策略列表,然后选择您刚才创建的策略。选择附加策略。​

主机不处于可用状态

如果控制台显示一条消息,指出主机不处于 Available 状态,则选择 Set up host (设置主机)。

创建主机的第一步将导致创建的主机现在处于 Pending 状态。将主机变为 Available 状态时,必须选择在控制台中设置主机。有关更多信息,请参阅 设置待处理的主机。

注意

您不能使用 AWS CLI 来设置Pending主机。

故障排查有连接错误的主机

如果底层 GitHub 应用程序被删除或修改,连接和主机可能会进入错误状态。无法恢复处于错误状态的主机和连接,必须重新创建主机。

  • 更改应用程序 pem 密钥、更改应用名称(初始创建后)等操作将导致主机和所有相关连接变为错误状态。

如果控制台或 CLI 返回 Error 状态的主机或与此类主机相关的连接,您可能需要执行以下步骤:

  • 删除并重新创建主机资源,然后重新安装主机注册应用程序。有关更多信息,请参阅 创建主机。

注意

如果连接由于 AWS 未收到安装的 webhook 而保持PendingError状态(而不是状态),则可以在不删除主机或连接的情况下恢复该连接。请参阅GitHub 企业服务器连接处于待处理状态(出站代理或防火墙阻止安装 Webhook)。

我无法为主机创建连接

要创建连接或主机,必须满足以下条件。

  • 您的主机必须处于 AVAILABLE (可用) 状态。有关更多信息,请参阅

  • 连接必须在与主机相同的区域中创建。

对主机的 VPC 配置进行故障排查

创建主机资源时,必须为安装 GitHub 企业服务器实例的基础设施提供网络连接或 VPC 信息。要对主机的 VPC 或子网配置进行故障排查,请使用此处显示的示例 VPC 信息作为参考。

注意

使用本节进行与 Amazon VPC 内的 GitHub 企业服务器主机配置相关的故障排除。有关与配置为使用 VPC 的 webhook 终端节点 (PrivateLink) 的连接相关的故障排除,请参阅对 GitHub 企业服务器连接的 webhook VPC 终端节点 (PrivateLink) 进行故障排除。

在本示例中,您将使用以下过程来配置将安装 GitHub 企业服务器实例的 VPC 和服务器:

注意

每个 VPC 一次只能与一台主机(GitHub 企业服务器实例)关联。

下图显示了使用 GitHub 企业 AMI 启动的 EC2 实例。

显示实例描述的控制台屏幕截图

当您使用 VPC 进行 GitHub 企业服务器连接时,在设置主机时必须为基础设施提供以下内容:

  • VPC ID:安装 GitHub企业服务器实例的服务器的 VPC 或可通过 VPN 或直接连接访问您安装的 GitHub企业服务器实例的 VPC。

  • 一个或多个子网 ID:安装 GitHub 企业服务器实例的服务器的子网或可通过 VPN 或 Direct Connect 访问已安装的 GitHub 企业服务器实例的子网。

  • 一个或多个安全组:安装 GitHub 企业服务器实例的服务器的安全组,或可通过 VPN 或 Direct Connect 访问已安装的 GitHub 企业服务器实例的安全组。

  • 终端节点:准备好您的服务器终端节点,并继续下一步。

有关使用 VPC 和子网的更多信息,请参阅 Amazon VPC 用户指南中的 为 IPv4 进行 VPC 和子网定型。

我无法获取处于待处理状态的主机

如果您的主机进入 VPC_CONFIG_FAILED_INITIALIZATION 状态,这很可能是因为您为主机选择的 VPC、子网或安全组存在问题。

  • VPC、子网和安全组必须全部属于创建主机的账户。

  • 子网和安全组必须属于所选 VPC。

  • 每个提供的子网必须位于不同的可用区。

  • 创建主机的用户必须具有以下 IAM 权限:

    ec2:CreateNetworkInterface ec2:CreateTags ec2:DescribeDhcpOptionsec2:DescribeNetworkInterfaces ec2:DescribeSubnets ec2:DeleteNetworkInterface ec2:DescribeVpcs ec2:CreateVpcEndpoint ec2:DeleteVpcEndpoints ec2:DescribeVpcEndpoints

我无法获取处于可用状态的主机

如果您无法完成主机的 CodeConnections 应用程序设置,可能是因为您的 VPC 配置或 GitHub 企业服务器实例存在问题。

  • 如果您不使用公共证书颁发机构,则需要向您的主机提供 GitHub 企业实例使用的 TLS 证书。TLS 证书值应该是证书的公有密钥。

  • 您需要成为 GitHub 企业服务器实例的管理员才能创建 GitHub 应用程序。

我 connection/host 正在工作,现在已经停止工作了

如果以前可以运行但现在无法运行,则可能是由于您的 VPC 配置更改或 GitHub 应用程序已被修改所致。 connection/host 请检查以下事项:

  • 连接到您为连接创建的主机资源的安全组现已更改或不再具有访问 GitHub 企业服务器的权限。 CodeConnections 需要一个能够连接到 GitHub 企业服务器实例的安全组。

  • DNS 服务器 IP 最近发生了更改。您可以通过检查连接到您为连接创建的主机资源中指定的 VPC 的 DHCP 选项来验证这一点。请注意,如果您最近从 AmazonProvided DNS 迁移到自定义 DNS 服务器或开始使用新的自定义 DNS 服务器,则 host/connection 它将停止工作。为了解决这个问题,请删除您现有的主机并重新创建它,这将在我们的数据库中存储最新的 DNS 设置。

  • 网络 ACL 设置已更改,不再允许通过 HTTP 连接到您的 GitHub 企业服务器基础架构所在子网。

  • GitHub 企业服务器上该 CodeConnections 应用程序的任何配置都已更改。修改任何配置(例如 URL 或应用程序密钥)都可能会中断已安装的 GitHub 企业服务器实例和之间的连接 CodeConnections。

我无法删除我的网络接口

如果无法检测到网络接口,请确认以下内容:

  • CodeConnections 只能通过删除主机来删除由创建的网络接口。用户不能手动删除它们。

  • 您必须拥有以下权限:

    ec2:DescribeNetworkInterfaces ec2:DeleteNetworkInterface

对 GitHub 企业服务器连接的 webhook VPC 终端节点 (PrivateLink) 进行故障排除

当您创建具有 VPC 配置的主机时,会为您创建 Webhook VPC 终端节点。

注意

使用本节进行与您的连接相关的故障排除,该连接配置为使用适用于 VPC 的 Webhook 终端节点 (PrivateLink)。有关与 Amazon VPC 中的 GitHub 企业服务器主机配置相关的故障排除,请参阅对主机的 VPC 配置进行故障排查。

当您创建与已安装提供商类型的连接时,您已指定在 VPC 中配置服务器,然后 AWS CodeConnections 创建主机,并为您创建 Webhook 的 VPC 终端节点 (PrivateLink)。这使主持人能够通过 webhook 通过亚马逊网络将事件数据发送到您的集成 AWS 服务。有关更多信息,请参阅 AWS CodeConnections 和接口 VPC 终端节点 (AWS PrivateLink)。

我无法删除我的 Webhook VPC 终端节点

AWS CodeConnections 管理您的主机的 webhook VPC 终端节点的生命周期。要删除终端节点,您必须删除相应的主机资源。

  • CodeConnections 只能通过删除主机来删除由创建的 Webhook VPC 终端节点 (PrivateLink)。无法手动删除它们。

  • 您必须拥有以下权限:

    ec2:DescribeNetworkInterfaces ec2:DeleteNetworkInterface

GitHub 企业服务器连接处于待处理状态(出站代理或防火墙阻止安装 Webhook)

当您创建通过公共互联网访问的 GitHub 企业服务器连接时,您的 GitHub 企业服务器实例必须向发送一次性的 installation.created webhook。 AWS AWS您的实例在您安装 GitHub 应用程序后发送此 webhook,并且仅在收到 webhook 时 AWS 注册应用程序安装。如果 GitHub 企业服务器实例前的出站代理或防火墙阻止了该请求,则 AWS 永远不要注册安装,也无法完成连接。

症状

  • 您的主机到达该Available状态, GitHub 应用程序成功安装在 GitHub 企业服务器上,但连接仍处于该Pending状态。

  • 使用连接时, AWS 会返回以下错误:

    ProviderResourceNotFoundException: 安装id不存在

此错误表示它 AWS 没有收到安装 webhook,因此从未注册过安装。这并不意味着安装 ID 无效。

解决方法

  1. 允许从您的 GitHub 企业服务器实例(包括通过任何代理或防火墙)到您所在 AWS 地区的 CodeConnections Webhook 终端节点的出站 HTTPS(端口 443):。https://region.codestar-connections.webhooks.aws/region替换为您的主机和连接的 AWS 区域。例如,在美国东部(弗吉尼亚北部)区域:https://us-east-1.codestar-connections.webhooks.aws/。如果您的代理支持通配符并且您使用多个区域,则可以允许https://*.codestar-connections.webhooks.aws/。

    注意

    当您安装应用程序时,您的 GitHub 企业服务器实例仅发送一次 installation.created Webhook。允许终端节点后,必须使用以下选项之一重新发送 webhook。仅允许该端点并不能完成已处于该Pending状态的连接。

  2. Re-send 使用以下选项之一进行安装 webhook。您无需删除主机或连接即可恢复处于该Pending状态的连接。

    选项 1:重新交付失效的 webhook(推荐)
    1. 在 GitHub 企业服务器中,以应用程序所有者的身份打开应用程序的高级设置。从个人资料照片的下拉列表中,选择 “设置” 。选择 “开发者设置”,然后选择 “GitHub 应用程序” 。在应用程序列表中,为您的连接选择应用程序的名称(默认应用程序名称为 AWS;如果您在创建连接时选择了其他名称,请改为选择该名称),然后选择 “高级” 。

    2. 在 “最近交付” 下,找到失败的installation.created配送并将其展开。

    3. 选择 “重新交付”,然后确认现在交付成功。

    4. 返回 AWS 控制台中的连接,然后选择 “更新待连接” 以完成设置。

    选项 2:重新安装 GitHub 应用程序
    1. 在 GitHub 企业服务器中,打开组织中已安装的应用程序。选择组织的 “设置”,然后选择 “已安装的 GitHub 应用程序” 。

    2. 对于该 CodeConnections 应用程序,选择 “配置”,然后选择 “卸载” 。

    3. 返回 AWS 控制台中的连接,然后选择 “更新待连接” 。完成该流程会重新安装应用程序并发送一个全新的安装 webhook。

注意

本部分适用于通过公共互联网连接的主机。如果您的主机配置在亚马逊 VPC 内,则改为通过 VPC 终端节点 (PrivateLink) 传输 webhook。有关该配置,请参阅对 GitHub 企业服务器连接的 webhook VPC 终端节点 (PrivateLink) 进行故障排除。

对 2020 年 11 月 24 日之前创建的主机进行故障排查

从 2020 年 11 月 24 日起,在 AWS CodeConnections 设置主机时,将为您设置额外的 VPC 终端节点 (PrivateLink) 支持。对于在此更新之前创建的主机,请使用此故障排查内容。

有关更多信息,请参阅 AWS CodeConnections 和接口 VPC 终端节点 (AWS PrivateLink)。

我有一台在 2020 年 11 月 24 日之前创建的主机,我想将 VPC 终端节点 (PrivateLink) 用于 webhook

当您为 GitHub 企业服务器设置主机时,将为您创建 webhook 终端节点。连接现在使用 VPC PrivateLink webhook 终端节点。如果您在 2020 年 11 月 24 日之前创建了主机,并且想要使用 VPC PrivateLink webhook 终端节点,则必须先https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-host-delete.html删除主机,然后https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-host-create.html创建新主机。

我无法获取处于可用状态的主机(VPC 错误)

如果您的主机是在 2020 年 11 月 24 日之前创建的,并且您无法完成主机的 CodeConnections 应用程序设置,则可能是由于您的 VPC 配置或 GitHub 企业服务器实例存在问题。

您的 VPC 需要一个 NAT 网关(或出站互联网接入),以便您的 GitHub企业服务器实例可以为 GitHub webhook 发送出口网络流量。

无法为 GitHub 存储库创建连接

问题:

由于与 GitHub 仓库的连接使用 AWS 连接器 GitHub,因此您需要组织所有者权限或仓库管理员权限才能创建连接。

可能的修复:有关 GitHub 仓库权限级别的信息,请参阅 https://docs.github.com/en/free-pro-team @ latest/github /设置和管理组织和--levels-for-an-an-an-teams/permission organizations。

编辑您的 GitHub 企业服务器连接应用程序权限

如果您在 2020 年 12 月 23 日当天或之前安装了 GitHub 企业服务器应用程序,则可能需要向组织成员授予该应用程序 Read-only 访问权限。如果您是 GitHub 应用程序所有者,请按照以下步骤编辑创建主机时安装的应用程序的权限。

注意

您必须在 GitHub 企业服务器实例上完成这些步骤,并且必须是 GitHub 应用程序所有者。

  1. 在 GitHub 企业服务器中,从个人资料照片的下拉选项中选择设置。

  2. 选择 “开发者设置”,然后选择 “GitHub应用程序” 。

  3. 在应用程序列表中,为您的连接选择应用程序的名称,然后在设置显示中选择 Permissions and events (权限和事件)。

  4. 在 “组织权限” 下,Read-only从 “成员” 下拉列表中选择。

    组织权限界面显示成员设置为 Read-only 访问级别。
  5. 在 Add a note to users (向用户添加注释) 下,添加更新原因的说明。选择保存更改。

连接时出现连接错误 GitHub:“出现问题,请确保在浏览器中启用 Cookie” 或 “组织所有者必须安装 GitHub 应用程序”

问题:

要为 GitHub 仓库创建连接,您必须是 GitHub 组织所有者。对于不属于组织的存储库,您必须是存储库拥有者。当连接由非组织拥有者的其他用户创建时,将针对组织拥有者创建请求,并显示以下错误之一:

出现问题,请确保在浏览器中启用 Cookie

或

组织所有者必须安装该 GitHub 应用程序

可能的修复:对于 GitHub组织中的仓库,组织所有者必须创建与 GitHub 仓库的连接。对于不属于组织的存储库,您必须是存储库拥有者。

可能需要针对 IAM 策略更新资源中的连接服务前缀

2024 年 3 月 29 日,该服务从 AWS CodeStar Connections 重命名为 AWS CodeConnections。从 2024 年 7 月 1 日起,控制台将在资源 ARN codeconnections 中创建与的连接。带有两个服务前缀的资源将继续显示在控制台中。使用控制台创建的资源的服务前缀是codeconnections。新 SDK/CLI 资源是在资源 ARN codeconnections 中创建的。创建的资源将自动使用新的服务前缀。

以下是在中创建的资源 AWS CodeConnections:

  • 连接

  • 主机

问题:

在 ARN codestar-connections 中使用创建的资源不会自动重命名为资源 ARN 中的新服务前缀。创建新资源将创建具有连接服务前缀的资源。但是,带有codestar-connections服务前缀的 IAM 策略不适用于带有新服务前缀的资源。

可能的修复:为避免资源的访问或权限问题,请完成以下操作:

  • 更新新服务前缀的 IAM 政策。否则,重命名或创建的资源将无法使用 IAM 策略。

  • 通过使用控制台或创建新服务前缀的资源来更新这些资源 CLI/CDK/CFN。

酌情更新政策中的操作、资源和条件。在以下示例中,两个服务前缀的Resource字段均已更新。

JSON
{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "codeconnections:UseConnection" ], "Resource": [ "arn:aws:codestar-connections:*:*:connection/*", "arn:aws:codeconnections:*:*:connection/*" ] } }

由于使用控制台创建的资源中有服务前缀,导致权限错误

当前,使用控制台创建的连接资源将仅具有codestar-connections服务前缀。对于使用控制台创建的资源,策略声明操作必须包含codestar-connections为服务前缀。

注意

从 2024 年 7 月 1 日起,控制台将在资源 ARN codeconnections 中创建与的连接。带有两个服务前缀的资源将继续显示在控制台中。

问题:

使用控制台创建连接资源时,必须在策略中使用codestar-connections服务前缀。使用策略中带有codeconnections服务前缀的策略时,使用控制台创建的连接资源会收到以下错误消息:

User: user_ARN is not authorized to perform: codestar-connections:action on resource: resource_ARN because no identity-based policy allows the codestar-connections:action action

可能的修复:对于使用控制台创建的资源,策略声明操作必须包含codestar-connections为服务前缀,如中的策略示例所示示例:用于创建的策略AWS CodeConnections使用控制台。

已安装的提供商支持组织的连接和主机设置

对于支持组织的已安装提供商,例如 GitHub 组织,您无需传递可用的主机。您可以为组织中的每个连接创建一个新主机,并确保在以下网络字段中输入相同的信息:

  • - VPC ID

  • 子网 ID

  • 安全组 ID

请参阅创建 GHES 连接或GitLab 自管理连接的相关步骤。

我想提高连接的限制

您可以申请提高某些限额的限额 CodeConnections。有关更多信息,请参阅 连接的配额。