Subscribed unsubscribe Subscribe Subscribe

The parameter Origin DomainName does not refer to a valid S3 bucket.

CloudFormationでサーバーレスアプリケーションを作る際にCloudFrontからWebsiteの設定をしたS3にトラフィックを流すと思います。 その際にタイトルのエラーが発生することがあります。

以下のような設定の場合です

        Origins:
          - DomainName: !Sub
              - ${Domain}.s3-website-${AWS::Region}.amazonaws.com
              - { Domain: !Ref Domain }
             Id: !Ref OriginId
             S3OriginConfig:
               OriginAccessIdentity: !Ref OriginAccessIdentity

結論としてはWebsiteのドメイン名はS3OriginConfigの対象ではないので、以下のようにCustomOriginConfigを使用すれば解決します。

CustomOrigin is a property of the Amazon CloudFront Origin property that describes an HTTP server.

docs.aws.amazon.com

        Origins:
          - DomainName: !Sub
              - ${Domain}.s3-website-${AWS::Region}.amazonaws.com
              - { Domain: !Ref Domain }
            Id: !Ref OriginId
            CustomOriginConfig:
              OriginProtocolPolicy: http-only
              HTTPPort: 80

間違えやすい原因としてはCustomOriginConfigのキー名かと。 S3のWebsite用ドメインなので、ついS3OriginConfigに設定しそうになってしまいます。

AWSにはCustomOriginConfigではなく、以下の3通りのいずれかにして欲しいものです。

ドキュメント通りにHttpServerOriginConfigにする
CustomOriginConfigとは別にS3WebsiteOriginConfigを作る
CustomOriginConfigではなく、WebsiteOriginConfigを作る