尝试使用 VPC 端点从私有子网承担 AWS sts 角色时请求超时
Request times out when try to assume a role with AWS sts from a private subnet using a VPC Endpoint
当我调用 AWS sts 以在 lambda 函数中担任角色时 运行在 VPC 上的私有子网中为 STS 配置端点。但是,我的请求超时了。
我的设置如下:
- 我 运行 附加到 VPC 中的私有子网和安全组的 lambda
- 因为子网是私有的,所以我配置了一个 VPC 端点来访问
com.amazonaws.eu-west-1.sts
上的 STS
- 我的 lambda 是使用旧的
sdk-for-go
v1 api 用 golang 编写的:https://docs.aws.amazon.com/sdk-for-go/api/
- 我还配置了一个 VPC 端点来访问 S3,它可以正常工作
我的 VPC 端点的 Terraform 配置是:
resource "aws_vpc_endpoint" "xxxx-sts" {
vpc_id = aws_vpc.xxxx.id
service_name = "com.amazonaws.eu-west-1.sts"
vpc_endpoint_type = "Interface"
security_group_ids = [aws_security_group.xxxx.id]
subnet_ids = [aws_subnet.xxxx.id]
private_dns_enabled = true
}
要解决此问题,请将以下 ENV key/value 添加到您的 lambda 或应用程序环境中:
export AWS_STS_REGIONAL_ENDPOINTS='regional'
这会强制 AWS 开发工具包在调用 STS 时使用区域端点而不是全球端点,如下所述:https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html
否则,Go SDK 将默认为 eu-west-1
等区域使用全局 sts 端点 https://sts.amazonaws.com
(这发生在以下区域:ap-northeast-1, ap-south-1, ap-southeast-1, ap-southeast-2, aws-global, ca-central-1, eu-central-1, eu-north-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, and us-west-2
)
STS VPC 端点仅为区域 URL 配置,因此当程序尝试访问私有子网中的全局 URL 时,无法建立连接并超时相反。
当我调用 AWS sts 以在 lambda 函数中担任角色时 运行在 VPC 上的私有子网中为 STS 配置端点。但是,我的请求超时了。
我的设置如下:
- 我 运行 附加到 VPC 中的私有子网和安全组的 lambda
- 因为子网是私有的,所以我配置了一个 VPC 端点来访问
com.amazonaws.eu-west-1.sts
上的 STS
- 我的 lambda 是使用旧的
sdk-for-go
v1 api 用 golang 编写的:https://docs.aws.amazon.com/sdk-for-go/api/ - 我还配置了一个 VPC 端点来访问 S3,它可以正常工作
我的 VPC 端点的 Terraform 配置是:
resource "aws_vpc_endpoint" "xxxx-sts" {
vpc_id = aws_vpc.xxxx.id
service_name = "com.amazonaws.eu-west-1.sts"
vpc_endpoint_type = "Interface"
security_group_ids = [aws_security_group.xxxx.id]
subnet_ids = [aws_subnet.xxxx.id]
private_dns_enabled = true
}
要解决此问题,请将以下 ENV key/value 添加到您的 lambda 或应用程序环境中:
export AWS_STS_REGIONAL_ENDPOINTS='regional'
这会强制 AWS 开发工具包在调用 STS 时使用区域端点而不是全球端点,如下所述:https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html
否则,Go SDK 将默认为 eu-west-1
等区域使用全局 sts 端点 https://sts.amazonaws.com
(这发生在以下区域:ap-northeast-1, ap-south-1, ap-southeast-1, ap-southeast-2, aws-global, ca-central-1, eu-central-1, eu-north-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, and us-west-2
)
STS VPC 端点仅为区域 URL 配置,因此当程序尝试访问私有子网中的全局 URL 时,无法建立连接并超时相反。