aws_s3¶
/usr/local/m2/setting.json
다음 영역에 대해 기술한다.
{
"functions": {
"backend": {
"aws_s3": {
...
}
}
}
}
How to use¶
명령어 리스트¶
aws_s3
함수를 이용한 클라이언트 트랜잭션안에 S3 동작을 연계한다.
지원하는 {command}
는 다음과 같다.
get
S3로부터 콘텐츠를 다운로드한다.put
S3로 콘텐츠를 업로드한다.Note
응답코드가
200 OK
이며Content-Length
가 0보다 큰 경우에만 업로드가 수행된다.delete
S3로부터 콘텐츠를 삭제한다.
{url}/aws_s3/{command}/{endpoint}
이미지를 마이그레이션 하는 등 S3 동작을 단일 트랜잭션으로 연계할 수 있다.
# image.jpg를 캐싱하는 과정에서 newbucket에서 업로드한다.
https://foo.com/image.jpg/aws_s3/put/newbucket
# image.jpg를 캐싱하는 과정에서 oldbucket의 객체를 삭제한다.
https://foo.com/image.jpg/aws_s3/delete/oldbucket
# image.jpg를 mybucket에서 가져온다.
https://foo.com/image.jpg/aws_s3/get/mybucket
# image.jpg를 mybucket에서 가져오며, oldbucket에서 삭제하고, newbucket에 업로드한다.
https://foo.com/image.jpg/aws_s3/get/mybucket/aws_s3/delete/oldbucket/aws_s3/put/newbucket
meta¶
"meta" : {
"enable": false,
"keyword": "aws_s3"
}
enable (기본: false)
AWS S3 모듈 활성화
keyword (기본: aws_s3)
AWS S3 모듈 키워드
log¶
"log": {
"enable": true
}
enable (기본: true)
모듈의 모든 트랜잭션을 origin.log 에 기록한다.
Note
원본
404 Not Found
로 존재하지 않는 파일에 대한PUT
업로드라도 증빙을 위해 로깅한다.
endpoints¶
"endpoints": [
{
"name": "mystorage",
"bucket": "s3-image-origin",
"region": "ap-northeast-2",
"accessKey": "__my_access_key__",
"secretKey": "__my_secret_key__",
"path": { },
"metadata": { },
"options": { },
"tagging": { },
},
{
"name": "oldstorage",
...
}
]
name
프로파일명
bucket
버킷
region
리젼
accessKey (기본: #IAMROLE)
액세스 키
#IAMROLE
인 경우 AWS의IAM 역할
자격 증명을 사용한다.
secretKey (기본: #IAMROLE)
시크릿 키
#IAMROLE
인 경우 AWS의IAM 역할
자격 증명을 사용한다.
Note
IAM 역할
자격증명은 Amazon EC2 환경을 지원한다. 자세한 사항은 다음을 참조한다.
options¶
"options": {
"blocking": false,
"sslEnabled": true,
"overwrite": true,
"inheritContentType": false
}
blocking (기본: false)
업로드 완료 후 응답여부
sslEnabled (기본: true)
SSL 사용
overwrite (기본: true)
덮어쓰기
inheritContentType (기본: false)
업로드시
Content-Type
헤더를 지정하지 않는다.true
라면 원본의Content-Type
헤더를 승계한다.
path¶
"path": {
"src": {
"type": "rewrite",
"urlRewrites" : [
{
"pattern": "/download/(.*)",
"replace": "/#1"
}
],
"code": "..."
},
"dest": {
"type": "rewrite",
"urlRewrites" : [
{
"pattern": "/download/(.*)",
"replace": "/#1"
}
],
"code": "let ct = rs.headers['content-type'];\nif(ct && ct.startsWith('image')..."
}
}
src (기본: null)
원본(다운로드)주소. null이라면 입력된 URL 경로를 그대로 사용한다.
dest (기본: null)
대상(업로드)주소. null이라면 입력된 URL 경로 그대로 업로드한다.
src
, dest
두 설정은 경로를 수정하기 위해 공통 세부설정을 가진다.
"type": "rewrite"
인 경우src.urlRewrites
,dest.urlRewrites
설정을 통해 URL을 수정한다.
"type": "code"
인 경우src.code
,dest.code
설정을 통해 URL을 수정한다.
"type": "argument"
hooking 모듈등 사전에 정의된 헤더로 입력받는다.
X-M2X-Param-aws_s3.path.src: /products/100.jpg X-M2X-Param-aws_s3.path.dest: /nas/product_item_100.jpg
metadata¶
"metadata": [
{
"key": "Content-Type",
"type": "default" 또는 "static" 또는 "code"
"value": "image/jpeg"
}
]
객체 업로드 헤더조건
key
헤더명
type
헤더 값 설정조건
default
원본파일에 동일헤더
key
가 있다면 해당 값 사용. 없다면value
사용static
항상
value
를 사용한다.code
코드를 이용해 산출한다.
tagging TBD
¶
"tagging": [
{
"key": "foo",
"type": "value" 또는 "code",
"value": "bar",
"code": "..."
}
],