HTML 양식 생성(AWS 서명 버전 4 사용)
사용자가 브라우저(HTTP POST 요청)를 사용하여 Amazon S3에 콘텐츠를 업로드할 수 있도록 하려면 HTML 양식을 사용합니다. HTML 양식은 양식 선언과 양식 필드로 구성됩니다. 양식 선언은 요청에 대한 상위 수준 정보를 포함합니다. 양식 필드에는 자세한 요청 정보가 포함됩니다.
이 섹션에서는 HTML 양식을 생성하는 방법을 설명합니다. HTTP POST를 사용한 브라우저 기반 업로드 및 요청 인증을 위한 관련 서명 계산의 작동 예제는 예제: HTTP POST를 사용한 브라우저 기반 업로드(AWS 서명 버전 4 사용) 섹션을 참조하세요.
양식과 정책은 UTF-8로 인코딩되어야 합니다. content 속성에서 charset=UTF-8을 지정하여 양식에 UTF-8 인코딩을 적용할 수 있습니다. 다음은 HTML 헤딩의 UTF-8 인코딩 예제입니다.
<html> <head> ... <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ... </head> <body>
다음은 요청 헤더의 UTF-8 인코딩 예제입니다.
Content-Type: text/html; charset=UTF-8
참고
양식 데이터 및 경계(파일의 내용 제외)는 20KB를 초과할 수 없습니다.
HTML 양식 선언
HTML 양식 선언에는 다음과 같은 세 가지 속성이 있습니다.
-
action- 요청을 처리하는 URL로, 버킷의 URL로 설정되어야 합니다. 예를 들어 버킷의 이름이examplebucket인 경우 URL은http://examplebucket.s3.amazonaws.com/입니다.참고
키 이름은 양식 필드에 지정됩니다.
-
method- 메서드는 POST이어야 합니다. -
enctype- 엔클로저 유형(enctype)은 파일 업로드와 텍스트 영역 업로드 모두에 대해 multipart/form-data로 설정되어야 합니다.enctype에 대한 자세한 내용은 RFC 1867을 참조하세요.
다음은 버킷 examplebucket에 대한 양식 선언입니다.
<form action="http://examplebucket.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
HTML 양식 필드
다음 표에서는 양식 내에서 사용할 수 있는 필드의 목록을 설명합니다. 다른 필드 중에는 요청을 인증하는 데 사용할 수 있는 서명 필드가 있습니다. 서명 계산 알고리즘(x-amz-algorithm), 서명 키를 생성하는 데 사용한 자격 증명 범위(x-amz-credential), 서명을 계산하는 데 사용하는 날짜(x-amz-date)를 지정할 수 있는 필드가 있습니다. Amazon S3는 이 정보를 사용하여 서명을 다시 생성합니다. 서명이 일치하면 Amazon S3가 요청을 처리합니다.
참고
변수 ${filename}은 사용자가 제공한 파일의 이름으로 자동 대체되며 모든 양식 필드가 이 변수를 인식합니다. 브라우저 또는 클라이언트에 파일의 전체 또는 부분 경로가 지정되어 있는 경우 마지막 슬래시(/) 또는 백슬래시(\) 뒤에 오는 텍스트만 사용됩니다(예: C:\Program
Files\directory1\file.txt가 file.txt로 해석됨). 파일이나 파일 이름이 제공되는 경우 변수가 빈 문자열로 대체됩니다.
인증된 요청에 필요한 요소(예: policy 요소)를 제공하지 않으면 요청은 익명으로 간주되고 버킷을 퍼블릭 읽기 및 쓰기로 구성한 경우에만 성공합니다.
| 요소 이름 | 설명 | 필수 |
|---|---|---|
acl |
Amazon S3 ACL(액세스 제어 목록)입니다. 잘못된 ACL이 지정되면 Amazon S3는 요청을 거부합니다. ACL에 대한 자세한 내용은 Amazon S3 ACL 사용을 참조하세요. 유형: 문자열 기본: 프라이빗 유효한 값: |
아니요 |
Cache-Control
|
REST 지정 헤더입니다. 자세한 내용은 PutObject를 참조하세요. |
아니요 |
key |
업로드된 객체의 키 이름입니다. 사용자가 제공한 파일 이름을 사용하려면 ${filename} 변수를 사용합니다. 예를 들어 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 객체 키 및 메타데이터를 참조하세요. |
예 |
policy |
요청에서 허용되는 항목을 설명하는 Base64로 인코딩된 보안 정책입니다. 인증된 요청의 경우 정책은 필수입니다. 보안 정책이 없는 요청은 익명으로 간주되며 공개적으로 쓰기 가능한 버킷에서만 성공합니다. |
인증된 요청의 경우 필수 |
success_action_redirect |
업로드 완료 시 클라이언트가 리디렉션되는 URL입니다.
업로드가 실패하는 경우 Amazon S3는 오류를 반환하고 사용자를 다른 URL로 리디렉션하지 않습니다. |
아니요 |
success_action_status |
유효한 값은 200 또는 204로 값을 설정하는 경우 Amazon S3는 지정된 상태 코드의 빈 문서를 반환합니다. 201로 값을 설정하는 경우 Amazon S3은 상태 코드가 201인 XML 문서를 반환합니다. XML 문서의 내용에 대한 자세한 내용은 POST Object 섹션을 참조하세요. 값이 설정되지 않거나 잘못된 경우 Amazon S3는 상태 코드가 204인 빈 문서를 반환합니다. 참고일부 버전의 Adobe Flash Player는 본문이 비어 있는 HTTP 응답을 올바르게 처리하지 못합니다. Adobe Flash를 통한 업로드를 지원하려면 |
아니요 |
x-amz-algorithm |
요청을 인증하는 데 사용되는 서명 알고리즘입니다. AWS 서명 버전 4의 경우 값은 요청과 함께 정책 문서가 포함되는 경우 이 필드는 필수입니다. |
인증된 요청의 경우 필수 |
x-amz-credential |
이 필드는 액세스 키 ID 외에도 해당 서명이 유효한 리전 및 서비스를 식별하는 범위 정보를 제공합니다. 이는 서명 계산을 위한 서명 키 계산에 사용한 것과 동일한 범위여야 합니다. 이는 다음 형식의 문자열입니다.
예제:
Amazon S3의 경우 aws-service 문자열은 s3입니다. Amazon S3 aws-region 문자열의 목록은 AWS 일반 참조의 리전 및 엔드포인트를 참조하세요. 요청과 함께 정책 문서가 포함되는 경우 이 필드는 필수입니다. |
인증된 요청의 경우 필수 |
x-amz-date |
ISO8601 형식의 날짜 값입니다. 예를 들어 이 값은 서명 키를 생성할 때 사용한 날짜와 동일합니다(예: 20130728). 또한 서명한 정책( 요청과 함께 정책 문서가 포함되는 경우 이 필드는 필수입니다. |
인증된 요청의 경우 필수 |
x-amz-security-token |
Amazon DevPay 및 세션 자격 증명이 사용하는 보안 토큰 요청이 Amazon DevPay를 사용하는 경우 요청에는 제품 토큰과 사용자 토큰에 하나씩 두 개의 요청이 세션 자격 증명을 사용 중인 경우 이 필드에는 하나의 |
아니요 |
x-amz-signature |
(AWS 서명 버전 4) 보안 정책의 HMAC-SHA256 해시입니다. 요청과 함께 정책 문서가 포함되는 경우 이 필드는 필수입니다. |
인증된 요청의 경우 필수 |
x-amz-meta-* |
이 접두사로 시작하는 필드 이름은 사용자 정의 메타데이터입니다. 각 항목은 키-값 페어 세트로 저장되고 반환됩니다. Amazon S3는 사용자 정의 메타데이터를 검증하거나 해석하지 않습니다. 자세한 내용은 PutObject를 참조하세요. |
아니요 |
x-amz-* |
POST 객체를 참조하세요(다른 |
아니요 |
file |
파일 또는 텍스트 콘텐츠입니다. 파일이나 콘텐츠는 양식의 마지막 필드이어야 합니다. 한 번에 파일 하나만 업로드할 수 있습니다. |
예 |
조건부 항목은 인증된 요청의 경우 필수이고 익명 요청의 경우 선택 사항입니다.
이제 양식을 생성하는 방법을 알았으므로 서명할 수 있는 보안 정책을 생성할 수 있습니다. 자세한 내용은 POST 정책 섹션을 참조하세요.