本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排除连接故障
以下信息可以帮助您解决 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 权限
-
要查找管道的连接 ARN,请打开管道,然后在源操作中选择 (i) 图标。配置窗格打开,连接 ARN 显示在旁边。 ConnectionArn 您将连接 ARN 添加到您的 CodeBuild 服务角色策略中。
-
要查找您的 CodeBuild 服务角色,请打开管道中使用的构建项目,然后导航到构建详细信息选项卡。
-
在 Environment (环境) 部分,选择 Service role (服务角色) 链接。这将打开 AWS Identity and Access Management (IAM) 控制台,您可以在其中添加授予连接访问权限的新策略。
-
在 IAM 控制台中,选择 Attach policies (附加策略),然后选择 Create policy (创建策略)。
使用以下示例策略模板。将您的连接 ARN 添加到
Resource字段,如此示例中所示。在存储库的 JSON 选项卡上,粘贴您的策略。
-
选择查看策略。为策略输入名称(例如
connection-permissions),然后选择 Create policy (创建策略)。 -
返回到服务角色 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。有关更多信息,请参阅 https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC。
-
在您的 VPC 中创建子网。有关更多信息,请参阅 https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet。
-
将实例启动到 VPC 中。有关更多信息,请参阅 https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#VPC_Launch_Instance。
注意
每个 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 无效。
解决方法
-
允许从您的 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.createdWebhook。允许终端节点后,必须使用以下选项之一重新发送 webhook。仅允许该端点并不能完成已处于该Pending状态的连接。 -
Re-send 使用以下选项之一进行安装 webhook。您无需删除主机或连接即可恢复处于该
Pending状态的连接。选项 1:重新交付失效的 webhook(推荐)
-
在 GitHub 企业服务器中,以应用程序所有者的身份打开应用程序的高级设置。从个人资料照片的下拉列表中,选择 “设置” 。选择 “开发者设置”,然后选择 “GitHub 应用程序” 。在应用程序列表中,为您的连接选择应用程序的名称(默认应用程序名称为 AWS;如果您在创建连接时选择了其他名称,请改为选择该名称),然后选择 “高级” 。
-
在 “最近交付” 下,找到失败的
installation.created配送并将其展开。 -
选择 “重新交付”,然后确认现在交付成功。
-
返回 AWS 控制台中的连接,然后选择 “更新待连接” 以完成设置。
选项 2:重新安装 GitHub 应用程序
-
在 GitHub 企业服务器中,打开组织中已安装的应用程序。选择组织的 “设置”,然后选择 “已安装的 GitHub 应用程序” 。
-
对于该 CodeConnections 应用程序,选择 “配置”,然后选择 “卸载” 。
-
返回 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 应用程序所有者。
-
在 GitHub 企业服务器中,从个人资料照片的下拉选项中选择设置。
-
选择 “开发者设置”,然后选择 “GitHub应用程序” 。
-
在应用程序列表中,为您的连接选择应用程序的名称,然后在设置显示中选择 Permissions and events (权限和事件)。
-
在 “组织权限” 下,Read-only从 “成员” 下拉列表中选择。
-
在 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字段均已更新。
由于使用控制台创建的资源中有服务前缀,导致权限错误
当前,使用控制台创建的连接资源将仅具有codestar-connections服务前缀。对于使用控制台创建的资源,策略声明操作必须包含codestar-connections为服务前缀。
注意
从 2024 年 7 月 1 日起,控制台将在资源 ARN codeconnections 中创建与的连接。带有两个服务前缀的资源将继续显示在控制台中。
问题:
使用控制台创建连接资源时,必须在策略中使用codestar-connections服务前缀。使用策略中带有codeconnections服务前缀的策略时,使用控制台创建的连接资源会收到以下错误消息:
User:user_ARNis not authorized to perform: codestar-connections:actionon resource:resource_ARNbecause no identity-based policy allows the codestar-connections:actionaction
可能的修复:对于使用控制台创建的资源,策略声明操作必须包含codestar-connections为服务前缀,如中的策略示例所示示例:用于创建的策略AWS CodeConnections使用控制台。
已安装的提供商支持组织的连接和主机设置
对于支持组织的已安装提供商,例如 GitHub 组织,您无需传递可用的主机。您可以为组织中的每个连接创建一个新主机,并确保在以下网络字段中输入相同的信息:
-
- VPC ID
-
子网 ID
-
安全组 ID
请参阅创建 GHES 连接或GitLab 自管理连接的相关步骤。
我想提高连接的限制
您可以申请提高某些限额的限额 CodeConnections。有关更多信息,请参阅 连接的配额。