Как создать дистрибутив AWS Cloudfront, который указывает на конечную точку веб-сайта S3 (статически размещенного), используя SDK?

#ruby #amazon-web-services #amazon-cloudfront #aws-sdk-ruby

#ruby #amazon-веб-сервисы #amazon-облачный фронт #aws-sdk-ruby #amazon-web-services #amazon-cloudfront

Вопрос:

У меня есть сегмент S3, настроенный как конечная точка веб-сайта для размещения статической веб-страницы.

Я хочу поместить Cloudfront перед ним.

Я скопировал «Конечную точку» из «Свойств» корзины S3 :: «Статический хостинг веб-сайтов».

Он имеет вид: «example.com.s3-website-us-east-1.amazonaws.com «

Когда я пытаюсь создать create_distribution с помощью клиента Aws SDK CloudFront, я получаю эту ошибку:

 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: ""
      }]
    },
    ...
  }
  

})

Я могу создать дистрибутив с тем же «исходным доменным именем» как через графический интерфейс, так и через CLI

 aws cloudfront create-distribution 
  --origin-domain-name example.com.s3-website-us-east-1.amazonaws.com 
  --default-root-object index.html
  

Ответ №1:

Конечные точки веб-сайтов, которые статически размещены в корзине S3, должны быть настроены как «Исходный тип» «custom_origin», а НЕ S3_Origin. Вы можете видеть, что это имеет место на вкладке «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
          },
        }]
     ...
     }
  

Комментарии:

1. Большое вам спасибо за это — это было практически невозможно выяснить…