0

Пытается автоматизировать развертывание статического веб-сайта с помощью boto3. У меня есть статический веб-сайт (угловой/javascript/html), сидящий в ведре, и вам нужно использовать облачный CDN aws.Развертывание статического сайта с s3 и облачным использованием python boto3

В любом случае, похоже, что создание ведра s3 и копирование в html/js работает нормально.

import boto3 
cf = boto3.client('cloudfront') 

cf.create_distribution(DistributionConfig=dict(CallerReference='firstOne', 
      Aliases = dict(Quantity=1, Items=['mydomain.com']), 
      DefaultRootObject='index.html', 
      Comment='Test distribution', 
      Enabled=True, 
      Origins = dict(
       Quantity = 1, 
       Items = [dict(
        Id = '1', 
        DomainName='mydomain.com.s3.amazonaws.com') 
       ]), 
      DefaultCacheBehavior = dict(
       TargetOriginId = '1', 
       ViewerProtocolPolicy= 'redirect-to-https', 
       TrustedSigners = dict(Quantity=0, Enabled=False), 
       ForwardedValues=dict(
        Cookies = {'Forward':'all'}, 
        Headers = dict(Quantity=0), 
        QueryString=False, 
        QueryStringCacheKeys= dict(Quantity=0), 
        ), 
       MinTTL=1000) 
      ) 
) 

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

InvalidOrigin: An error occurred (InvalidOrigin) when calling the CreateDistribution operation: The specified origin server does not exist or is not valid. An error occurred (InvalidOrigin) when calling the CreateDistribution operation: The specified origin server does not exist or is not valid.

Интересно, что выглядит жалуясь о происхождении, mydomain.com.s3.amazonaws.com, однако, когда я создаю дистрибутив для ведра s3 в веб-консоли, у него нет проблем с тем же именем домена происхождения.

Update: я могу получить эту работу с Бото со следующими, но предпочел бы использовать boto3:

import boto 
c = boto.connect_cloudfront() 
origin = boto.cloudfront.origin.S3Origin('mydomain.com.s3.amazonaws.com') 
distro = c.create_distribution(origin=origin, enabled=False, comment='My new Distribution') 
+0

hmmm ... не следует ли «mydomain.com» быть именем ведра? не думал, что точки разрешены в именах ковша ...? – gsaslis

+0

Допускаются точки и тире. Я попробовал имя ведра без «.». однако, и я получил ту же ошибку. Буквально используется одна и та же начальная строка имени домена в веб-консоли aws. – Atifm

+0

Существует ли это? Я имею в виду, что домен, который вы используете, действительно действителен? – gsaslis

ответ

0

Оказывается, их параметр является обязательным, не задокументированы надлежащим образом.

Поскольку Origin представляет собой ведро S3, вы должны определить S3OriginConfig = dict (OriginAccessIdentity = ''), даже если OriginAccessIdentity не используется и является пустой строкой.

Работает следующая команда. Обратите внимание, что для обеспечения доступности объектов по-прежнему нужна политика ведра, а запись path53 - псевдоним cname, который мы хотим создать сгенерированное имя узла.

cf.create_distribution(DistributionConfig=dict(CallerReference='firstOne', 
      Aliases = dict(Quantity=1, Items=['mydomain.com']), 
      DefaultRootObject='index.html', 
      Comment='Test distribution', 
      Enabled=True, 
      Origins = dict(
       Quantity = 1, 
       Items = [dict(
        Id = '1', 
        DomainName='mydomain.com.s3.amazonaws.com', 
        S3OriginConfig = dict(OriginAccessIdentity = '')) 
       ]), 
      DefaultCacheBehavior = dict(
       TargetOriginId = '1', 
       ViewerProtocolPolicy= 'redirect-to-https', 
       TrustedSigners = dict(Quantity=0, Enabled=False), 
       ForwardedValues=dict(
        Cookies = {'Forward':'all'}, 
        Headers = dict(Quantity=0), 
        QueryString=False, 
        QueryStringCacheKeys= dict(Quantity=0), 
        ), 
       MinTTL=1000) 
      ) 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^