我有一个使用API网关构建我的api的cloudformation模板。
我不知道如何:
在云端模板模板
将舞台分配到cloudformation模板中的自定义域名。
在json cloudformation模板中是否可以使用其中任何一个?
答案 0 :(得分:3)
是的,您可以在cloudformation中启用cloudwatch日志:
cloudwatch条目应该是simalar:
"SecurityGroupChangesAlarm": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"AlarmName" : "CloudTrailSecurityGroupChanges",
"AlarmDescription" : "Alarms when an API call is made to create, update or delete a Security Group.",
"AlarmActions" : [{ "Ref" : "AlarmNotificationTopic" }],
"MetricName" : "SecurityGroupEventCount",
"Namespace" : "CloudTrailMetrics",
"ComparisonOperator" : "GreaterThanOrEqualToThreshold",
"EvaluationPeriods" : "1",
"Period" : "300",
"Statistic" : "Sum",
"Threshold" : "1"
}
},
检查aws official doc那里的一切都很详细。
自定义域名未在cloudformation模板中定义。它应按照aws doc:
中的规定单独创建答案 1 :(得分:3)
更新Jul 5 2017 :AWS::ApiGateway::DomainName
资源现已可用,因此此部分不再需要自定义资源。
2016年12月24日原帖:
- 在云端模板模板中为舞台启用cloudwatch日志
醇>
要为每个方法调用API使用CloudFormation为ApiGateway Stage启用CloudWatch日志,您需要为DataTraceEnabled
资源中的所有方法将AWS::ApiGateway::Stage
属性设置为true
。
如文档的Set Up a Stage部分所述,您还需要将API网关帐户与正确的IAM权限相关联,以将数据推送到CloudWatch Logs。为此,您还需要创建一个AWS::ApiGateway::Account
资源,该资源引用包含AmazonAPIGatewayPushToCloudWatchLogs
托管策略的IAM角色,如文档example中所述:
CloudWatchRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
Service:
- "apigateway.amazonaws.com"
Action: "sts:AssumeRole"
Path: "/"
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs"
Account:
Type: "AWS::ApiGateway::Account"
Properties:
CloudWatchRoleArn:
"Fn::GetAtt":
- CloudWatchRole
- Arn
- 将舞台分配给云信息模板中的自定义域名
醇>
不幸的是,CloudFormation不提供与DomainName
APIGateway REST API相对应的官方资源。幸运的是,Carl Nordenfelt的非正式API Gateway for CloudFormation项目 提供了Custom::ApiDomainName
。以下是文档中提供的示例:
TestApiDomainName:
Type: Custom::ApiDomainName
Properties:
ServiceToken: {Lambda_Function_ARN}
domainName: example.com
certificateName: testCertificate
certificateBody": "-----BEGIN CERTIFICATE-----line1 line2 ... -----END CERTIFICATE-----"
certificateChain: "-----BEGIN CERTIFICATE-----line1 line2 ... -----END CERTIFICATE-----"
certificatePrivateKey: "-----BEGIN RSA PRIVATE KEY-----line1 line2 ... -----END RSA PRIVATE KEY-----"
另请注意,一旦创建了域名,您应该创建指向!GetAtt TestApiDomainName.distributionDomainName
的Route53别名记录和静态CloudFront托管区域ID(Z2FDTNDATAQYW2
),例如:
myDNSRecord:
Type: AWS::Route53::RecordSet
Properties:
HostedZoneName:
!Ref HostedZone
Name:
!Ref DomainName
Type: A
AliasTarget:
DNSName: !GetAtt TestApiDomainName.distributionDomainName
HostedZoneId: Z2FDTNDATAQYW2