S3 버킷 안에 많은 데이터가 존재할 때 이를 효율적으로 액세스하고 관리하기 위해 S3 Access Points(액세스 포인트)를 활용할 수 있다. 액세스 포인트를 사용하면 특정 목적에 맞는 접근 정책을 설정하여 보안성과 유연성을 높일 수 있다.
S3 액세스 포인트는 개별적인 정책을 적용할 수 있는 별도의 엔드포인트 역할을 한다. 이를 통해 여러 애플리케이션 또는 사용자가 대규모 데이터 세트에 쉽게 접근할 수 있다.
VPC 엔드포인트를 활용하면 인터넷을 거치지 않고 내부 네트워크를 통해 안전하게 S3에 접근할 수 있다.
S3 Object Lambda를 활용하면 버킷에서 객체를 가져오기 전에 자동으로 데이터를 수정할 수 있다. 이를 통해 사전 데이터 변환이 가능하며, 클라이언트가 원본 데이터를 변경 없이 사용할 수 있도록 할 수 있다.
S3 Object Lambda를 사용할 때는 반드시 S3 Access Point를 설정해야 한다. 액세스 포인트를 사용하면 요청을 특정 정책을 가진 Lambda 함수로 리디렉션할 수 있으며, 이를 통해 원본 데이터를 변경 없이 다양한 변형을 제공할 수 있다.
S3 Access Points와 S3 Object Lambda를 함께 사용하면 데이터 접근성과 보안성을 동시에 높일 수 있다.
이러한 기능들을 활용하면 클라우드 환경에서 대규모 데이터 세트를 보다 정교하게 관리하고, 성능 및 보안성을 강화할 수 있다.
AWS S3 버킷 안에 대량의 데이터가 존재할 경우, 이를 효율적으로 관리하고 접근을 제어하는 것이 점점 어려워진다. S3 Access Point와 Object Lambda를 활용하면 개별적인 접근 포인트를 생성하여 더 체계적으로 보안 및 접근을 관리할 수 있다.
이 글에서는 S3 Access Point의 개념과 활용 방법, VPC와 연계한 보안 설정, 그리고 Object Lambda를 이용한 데이터 변환에 대해 설명한다.
S3 Access Point는 S3 버킷의 데이터에 접근할 수 있는 별도의 엔드포인트(Endpoint)를 생성하는 기능이다. 대규모 데이터가 존재하는 S3 버킷에서 보다 세밀한 권한 관리 및 네트워크 제어가 가능하다.
✅ 각 Access Point마다 개별적인 정책을 적용 가능
✅ IAM 정책과 연계하여 접근 제어를 세분화
✅ DNS 이름을 통해 개별 엔드포인트를 생성 가능
✅ VPC와 연계하여 Private 네트워크 내에서 S3 접근 가능
기존 S3 정책 방식 | S3 Access Point 방식 |
---|---|
S3 버킷 정책을 직접 수정해야 함 | Access Point마다 개별 보안 정책을 설정 |
IAM 사용자, 역할(Role) 기반의 접근 제어 | 특정 Access Point를 대상으로 IAM 정책을 설정 가능 |
VPC와 연계 시 VPC 엔드포인트 정책을 버킷에 적용해야 함 | Access Point를 VPC 오리진(Origin)과 연결 가능 |
🔹 Access Point를 활용하면 S3 버킷을 직접 제어하는 대신, 더 유연하고 보안성이 높은 접근 제어가 가능하다.
AWS CLI 또는 콘솔을 통해 S3 Access Point를 생성할 수 있다.
aws s3control create-access-point \
--account-id <AWS_ACCOUNT_ID> \
--name my-access-point \
--bucket my-data-bucket
📌 참고: <AWS_ACCOUNT_ID>는 AWS 계정 ID, my-access-point는 Access Point의 이름, my-data-bucket은 대상 S3 버킷이다.
Access Point에 읽기 전용 정책을 설정하여 보안을 강화할 수 있다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point/object/*"
}
]
}
✅ 위 정책을 적용하면, Access Point를 통해 S3 객체를 읽을 수 있지만 수정 및 삭제는 불가능하다.
S3 Access Point는 VPC 오리진(VPC Origin)과 연계하여 Private 네트워크에서만 접근 가능하도록 설정할 수 있다. 이를 활용하면 VPC 내부에서 S3 버킷에 안전하게 접근할 수 있다.
aws s3control create-access-point \
--account-id 123456789012 \
--name my-vpc-access-point \
--bucket my-data-bucket \
--vpc-configuration "VpcId=vpc-0abcdef1234567890"
📌 위 설정을 적용하면, 특정 VPC(vpc-0abcdef1234567890)에서만 S3 Access Point에 접근할 수 있다.
✅ VPC Endpoint 정책을 설정하면, 지정된 VPC 내의 리소스만 S3 Access Point를 통해 데이터를 읽을 수 있다.
S3 Object Lambda를 사용하면 S3 버킷의 객체를 읽기 전에 변환할 수 있는 기능을 제공한다. 즉, S3 Access Point를 활용하여 데이터를 동적으로 수정하고, 사용자에게 변환된 데이터를 제공할 수 있다.
✅ 객체를 읽기 전에 변환 가능 (예: 이미지 크기 조정, 데이터 필터링)
✅ 기존 S3 데이터를 수정하지 않고도 다양한 형식으로 제공 가능
✅ Access Point를 통해 보안 정책과 함께 사용할 수 있음
예를 들어, JSON 데이터에서 특정 필드를 필터링하여 제공할 수 있다.
import json
def lambda_handler(event, context):
s3_object = event["getObjectContext"]["inputS3Url"]
# S3 객체를 다운로드
response = requests.get(s3_object)
data = json.loads(response.text)
# 특정 필드 제거
filtered_data = {key: data[key] for key in data if key != "private_field"}
return {
"statusCode": 200,
"body": json.dumps(filtered_data)
}
✅ 위 코드는 특정 필드를 제거한 데이터를 반환하는 Object Lambda 함수의 예제이다.
개념 | 설명 |
---|---|
S3 Access Point | 개별 엔드포인트를 생성하여 접근 관리 가능 |
IAM 권한 설정 | Access Point마다 개별적인 IAM 정책 적용 가능 |
VPC 오리진과 연계 | Private 네트워크 내부에서만 S3 접근 가능 |
VPC 엔드포인트 | VPC에서 Access Point를 통해 S3에 접근 |
Object Lambda | S3 데이터를 변환하여 반환 가능 |
S3 Access Point와 Object Lambda를 활용하면 대규모 데이터가 존재하는 버킷에서도 보안성과 관리 효율성을 극대화할 수 있다.