[英]Cloudfront UpdateDistribution operation failing with ServiceUnavailable
我正在尝试使用 Boto3 将 Origin 和 Behaviors 添加到现有的 CloudFront 分配,但它失败并出现以下错误,还添加了重试。 我尝试使用独立脚本和 CloudFormation 自定义资源,但都失败了。 之前在这里报告的相同问题: https://github.com/aws/aws-cdk/issues/15891#issuecomment-1243756855 ,有什么解决方法可以解决这个问题吗?
Traceback (most recent call last):
File "/Users/test/Desktop/cf_test/test.py", line 194, in <module>
create_origin_and_behavior(config)
File "/Users/test/Desktop/cf_test/test.py", line 159, in create_origin_and_behavior
cloudfront.update_distribution(
File "/usr/local/lib/python3.10/site-packages/botocore/client.py", line 514, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/local/lib/python3.10/site-packages/botocore/client.py", line 938, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (ServiceUnavailable) when calling the UpdateDistribution operation (reached max retries: 4): CloudFront encountered an internal error. Please try again.
这是脚本:
#!/usr/bin/python
import boto3
cloudfront = boto3.client('cloudfront')
response_data = {}
def create_origin_and_behavior(config):
distribution_config_response = cloudfront.get_distribution_config(Id=config['DistributionId'])
distribution_config = distribution_config_response['DistributionConfig']
distribution_etag = distribution_config_response['ETag']
origin = {
# 'Id': config['StackName'],
'Id': "new-test",
# 'DomainName': config['MediaPackageEgressHlsDomainName'],
'DomainName': '3423434234.mediapackage.us-west-2.amazonaws.com',
'OriginPath': '',
'CustomOriginConfig': {
'HTTPPort': 80,
'HTTPSPort': 443,
'OriginProtocolPolicy': 'match-viewer',
'OriginReadTimeout': 30,
'OriginSslProtocols': {
'Quantity': 1,
'Items': [
'TLSv1.2'
]
},
'OriginKeepaliveTimeout': 5
},
'CustomHeaders': {
'Quantity': 1,
'Items': [
{
'HeaderName': "X-MediaPackage-CDNIdentifier",
# 'HeaderValue': config['MediaPackageCDNIdentifier']
'HeaderValue': '23423-3242'
}
]
}
}
distribution_config['Origins']['Items'].append(origin)
distribution_config['Origins']['Quantity'] += 1
vtt_path_behavior = {
# 'PathPattern': config['MediaPackageEgressHlsPath'].replace("index.m3u8", "*.vtt"),
'PathPattern': "out/v1/test/*.vtt",
# 'TargetOriginId': config['StackName'],
'TargetOriginId': 'new-test',
'Compress': False,
'ViewerProtocolPolicy': 'redirect-to-https',
'SmoothStreaming': False,
'AllowedMethods': {
'Quantity': 2,
'Items': [
'GET', 'HEAD'
],
'CachedMethods': {
'Quantity': 2,
'Items': [
'GET', 'HEAD'
],
}
},
'TrustedSigners': {
'Enabled': True,
'Quantity': 1,
'Items': [
# config['Account']
'2343243242'
]
},
'ForwardedValues': {
'Headers': {
'Quantity': 3,
'Items': [
'Origin', 'Access-Control-Request-Method', 'Access-Control-Request-Headers'
]
},
'QueryString': True,
'QueryStringCacheKeys': {
'Quantity': 3,
'Items': [
"m", "start", "end"
]
},
'Cookies': {
'Forward': 'none'
}
},
'MinTTL': 0,
'DefaultTTL': 86400,
'MaxTTL': 31536000,
# 'ResponseHeadersPolicyId': config['ResponseHeadersPolicyId'],
'ResponseHeadersPolicyId': '2423423',
'LambdaFunctionAssociations': {
'Quantity': 1,
'Items': [
{
# 'LambdaFunctionARN': config['OriginResponseEdgeFunctionARN'],
'LambdaFunctionARN': 'arn:aws:lambda:us-east-1:2345235235:function:test:1',
'EventType': 'origin-response'
}
]
},
'FieldLevelEncryptionId': ""
}
if distribution_config['CacheBehaviors']['Quantity'] == 0:
distribution_config['CacheBehaviors']['Items'] = []
distribution_config['CacheBehaviors']['Items'].append(vtt_path_behavior)
distribution_config['CacheBehaviors']['Quantity'] += 1
cloudfront.update_distribution(
DistributionConfig=distribution_config,
Id=config['DistributionId'],
IfMatch=distribution_etag)
print('Mediapackage Egress Cloudfront input create completed for stack {} '.format(config['StackName']))
# response_data['DistributionId'] = config['DistributionId']
# response_data['StackName'] = config['StackName']
response_data['DistributionId'] = 'test'
response_data['StackName'] = 'new-test'
return response_data
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.