Amazon CloudFront 배포를 포함한 AWS CloudFormation 스택을 생성하거나 업데이트하려고 하면 다음 오류가 발생합니다.
"One or more of your origins or origin groups do not exist."
간략한 설명
이 오류는 CacheBehavior 또는 DefaultCacheBehavior의 TargetOriginId 속성이 CloudFront 오리진이나 오리진 그룹 ID와 일치하지 않을 경우 발생합니다. 이 ID는 오리진 또는 오리진 그룹을 고유하게 식별하는 사용자 정의 문자열입니다. 오리진 그룹을 템플릿에서 정의한 다음 CloudFormation을 통해 리소스를 관리해야 합니다.
팁: CloudFormation 외부의 스택 리소스를 변경하지 않는 것이 좋습니다. 변경할 경우 스택의 템플릿과 스택 리소스의 현재 상태 사이에 불일치가 발생할 수 있습니다. 스택을 업데이트하거나 삭제하면 불일치 때문에 오류가 발생할 수 있습니다.
해결 방법
1. TargetOriginId가 정의된 오리진 또는 오리진 그룹 중 하나의 ID와 일치하는지 확인합니다. DefaultCacheBehavior 또는 CacheBehavior에 대한 파라미터로 올바른 오리진 ID를 입력합니다.
다음의 예제 JSON 및 YAML 템플릿 스니펫에서는 DefaultCacheBehavior가 단일 오리진을 포함한 CloudFront 배포를 정의하고 사용합니다. 또한 이 오리진은 인증을 위해 오리진 액세스 ID(OAI)를 사용합니다. 해당 예제에서 오리진 ID는 my-s3-origin으로 설정되어 있습니다.
JSON:
{
"AWSTemplateFormatVersion": "2010-09-09T00:00:00.000Z",
"Resources": {
"cloudfrontdistribution": {
"Type": "AWS::CloudFront::Distribution",
"Properties": {
"DistributionConfig": {
"DefaultCacheBehavior": {
"ViewerProtocolPolicy": "https-only",
"DefaultTTL": 3600,
"ForwardedValues": {
"Cookies": {
"Forward": "none"
},
"QueryString": true
},
"TargetOriginId": "my-s3-origin"
},
"Enabled": true,
"Origins": [
{
"DomainName": "my-s3-bucket.s3.amazonaws.com",
"Id": "my-s3-origin",
"S3OriginConfig": {
"OriginAccessIdentity": {
"Fn::Sub": "origin-access-identity/cloudfront/${CloudFrontOriginAccessIdentity}"
}
},
"OriginPath": "/my-content"
}
]
}
}
},
"CloudFrontOriginAccessIdentity": {
"Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity",
"Properties": {
"CloudFrontOriginAccessIdentityConfig": {
"Comment": {
"Ref": "AWS::StackName"
}
}
}
}
}
}
참고: my-s3-origin을 오리진 ID로, my-s3-bucket.s3.amazonaws.com을 도메인 이름으로, /my-content를 오리진 경로로 바꿉니다.
YAML:
AWSTemplateFormatVersion: 2010-09-09
Resources:
cloudfrontdistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
DefaultCacheBehavior:
ViewerProtocolPolicy: https-only
DefaultTTL: 3600
ForwardedValues:
Cookies:
Forward: none
QueryString: true
TargetOriginId: my-s3-origin
Enabled: true
Origins:
- DomainName: 'my-s3-bucket.s3.amazonaws.com'
Id: my-s3-origin
S3OriginConfig:
OriginAccessIdentity: !Sub origin-access-identity/cloudfront/${CloudFrontOriginAccessIdentity}
OriginPath: /my-content
CloudFrontOriginAccessIdentity:
Type: AWS::CloudFront::CloudFrontOriginAccessIdentity
Properties:
CloudFrontOriginAccessIdentityConfig:
Comment: !Sub ${AWS::StackName}
2. CloudFormation 스택이 생성되었거나 업데이트되었는지 확인하려면 CloudFront 배포를 테스트합니다.
관련 정보
CloudFront 배포와 함께 다양한 오리진 사용
AWS CloudFormation 콘솔에서 스택 생성
AWS CloudFormation 모범 사례