2

静的 Web ページをホストする Web サイト エンドポイントとして構成された S3 バケットがあります。

その前にCloudfrontを置きたい。

S3 バケットの「プロパティ」 :: 「静的 Web サイト ホスティング」から「エンドポイント」をコピーしました。

「example.com.s3-website-us-east-1.amazonaws.com」という形式です。

AWS SDK CloudFront クライアントを使用して create_distribution を試行すると、次のエラーが発生します。

Aws::CloudFront::Errors::InvalidArgument 
The parameter Origin DomainName does not refer to a valid S3 bucket.

Ruby コードの例は次のとおりです。

cloudfront = Aws::CloudFront::Client.new()
cloudfront.create_distribution({
  distribution_config: {
    ...
    origins: {
      quantity: 1,
      items: [{
        id: "Custom-example.com.s3-website-us-east-1.amazonaws.com",
        domain_name: "example.com.s3-website-us-east-1.amazonaws.com",
        s3_origin_config: {
          origin_access_identity: ""
        },
        origin_path: ""
      }]
    },
    ...
  }

}))

GUI と CLI を使用して、同じ「オリジン ドメイン名」でディストリビューションを作成できます。

aws cloudfront create-distribution \
  --origin-domain-name example.com.s3-website-us-east-1.amazonaws.com \
  --default-root-object index.html
4

1 に答える 1

7

S3 バケットで静的にホストされている Web サイト エンドポイントは、S3_Origin ではなく、「Origin Type」 「custom_origin」として構成する必要があります。これは、GUI のディストリビューションの [Origins] タブで確認できます。

サンプル Ruby コード:

    distribution_config: {
    ...
      origins: {
        quantity: 1,
        items: [{
          id: "Custom-example.com.s3-website-us-east-1.amazonaws.com",
          domain_name: "example.com.s3-website-us-east-1.amazonaws.com",
          custom_origin_config: {
            http_port: 80, # required
            https_port: 443, # required
            origin_protocol_policy: "http-only", # required, accepts http-only, match-viewer, https-only
          },
        }]
     ...
     }
于 2016-10-17T21:35:34.170 に答える