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
});