Dev AWSome Day 2018의 복습③~Amazon S3편~
AWS에 있어서 S3는 기본중의 기본입니다만, 이번은 액세스 권한의 설정이 메인의 이야기가 됩니다.
S3 소개
여기는 다시 설명할 필요도 없다고 생각합니다만, 인터넷 경유로 액세스 할 수 있는 매우 스케일러블하고 내구성이 높은 오브젝트 스토리지가 됩니다.
이번에는 인증된 사용자만 파일을 저장할 수 있습니다.
버킷 만들기
S3를 사용하려면 데이터(이하 객체라고 함)를 저장하는 버킷을 만듭니다.
S3를 사용하려면 데이터(이하 객체라고 함)를 저장하는 버킷을 만듭니다.
버킷의 CORS(Cross Origin Resource Sharing) 설정
이번에 공개용 웹 앱 측 코드를 S3에 넣기 때문에 거기에서 다른 버킷에 액세스하게 됩니다.
해당 권한 설정을 CORS에서 수행합니다.
입력하는 CORS 구성의 예는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
<ExposeHeader>x-amz-request-id</ExposeHeader>
<ExposeHeader>x-amz-id-2</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
애플리케이션에서 설정
자바스크립트에서 S3으로의 저장 부분은 다음과 같습니다.
이전에 수정한 부분 중 'Storage:' 곳에 작성한 버킷 이름을 설정합니다.
Storage: {
bucket: 'devawsome-photo-mine',
region: 'us-west-2'
}
그리고는 실제로 파일을 저장하는 코드를 작성합니다.
// Task: S3 Upload
console.log("Define S3 Put Operation here.");
Storage.put(photokey, file, {
level: 'private',
contentType: contentType,
metadata: {
username: username,
description: Base64.encode(this.state.desc)
}
})
.then(result => {
console.log(result);
alert("Uploading succeeded");
})
.catch(err => {
console.log(err);
alert("Err: " + err);
}
Cognito에서 설정
그리고는 Cognito에도 액세스 권한의 설정을 해 줄 필요가 있습니다.
Storage: {
bucket: 'devawsome-photo-mine',
region: 'us-west-2'
}
// Task: S3 Upload
console.log("Define S3 Put Operation here.");
Storage.put(photokey, file, {
level: 'private',
contentType: contentType,
metadata: {
username: username,
description: Base64.encode(this.state.desc)
}
})
.then(result => {
console.log(result);
alert("Uploading succeeded");
})
.catch(err => {
console.log(err);
alert("Err: " + err);
}
그리고는 Cognito에도 액세스 권한의 설정을 해 줄 필요가 있습니다.
이 확인한 이름에 대해 S3 버킷에 대한 액세스 권한을 부여합니다.
설정할 권한(JSON)은 다음과 같은 느낌입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3put01",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::devawsome-photo-mine",
"arn:aws:s3:::devawsome-photo-mine/*"
]
}
]
}
요약
S3에 액세스 권한을 설정하는 단계를 확인했습니다.
S3의 버킷 측 설정(어디에서 액세스할 수 있는 권한)과 Cognito 측 설정(어떤 사용자에게 어떤 권한을 부여할지)이 있는 것 같습니다.
Reference
이 문제에 관하여(Dev AWSome Day 2018의 복습③~Amazon S3편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mine820/items/cbfd7913bccd784591ba
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Dev AWSome Day 2018의 복습③~Amazon S3편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mine820/items/cbfd7913bccd784591ba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)