AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

CloudFormation の「1 つ以上のオリジンまたはオリジングループが存在しません」というエラーを解決する方法を教えてください。

所要時間2分
0

AWS CloudFormation を使用して AWS::CloudFront::Distribution リソースを更新しようとすると、次のエラーが表示されます。 「1 つ以上のオリジンまたはオリジングループが存在しません。」

解決策

CacheBehavior または DefaultCacheBehaviorTargetOriginID は、AWS::CloudFront::Distribution リソース内の Origin または OriginGroupsId と一致している必要があります。ID が一致しない場合、オリジンまたはオリジングループが存在しないことを示すエラーが発生します。

このエラーは、存在しないオリジンまたは、CloudFormation の外部で作成したオリジンの TargetOriginID を設定した場合に発生します。更新操作時に、CloudFormation は CloudFormation の外部で作成したディストリビューション内のすべてのオリジンとオリジングループを削除します。CloudFormation がオリジンまたはオリジングループを削除しようとしたときに、そのオリジンまたはオリジングループを使用していた場合、エラーが発生します。

注: CloudFormation の外部でスタックリソースを変更しないことがベストプラクティスです。CloudFormation の外部で変更を行うと、スタックのテンプレートとスタックリソースの現在の状態との間に不一致が生じる可能性があります。

この問題を解決するには、次の手順を実行します。

  1. CloudFormation テンプレートの AWS::CloudFront::Distribution リソースを開きます。
  2. TargetOriginId は、Origins または OriginGroups プロパティで定義されたオリジンまたはオリジングループのいずれかの ID と一致する必要があります。ID が一致しない場合は、DefaultCacheBehavior または CacheBehavior のパラメータに、正しいオリジン ID を入力します。
    以下のテンプレートスニペット例では、DefaultCacheBehavior が単一オリジンの CloudFront ディストリビューションを定義して使用しています。また、オリジンは認証にオリジンアクセスアイデンティティ (OAI) を使用しており、オリジンは Amazon Simple Storage Service (Amazon S3) です。
    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"
              }
            }
          }
        }
      }
    }
    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}
    注: 上記の例において、お使いのものでそれぞれ、my-s3-origin をオリジン ID、my-s3-bucket.s3.amazonaws.com をドメイン名、/my-content をオリジンパスに置き換えます。
  3. CloudFront ディストリビューションをテストし、CloudFormation スタックが作成または更新されていることを確認します。

関連情報

CloudFront ディストリビューションでさまざまなオリジンを使用する

CloudFormation コンソールからスタックを作成する

AWS CloudFormation のベストプラクティス

AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ