CloudFront 및 S3 엔드포인트

4232 단어 CloudFrontS3AWS

A. static website hosting의 엔드포인트를 Origin Domain Name으로 지정



1.S3에서 정적 웹사이트 호스팅 공개





버킷 정책은 다음과 같이 설정.
{
    "Version": "2012-10-17",
    "Id": "Policy1557901682108",
    "Statement": [
        {
            "Sid": "Stmt1557901670604",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::leomaro.tk/*"
        }
    ]
}

2.Origin Domain Name에 S3의 static website hosting 지정





이제 CloudFront 엔드포인트에서 액세스할 수 있습니다.

그러나, 이와 같이 S3의 static website hosting의 엔드 포인트를 지정했을 경우, cloud front로부터만 액세스 한다고 할 수 없다.

그래서 Origin Custom Headers에 특정의 캐릭터 라인을 보내, S3 버킷으로 그 특정의 Header가 있는 경우만 GetObject 할 수 있다고 하는 버킷 폴리시를 설정한다.

3 Origin Custom Headers 붙이기





4 S3 버킷 정책 변경



name 에 test 가 있는 경우는, Allow, 없는 경우는 Deny.
{
    "Version": "2008-10-17",
    "Id": "http referer policy",
    "Statement": [
        {
            "Sid": "Referer-Allow",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::leomaro.tk/*",
            "Condition": {
                "StringLike": {
                    "aws:name": "test"
                }
            }
        },
        {
            "Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::leomaro.tk/*",
            "Condition": {
                "StringNotLike": {
                    "aws:name": "test"
                }
            }
        }
    ]
}

5 테스트해보기


curl --header 'name:test' website hosting Endpoint URL
#→アクセスできる

curl --header 'name:test' website hosting Endpoint URL
#→アクセスできない(403エラー)

B. S3 엔드포인트를 Origin Domain Name으로 지정



1 Origin Domain Name에 S3 엔드포인트 지정



이 때 설정은 다음과 같이 합니다.
  • Restrict Bucket Access : Yes(CloudFront에서만 S3에 액세스할 수 없도록 할 수 있습니다.)
  • Origin Access Identity : Create a New Identity (S3에 액세스하는이 CloudFront의 연결자입니다)
  • Grant Read Permissions on Bucket: Yes (S3에 대해 CloudFront에서 BucketPolicy를 설정합니다.)



  • 2 S3 측의 버킷 정책을 들여다 봅니다.



    이전에는 Grant Read Permissions on Bucket에서 설정한 내용이 반영되어 있습니다.
    {
        "Version": "2008-10-17",
        "Id": "PolicyForCloudFrontPrivateContent",
        "Statement": [
            {
                "Sid": "1",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3UEIDRYVURC48"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::leomaro.tk/*"
            }
        ]
    }
    

    3 액세스해보기



    S3의 엔드포인트 → 액세스할 수 없음
    CloudFront 엔드포인트 → 액세스 가능

    좋은 웹페이지 즐겨찾기