Amplify에서 S3 콘텐츠 브라우징에 사용자 인증하기
이번에는 S3과 Cognito의 연계를 너무 쉽게 설정할 수 있었기 때문에 기사로했습니다
전제
Vue.js
하고 싶었던 일
S3 버킷에 있는 콘텐츠를 Cognito 사용자만 볼 수 있도록 허용
서명된 URL
amplify의 Storage 사용
amplify에서 Auth를 사용하는 경우 Storage로 추가 한 버킷은 자동으로 인증됩니다 (편리한!!)
$ amplify add auth
$ amplify add storage
이미 S3 버킷 사용
다음과 같이 버킷 이름과 지역 이름을 설정하기만 하면
main.js
import Amplify from 'aws-amplify';
Amplify.configure({
Storage: {
AWSS3: {
bucket: 'バケット名',
region: 'リージョン名',
}
}
});
※ 공용 액세스 설정은 모두
オン
URL 얻기
버킷 정보를 설정하면 나머지는
Storage.get()
할 뿐(슈퍼 간단!!)import {Storage} from 'aws-amplify';
Storage.get("文書名", {expires: 有効期限(秒)})
.then((re) => {
// re = 署名付きURL
})
URL을 얻을 수 없는 경우
Storage.get()
에서 인증 오류가 반환되면 다음을 확인하십시오.Cognito의 auth 역할
Auth를 추가하면 일부 역할이 생성됩니다.
이번 확인하는 것은, 후미가
-authRole
의 롤다른
-unauthRole
는 인증되지 않은 사용자에 대한 권한정책 이름
CognitoUserS3Access
의 Action 및 Resource 설정 확인[Action] ...
S3:GetObject
허용되면 ok[Resource] ... 채우기 부분이 대상 버킷 이름이면 ok
취득한 URL로 액세스 할 수 없다
서명된 URL을 가져오는 데 성공했지만 액세스할 때 차단되면,
バケットポリシーでブロックされている
또는 対象の文書がない
서명된 URL은
버킷과 대상 리소스를 나타내는 키를 기반으로 자동 생성된 공개 URL에 자격 증명이 추가된 경우
즉, URL 발행시
バケットポリシー
또는 キーとして指定したリソースの有無
는 확인되지 않습니다.
Reference
이 문제에 관하여(Amplify에서 S3 콘텐츠 브라우징에 사용자 인증하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bambis13s/items/241bd3362bbd5eee353f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)