为什么我无法删除请求者托管的 Amazon Virtual Private Cloud (Amazon VPC) 端点?
简短描述
删除接口 VPC 终端节点时,您可能会收到以下错误:
“vpce-0399e6e9fd2f4e430: Operation is not allowed for requester-managed VPC endpoints for the service com.amazonaws.vpce.region.vpce-svc-04c257ad126576358(vpce-0399e6e9e9fd2f4e430:不允许对该服务的请求者托管的 VPC 终端节点进行操作 com.amazonaws.vpce.region.vpce.region.vpce-04c-04c257ad126576358)”
如果要删除的终端节点是请求者托管的 VPC 终端节点,则会发生此错误。请求者托管的终端节点由任何 AWS 托管的服务(例如 Amazon Aurora Serverless)创建。要删除此类端点,您必须确定创建端点的 AWS 托管服务。确定服务后,必须先删除该资源,然后才能删除端点。
解决方法
要验证哪个 AWS 托管服务创建了终端节点,请执行以下操作:
如果终端节点是在 90 天内创建的
如果终端节点是在您尝试删除终端节点后的 90 天内创建的,请使用 AWS CloudTrail 来确定创建它的服务。确保将 CloudTrail 控制台视图设置为记录的 API 活动(管理事件)的最近 90 天。
要查看 CloudTrail 事件,请执行以下操作:
1. 打开 CloudTrail 控制台。
2. 在导航窗格中,选择事件历史记录。
3. 从下拉列表中选择 Resource(资源)名称,然后在筛选条件中添加 VPC 端点 ID(例如 vpce-xxxxxx)。
4. 查找 CreateVpcEndpoint API 调用并检查用户名。对于由 Aurora Serverless 创建的终端节点,用户名显示为 RDSAuroraServeless。对于由 Amazon Relational Database Service (Amazon RDS) Proxy 创建的端点,用户名显示为 RDSSlrAssumptionSession。要确定 AWS Network Firewall 创建的端点,请查看 CreateVpcEndpoint API 调用的事件记录,并检查键值为 Firewall(防火墙)和 AWSNetworkFirewallManaged 的标签:
"Tag": [
{
"Value": ""arn:aws:network-firewall:<region>:<account number>:firewall/<firewall name>",
"tag": 1,
"Key": "Firewall"
},
{
"Value": true,
"tag": 2,
"Key": "AWSNetworkFirewallManaged"
}
如果端点的时间超过 90 天
要确定 AWS Network Firewall 是否创建了终端节点,请执行以下操作
1. 打开 VPC 控制台,然后选择 Endpoints(终端节点)。
2. 选择终端节点,然后选择 Tags(标签)。
3. 检查以下事项:
- Key(键)是 AWSNetworkFirewallManaged,Value(值)是 True。
- Key(键)是 Firewall(防火墙),Value(值)是您的 Network Firewall ARN arn:aws:network-firewall:region:account number:firewall/firewall 名称。
您还可以通过执行以下操作查看 AWS Network Firewall 创建的端点:
1. 打开 VPC 控制台,然后选择 Firewalls(防火墙)。
2. 选择 Firewall details(防火墙详细信息)。
要确定 Aurora Serverless 是否创建了终端节点,请执行以下操作:
如果请求者托管的接口终端节点是由 Aurora Serverless 在 90 天后创建的,请对现有 Aurora Serverless 数据库的终端节点执行名称查找。这会将别名记录作为 VPC 接口终端节点 DNS 名称返回。您可以使用它来确认终端节点是否由 Aurora Serverless 创建。
例如,您有一个无法删除的 ID 为 vpce-0013b47d434ae7786 的接口 VPC 终端节点。要验证 Aurora Serverless 是否创建了终端节点,请执行以下操作:
1. 在 Aurora Serverless 终端节点上执行名称查找:
dig test1.proxy-chnis5vssnuj.us-east-1.rds.amazonaws.com +short
vpce-0ce9fdcdd4aa4097e-1hbywnw6.vpce-svc-0b2f119acb23c050e.us-east-1.vpce.amazonaws.com.
172.31.4.218
172.31.21.82
2. 检查与您尝试删除的终端节点的 DNS 名称匹配的记录的别名记录值。这确认了此终端节点是由 Aurora Serverless 创建的。
**注意:**要验证终端节点的 DNS 名称,请执行以下操作:
1. 打开 VPC 控制台,然后选择Endpoints(终端节点)。
2. 选择 Details(详细信息)选项卡并查看列出的 DNS names(DNS 名称)。
要确定 RDS Proxy 是否创建了终端节点,请执行以下操作:
完成前面为 Aurora Serverless 提供的步骤。如果有多个 RDS Proxy 和 Aurora 无服务器端点,请对每个端点重复这些步骤。
要确定是否为 RedShift 管理的 VPC 端点,请执行以下操作:
1. 打开 Amazon Redshift console(Amazon Redshift 控制台),请选择 Configurations(配置)。
2. 检查在 Redshift-managed VPC 端点下是否配置了任何端点。
删除服务
确定创建端点的服务后,删除该服务(和相应的端点)。
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。