SDK를 사용하여 S3 (정적 호스팅) 웹 사이트 엔드 포인트를 가리키는 AWS Cloudfront 배포를 생성하려면 어떻게해야합니까?

스테판 류우

정적 웹 페이지를 호스팅하기 위해 웹 사이트 엔드 포인트로 구성된 S3 버킷이 있습니다.

Cloudfront를 앞에두고 싶습니다.

S3 버킷의 "속성" :: "정적 웹 사이트 호스팅 " 에서 "엔드 포인트"복사했습니다 .

형식은 "example.com.s3-website-us-east-1.amazonaws.com"입니다.

Aws SDK CloudFront 클라이언트를 사용하여 create_distribution을 시도하면 다음 오류가 발생합니다.

Aws::CloudFront::Errors::InvalidArgument 
The parameter Origin DomainName does not refer to a valid S3 bucket.

Ruby 코드의 예는 다음과 같습니다.

cloudfront = Aws::CloudFront::Client.new()
cloudfront.create_distribution({
  distribution_config: {
    ...
    origins: {
      quantity: 1,
      items: [{
        id: "Custom-example.com.s3-website-us-east-1.amazonaws.com",
        domain_name: "example.com.s3-website-us-east-1.amazonaws.com",
        s3_origin_config: {
          origin_access_identity: ""
        },
        origin_path: ""
      }]
    },
    ...
  }

})

GUI와 CLI를 통해 동일한 "원본 도메인 이름"으로 배포를 만들 수 있습니다.

aws cloudfront create-distribution \
  --origin-domain-name example.com.s3-website-us-east-1.amazonaws.com \
  --default-root-object index.html
스테판 류우

정적 S3 버킷 필요에서 호스팅되는 웹 사이트 엔드 포인트는 "원산지 유형"으로 설정되어야합니다 "custom_origin"NOT S3_Origin. GUI의 배포에 대한 "Origins"탭에서 이러한 경우임을 알 수 있습니다.

샘플 Ruby 코드 :

    distribution_config: {
    ...
      origins: {
        quantity: 1,
        items: [{
          id: "Custom-example.com.s3-website-us-east-1.amazonaws.com",
          domain_name: "example.com.s3-website-us-east-1.amazonaws.com",
          custom_origin_config: {
            http_port: 80, # required
            https_port: 443, # required
            origin_protocol_policy: "http-only", # required, accepts http-only, match-viewer, https-only
          },
        }]
     ...
     }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관