javascript - Cloudfront createDistribution 上的 InvalidArgument 错误
问题描述
Node.js 版本 v12.16.2
SDK版本号 v2.727.0
当我尝试通过 API 创建新的 Cloudfront 分发时,我收到一条错误消息,指出 MinTTL 是必填字段,但是查看 sdk 文档,它说该属性已被弃用。当我将 MinTTL 放在 DefaultCacheBehaviour 字段上时,它说 ForwardedValues 是必需的,这是另一个不推荐使用的属性。我正在使用 Typescript 执行此操作,所以我也有类型检查告诉我这一切都很好。我还在构造函数上指定了最新的 API 版本。难道我做错了什么?
退货
{
message: "The parameter MinTTL is required.",
code: "InvalidArgument",
statusCode: 400,
}
import * as AWS from 'aws-sdk';
constructor() {
this.cloudfront = new AWS.CloudFront({
credentials: {
accessKeyId: awsConfig.accessKeyId,
secretAccessKey: awsConfig.secretAccessKey,
},
region: awsConfig.cloudfront.region,
signatureVersion: 'v4',
apiVersion: '2020-05-31',
});
}
public createDistribution(param: ICreateDistributionParam) {
const { domain, certificateArn } = param;
const uniqueId = `${domain}${v1()}`;
return new Promise((resolve, reject) => {
this.cloudfront.createDistribution(
{
DistributionConfig: {
CallerReference: v1(),
Enabled: true,
Comment: `${domain} Production Distribution`,
Aliases: {
Quantity: 2,
Items: [domain, `www.${domain}`],
},
Origins: {
Quantity: 1,
Items: [
{
Id: uniqueId,
DomainName: awsConfig.ec2.prodLoadBalancer,
CustomOriginConfig: {
// custom origin config data
},
},
],
},
ViewerCertificate: {
ACMCertificateArn: certificateArn,
CloudFrontDefaultCertificate: false,
SSLSupportMethod: SSLSupportMethod.SNI_ONLY,
MinimumProtocolVersion: MinimumProtocolVersion.TLSv1_2016,
},
DefaultCacheBehavior: {
TargetOriginId: uniqueId,
TrustedSigners: {
Enabled: false,
Quantity: 0,
},
AllowedMethods: {
Quantity: 7,
Items: ['GET', 'HEAD', 'OPTIONS', 'PUT', 'PATCH', 'POST', 'DELETE'],
},
ViewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
},
IsIPV6Enabled: true,
},
},
(err, data) => {
if (err) {
return reject(err);
}
resolve(data);
},
);
});
}
我在调用中传递的最终对象是这样的:
{
DistributionConfig: {
CallerReference: "3e408c41-d8d6-11ea-b123-177f1e4dc4e3",
Enabled: true,
Comment: “teste.com.br Production Distribution",
Aliases: {
Quantity: 2,
Items: [
"teste.com.br",
"www.teste.com.br",
],
},
Origins: {
Quantity: 1,
Items: [
{
Id: “teste.com.br3e408c40-d8d6-11ea-b123-177f1e4dc4e3",
DomainName: “my-production-load-balancer-domain-name”,
CustomOriginConfig: {
HTTPSPort: 443,
HTTPPort: 80,
OriginProtocolPolicy: "http-only",
OriginReadTimeout: 30,
OriginKeepaliveTimeout: 5,
},
},
],
},
ViewerCertificate: {
ACMCertificateArn: "arn:aws:acm:us-east-1:522904521474:certificate/e221dfd8-72b7-4431-b9db-b460fdsds3be9",
CloudFrontDefaultCertificate: false,
SSLSupportMethod: "sni-only",
MinimumProtocolVersion: "TLSv1.1_2016",
},
DefaultCacheBehavior: {
TargetOriginId: “teste.com.br3e408c40-d8d6-11ea-b123-177f1e4dc4e3",
TrustedSigners: {
Enabled: false,
Quantity: 0,
},
AllowedMethods: {
Quantity: 7,
Items: [
"GET",
"HEAD",
"OPTIONS",
"PUT",
"PATCH",
"POST",
"DELETE",
],
},
ViewerProtocolPolicy: "redirect-to-https",
},
IsIPV6Enabled: true,
},
}
解决方案
推荐阅读
- angular - 错误 400 缺少所需的请求正文
- unity3d - Unity 中的分步渲染?
- typescript - 在自定义类型上使用 declare 关键字
- jquery - Jquery ajax url请求/加载10次并在滚动时请求/加载10次
- webapi - ADO.Net 代码在控制台应用程序中工作。但不适用于 WEB API 项目。数据库位于 AWS
- angular - 没有 zone.js 的角度路由
- azure-devops - 使用脚本创建 Azure Pipeline Build and Release
- java - M3:如何识别 Java 项目中的语法错误
- viewcontroller - 在 iOS 13 和 Xcode 11 中更改根控制器时出现黑屏动画
- python - 如何使用python stackoverflow将值位置更改为每一个