#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. Большое вам спасибо за это — это было практически невозможно выяснить…