배포 생성으로 들어간다.
처음엔 전부 셋팅하지만 나중에 수정할 땐 3부위로 나뉜다.
원본 도메인 선택
이름 - 이름
경로 패턴 - 기본값
자동으로 객체 압축 - Yes
*뷰어 엑세스 제한 - 따로 정리
캐시 키 및 원본 요청
캐시 정책 - CachingOptimized
원본 요청 정책 - CORS-S3Origin (S3의 Cors 정책을 똑같이 따르겠다.)
응답 헤더 정책 - CORS-with-prefilght-and-SecurityHeadersPolicy( 모든 Cors 정책과 보안 헤더 정책을 적용시키겠다?)
다 필요 없고 - 물론 아직은
기본값 루트 객체 - S3라면 빌드 파일의 시작 index.html
서명 URL이라고도 하며 인증이 된 URL을 통해서만 접근이 가능하도록 URL을 만들어 전달한다.
이 URL은 수명을 줄 수도 있다.
YES를 선택할 경우
Trusted key groups 와 Trusted signer 이렇게 있는데
import datetime
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
from botocore.signers import CloudFrontSigner
def rsa_signer(message):
with open('<private key 경로>', 'rb') as key_file:
private_key = serialization.load_pem_private_key(
key_file.read(),
password=None,
backend=default_backend()
)
return private_key.sign(message, padding.PKCS1v15(), hashes.SHA1())
key_id = 'access key id'
url = '<cloudfront 도메인 + /index.html'
expire_date = datetime.datetime(2023, 1, 1) # 수명 주기를 정할 수 있다.
cloudfront_signer = CloudFrontSigner(key_id, rsa_signer)
# Create a signed url that will be valid until the specific expiry date
# provided using a canned policy.
signed_url = cloudfront_signer.generate_presigned_url(
url, date_less_than=expire_date)
print(signed_url)
위 코드를 실행하면 생성되는 URL을 통해 접근을 하면 된다. ( 기존 cloudfront 도메인으로 접속시 Missing key만 뜬다.)