Creating cloudfront url for s3 static site from nodejs AWS-SDK

27 Views Asked by At

Creating cloudfront url for s3 static site from nodejs AWS-SDK

Here is the reference https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront.html#createDistribution-property

It is long form we have to fill up most of the fields that makes error in response each time when I am trying , How can I create with minimal steps or with field value with default value

S3 static site bucket name is "example-mydomain.com" and region is "ap-south-1"

var params = {
  DistributionConfig: { /* required */
    CallerReference: 'STRING_VALUE', /* required */
    Comment: 'STRING_VALUE', /* required */
    DefaultCacheBehavior: { /* required */
      TargetOriginId: 'STRING_VALUE', /* required */
      ViewerProtocolPolicy: allow-all | https-only | redirect-to-https, /* required */
      AllowedMethods: {
        Items: [ /* required */
          GET | HEAD | POST | PUT | PATCH | OPTIONS | DELETE,
          /* more items */
        ],
        Quantity: 'NUMBER_VALUE', /* required */
        CachedMethods: {
          Items: [ /* required */
            GET | HEAD | POST | PUT | PATCH | OPTIONS | DELETE,
            /* more items */
          ],
          Quantity: 'NUMBER_VALUE' /* required */
        }
      },
      CachePolicyId: 'STRING_VALUE',
      Compress: true || false,
      DefaultTTL: 'NUMBER_VALUE',
      FieldLevelEncryptionId: 'STRING_VALUE',
      ForwardedValues: {
        Cookies: { /* required */
          Forward: none | whitelist | all, /* required */
          WhitelistedNames: {
            Quantity: 'NUMBER_VALUE', /* required */
            Items: [
              'STRING_VALUE',
              /* more items */
            ]
          }
        },
        QueryString: true || false, /* required */
        Headers: {
          Quantity: 'NUMBER_VALUE', /* required */
          Items: [
            'STRING_VALUE',
            /* more items */
          ]
        },
        QueryStringCacheKeys: {
          Quantity: 'NUMBER_VALUE', /* required */
          Items: [
            'STRING_VALUE',
            /* more items */
          ]
        }
      },
      FunctionAssociations: {
        Quantity: 'NUMBER_VALUE', /* required */
        Items: [
          {
            EventType: viewer-request | viewer-response | origin-request | origin-response, /* required */
            FunctionARN: 'STRING_VALUE' /* required */
          },
          /* more items */
        ]
      },
      LambdaFunctionAssociations: {
        Quantity: 'NUMBER_VALUE', /* required */
        Items: [
          {
            EventType: viewer-request | viewer-response | origin-request | origin-response, /* required */
            LambdaFunctionARN: 'STRING_VALUE', /* required */
            IncludeBody: true || false
          },
          /* more items */
        ]
      },
      MaxTTL: 'NUMBER_VALUE',
      MinTTL: 'NUMBER_VALUE',
      OriginRequestPolicyId: 'STRING_VALUE',
      RealtimeLogConfigArn: 'STRING_VALUE',
      ResponseHeadersPolicyId: 'STRING_VALUE',
      SmoothStreaming: true || false,
      TrustedKeyGroups: {
        Enabled: true || false, /* required */
        Quantity: 'NUMBER_VALUE', /* required */
        Items: [
          'STRING_VALUE',
          /* more items */
        ]
      },
      TrustedSigners: {
        Enabled: true || false, /* required */
        Quantity: 'NUMBER_VALUE', /* required */
        Items: [
          'STRING_VALUE',
          /* more items */
        ]
      }
    },
    Enabled: true || false, /* required */
    Origins: { /* required */
      Items: [ /* required */
        {
          DomainName: 'STRING_VALUE', /* required */
          Id: 'STRING_VALUE', /* required */
          ConnectionAttempts: 'NUMBER_VALUE',
          ConnectionTimeout: 'NUMBER_VALUE',
          CustomHeaders: {
            Quantity: 'NUMBER_VALUE', /* required */
            Items: [
              {
                HeaderName: 'STRING_VALUE', /* required */
                HeaderValue: 'STRING_VALUE' /* required */
              },
              /* more items */
            ]
          },
          CustomOriginConfig: {
            HTTPPort: 'NUMBER_VALUE', /* required */
            HTTPSPort: 'NUMBER_VALUE', /* required */
            OriginProtocolPolicy: http-only | match-viewer | https-only, /* required */
            OriginKeepaliveTimeout: 'NUMBER_VALUE',
            OriginReadTimeout: 'NUMBER_VALUE',
            OriginSslProtocols: {
              Items: [ /* required */
                SSLv3 | TLSv1 | TLSv1.1 | TLSv1.2,
                /* more items */
              ],
              Quantity: 'NUMBER_VALUE' /* required */
            }
          },
          OriginAccessControlId: 'STRING_VALUE',
          OriginPath: 'STRING_VALUE',
          OriginShield: {
            Enabled: true || false, /* required */
            OriginShieldRegion: 'STRING_VALUE'
          },
          S3OriginConfig: {
            OriginAccessIdentity: 'STRING_VALUE' /* required */
          }
        },
        /* more items */
      ],
      Quantity: 'NUMBER_VALUE' /* required */
    },
    Aliases: {
      Quantity: 'NUMBER_VALUE', /* required */
      Items: [
        'STRING_VALUE',
        /* more items */
      ]
    },
    CacheBehaviors: {
      Quantity: 'NUMBER_VALUE', /* required */
      Items: [
        {
          PathPattern: 'STRING_VALUE', /* required */
          TargetOriginId: 'STRING_VALUE', /* required */
          ViewerProtocolPolicy: allow-all | https-only | redirect-to-https, /* required */
          AllowedMethods: {
            Items: [ /* required */
              GET | HEAD | POST | PUT | PATCH | OPTIONS | DELETE,
              /* more items */
            ],
            Quantity: 'NUMBER_VALUE', /* required */
            CachedMethods: {
              Items: [ /* required */
                GET | HEAD | POST | PUT | PATCH | OPTIONS | DELETE,
                /* more items */
              ],
              Quantity: 'NUMBER_VALUE' /* required */
            }
          },
          CachePolicyId: 'STRING_VALUE',
          Compress: true || false,
          DefaultTTL: 'NUMBER_VALUE',
          FieldLevelEncryptionId: 'STRING_VALUE',
          ForwardedValues: {
            Cookies: { /* required */
              Forward: none | whitelist | all, /* required */
              WhitelistedNames: {
                Quantity: 'NUMBER_VALUE', /* required */
                Items: [
                  'STRING_VALUE',
                  /* more items */
                ]
              }
            },
            QueryString: true || false, /* required */
            Headers: {
              Quantity: 'NUMBER_VALUE', /* required */
              Items: [
                'STRING_VALUE',
                /* more items */
              ]
            },
            QueryStringCacheKeys: {
              Quantity: 'NUMBER_VALUE', /* required */
              Items: [
                'STRING_VALUE',
                /* more items */
              ]
            }
          },
          FunctionAssociations: {
            Quantity: 'NUMBER_VALUE', /* required */
            Items: [
              {
                EventType: viewer-request | viewer-response | origin-request | origin-response, /* required */
                FunctionARN: 'STRING_VALUE' /* required */
              },
              /* more items */
            ]
          },
          LambdaFunctionAssociations: {
            Quantity: 'NUMBER_VALUE', /* required */
            Items: [
              {
                EventType: viewer-request | viewer-response | origin-request | origin-response, /* required */
                LambdaFunctionARN: 'STRING_VALUE', /* required */
                IncludeBody: true || false
              },
              /* more items */
            ]
          },
          MaxTTL: 'NUMBER_VALUE',
          MinTTL: 'NUMBER_VALUE',
          OriginRequestPolicyId: 'STRING_VALUE',
          RealtimeLogConfigArn: 'STRING_VALUE',
          ResponseHeadersPolicyId: 'STRING_VALUE',
          SmoothStreaming: true || false,
          TrustedKeyGroups: {
            Enabled: true || false, /* required */
            Quantity: 'NUMBER_VALUE', /* required */
            Items: [
              'STRING_VALUE',
              /* more items */
            ]
          },
          TrustedSigners: {
            Enabled: true || false, /* required */
            Quantity: 'NUMBER_VALUE', /* required */
            Items: [
              'STRING_VALUE',
              /* more items */
            ]
          }
        },
        /* more items */
      ]
    },
    ContinuousDeploymentPolicyId: 'STRING_VALUE',
    CustomErrorResponses: {
      Quantity: 'NUMBER_VALUE', /* required */
      Items: [
        {
          ErrorCode: 'NUMBER_VALUE', /* required */
          ErrorCachingMinTTL: 'NUMBER_VALUE',
          ResponseCode: 'STRING_VALUE',
          ResponsePagePath: 'STRING_VALUE'
        },
        /* more items */
      ]
    },
    DefaultRootObject: 'STRING_VALUE',
    HttpVersion: http1.1 | http2 | http3 | http2and3,
    IsIPV6Enabled: true || false,
    Logging: {
      Bucket: 'STRING_VALUE', /* required */
      Enabled: true || false, /* required */
      IncludeCookies: true || false, /* required */
      Prefix: 'STRING_VALUE' /* required */
    },
    OriginGroups: {
      Quantity: 'NUMBER_VALUE', /* required */
      Items: [
        {
          FailoverCriteria: { /* required */
            StatusCodes: { /* required */
              Items: [ /* required */
                'NUMBER_VALUE',
                /* more items */
              ],
              Quantity: 'NUMBER_VALUE' /* required */
            }
          },
          Id: 'STRING_VALUE', /* required */
          Members: { /* required */
            Items: [ /* required */
              {
                OriginId: 'STRING_VALUE' /* required */
              },
              /* more items */
            ],
            Quantity: 'NUMBER_VALUE' /* required */
          }
        },
        /* more items */
      ]
    },
    PriceClass: PriceClass_100 | PriceClass_200 | PriceClass_All,
    Restrictions: {
      GeoRestriction: { /* required */
        Quantity: 'NUMBER_VALUE', /* required */
        RestrictionType: blacklist | whitelist | none, /* required */
        Items: [
          'STRING_VALUE',
          /* more items */
        ]
      }
    },
    Staging: true || false,
    ViewerCertificate: {
      ACMCertificateArn: 'STRING_VALUE',
      Certificate: 'STRING_VALUE',
      CertificateSource: cloudfront | iam | acm,
      CloudFrontDefaultCertificate: true || false,
      IAMCertificateId: 'STRING_VALUE',
      MinimumProtocolVersion: SSLv3 | TLSv1 | TLSv1_2016 | TLSv1.1_2016 | TLSv1.2_2018 | TLSv1.2_2019 | TLSv1.2_2021,
      SSLSupportMethod: sni-only | vip | static-ip
    },
    WebACLId: 'STRING_VALUE'
  }
};
cloudfront.createDistribution(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
0

There are 0 best solutions below