Skip to content

什么是接入点?

S3接入点是S3桶的专用访问入口,可以理解为:

类比:如果S3桶是一栋大楼,传统方式是只有一个大门(桶策略),所有人都从这里进出。接入点则是为不同部门开设的专用侧门,每个门有独立的门禁规则。

官方文档S3 Access Points

每个接入点提供:

  • 独立的DNS名称arn:aws:s3:region:account-id:accesspoint/access-point-name
  • 独立的访问策略:与桶策略分离
  • 独立的网络控制:可限制VPC访问
  • 独立的IAM权限:精细化权限管理

场景1:多团队共享桶(最常见)

Section titled “场景1:多团队共享桶(最常见)”

问题:一个S3桶被多个团队使用,桶策略变得复杂难维护。

传统方式痛点

{
"Statement": [
{"Effect": "Allow", "Principal": "team-a", "Action": "s3:GetObject", "Resource": "bucket/team-a/*"},
{"Effect": "Allow", "Principal": "team-b", "Action": "s3:PutObject", "Resource": "bucket/team-b/*"},
{"Effect": "Allow", "Principal": "team-c", "Action": "s3:*", "Resource": "bucket/team-c/*"}
// 策略越来越长,难以管理
]
}

使用接入点方案

桶:shared-data-bucket
├── 接入点1:team-a-ap(只读team-a/目录)
├── 接入点2:team-b-ap(读写team-b/目录)
└── 接入点3:team-c-ap(完全控制team-c/目录)

每个团队使用专属接入点,互不干扰。

问题:需要让其他AWS账户访问您的S3数据,但不想开放整个桶。

方案

  • 为合作伙伴创建专用接入点
  • 仅授权访问特定前缀
  • 合作关系结束时直接删除接入点,无需修改桶策略

场景3:VPC内网访问(安全增强)

Section titled “场景3:VPC内网访问(安全增强)”

问题:敏感数据不希望通过公网访问S3。

方案

创建VPC专用接入点
仅允许特定VPC访问
数据传输不经过公网

配置示例

  • 接入点网络来源:VPC only
  • 指定VPC ID:vpc-xxxxx
  • 流量通过VPC Endpoint传输

场景描述

数据湖桶:analytics-data
├── /raw/ - 数据工程师读写
├── /processed/ - 数据分析师只读
├── /sensitive/ - 合规团队专用
└── /archive/ - 所有人只读

接入点方案

  • data-engineer-ap:读写 /raw/ 和 /processed/
  • analyst-ap:只读 /processed/
  • compliance-ap:完全控制 /sensitive/
  • archive-ap:所有人只读 /archive/

场景:多个微服务共享一个S3桶。

优势

  • 每个服务使用独立接入点
  • 服务A故障不影响服务B的访问
  • 方便审计每个服务的访问日志
aws s3control create-access-point \
--account-id 123456789012 \
--name team-a-access-point \
--bucket shared-data-bucket \
--vpc-configuration VpcId=vpc-xxxxx
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::123456789012:role/TeamARole"},
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:ap-southeast-1:123456789012:accesspoint/team-a-access-point/object/team-a/*"
]
}]
}
import boto3
# 使用接入点访问
s3 = boto3.client('s3')
s3.get_object(
Bucket='arn:aws:s3:ap-southeast-1:123456789012:accesspoint/team-a-access-point',
Key='team-a/data.csv'
)

优势

  • 简化复杂桶策略管理
  • 权限隔离更清晰
  • 支持VPC内网访问
  • 便于审计和监控
  • 不影响现有应用(桶直接访问仍可用)

劣势

  • 增加配置复杂度(小型项目不适用)
  • 接入点有配额限制(每个桶最多10,000个接入点)
  • 需要更新应用程序使用接入点ARN
  • VPC接入点需配合VPC Endpoint使用

成本

  • 接入点本身免费
  • 数据传输费用与直接访问桶相同
  • VPC Endpoint有小额费用(约$0.01/小时 + 数据处理费)
  • 单一应用访问单一桶
  • 简单的权限需求(IAM策略即可满足)
  • 小型项目或个人使用
  • 不需要跨账户或跨VPC访问

总结:S3接入点是企业级权限管理工具,适合多团队、跨账户、高安全要求的场景。对于简单应用场景,传统的桶策略 + IAM策略已足够。