如何设置路由53指向Api网关

我正在编写一个CloudFormsconfiguration文件来一次创build一个网站。 这包括创buildlambda函数,创buildAPI网关,设置S3桶,创buildRoute 53区域和logging。

至今:

  • 创buildLambda函数和它的angular色(工作)
  • 创buildAPI网关它的部署和它的angular色(工作)
  • 创build一个S3存储桶和它的策略(工作)
  • 为站点创buildRoute 53区域和DNSlogging(工作)
  • 为API网关创build一个域(不知道我在做什么)

所以domain.com提供S3存储桶中的文件没有问题。 将AWS URI用于API网关的工作原理https://trydsoonjc.execute-api.us-west-2.amazonaws.com/app/path/here没有问题。

我想要设置一个api.domain.com来指向API网关来访问服务器的API。

如何将Route 53连接到API网关?

现在我的云信息是这样的:

 { "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Website", "Parameters": { "DomainName": { "Type" : "String", "Description" : "The DNS name of an Amazon Route 53 hosted zone eg server.com", "AllowedPattern" : "(?!-)[a-zA-Z0-9-.]{1,63}(?<!-)", "ConstraintDescription" : "must be a valid DNS zone name." } }, "Mappings" : { "RegionMap" : { "us-east-1" : { "S3HostedZoneId" : "Z3AQBSTGFYJSTF", "S3WebsiteEndpoint" : "s3-website-us-east-1.amazonaws.com" }, "us-west-1" : { "S3HostedZoneId" : "Z2F56UZL2M1ACD", "S3WebsiteEndpoint" : "s3-website-us-west-1.amazonaws.com" }, "us-west-2" : { "S3HostedZoneId" : "Z3BJ6K6RIION7M", "S3WebsiteEndpoint" : "s3-website-us-west-2.amazonaws.com" }, "eu-west-1" : { "S3HostedZoneId" : "Z1BKCTXD74EZPE", "S3WebsiteEndpoint" : "s3-website-eu-west-1.amazonaws.com" }, "ap-southeast-1" : { "S3HostedZoneId" : "Z3O0J2DXBE1FTB", "S3WebsiteEndpoint" : "s3-website-ap-southeast-1.amazonaws.com" }, "ap-southeast-2" : { "S3HostedZoneId" : "Z1WCIGYICN2BYD", "S3WebsiteEndpoint" : "s3-website-ap-southeast-2.amazonaws.com" }, "ap-northeast-1" : { "S3HostedZoneId" : "Z2M4EHUR26P7ZW", "S3WebsiteEndpoint" : "s3-website-ap-northeast-1.amazonaws.com" }, "sa-east-1" : { "S3HostedZoneId" : "Z31GFT0UA1I2HV", "S3WebsiteEndpoint" : "s3-website-sa-east-1.amazonaws.com" } } }, "Resources": { "LambdaExecutionRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": [ "sts:AssumeRole" ] }] }, "Path": "/", "Policies": [{ "PolicyName": "execution", "PolicyDocument": { "Statement": [{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "dynamodb:BatchGetItem", "dynamodb:CreateTable", "dynamodb:DeleteItem", "dynamodb:DescribeTable", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": "*" }] } }] } }, "APIGatewayExecutionRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": [ "sts:AssumeRole" ] }] }, "Path": "/", "Policies": [{ "PolicyName": "execution", "PolicyDocument": { "Statement": [{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "*" }] } }] } }, "LambdaFunctionUpdate": { "Type": "AWS::Lambda::Function", "Properties": { "Code": { "ZipFile": "exports.handler = function (event, context) { context.succeed(\"Hello, World!\"); };" }, "Description": "Update handler.", "Handler": "index.handler", "MemorySize": 128, "Role": { "Fn::GetAtt": ["LambdaExecutionRole", "Arn" ] }, "Runtime": "nodejs4.3", "Timeout": 30 } }, "APIGateway": { "Type": "AWS::ApiGateway::RestApi", "Properties": { "Body": @@swagger, "FailOnWarnings": true, "Name": "smallPictures", "Description": "Structured wiki" } }, "APITDeploymentTest": { "Type": "AWS::ApiGateway::Deployment", "Properties": { "RestApiId": { "Ref": "APIGateway" }, "Description": "Deploy for testing", "StageName": "smallPicturesTesting" } }, "WebsiteBucket" : { "Type" : "AWS::S3::Bucket", "Properties" : { "BucketName": {"Ref":"DomainName"}, "AccessControl" : "PublicRead", "WebsiteConfiguration" : { "IndexDocument" : "index.html", "ErrorDocument" : "404.html" } }, "DeletionPolicy" : "Retain" }, "WebsiteBucketPolicy" : { "Type" : "AWS::S3::BucketPolicy", "Properties" : { "Bucket" : {"Ref" : "WebsiteBucket"}, "PolicyDocument": { "Statement": [{ "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": { "Fn::Join" : ["", ["arn:aws:s3:::", { "Ref" : "WebsiteBucket" } , "/*" ]]}, "Principal": "*" }] } } }, "DNS": { "Type": "AWS::Route53::HostedZone", "Properties": { "HostedZoneConfig": { "Comment": { "Fn::Join" : ["", ["Hosted zone for ", { "Ref" : "DomainName" } ]]} }, "Name": { "Ref" : "DomainName" }, "HostedZoneTags" : [{ "Key": "Application", "Value": "Blog" }] } }, "DNSRecord": { "Type": "AWS::Route53::RecordSetGroup", "Properties": { "HostedZoneName": { "Fn::Join": [ "", [ { "Ref": "DomainName" }, "." ]] }, "Comment": "Zone records.", "RecordSets": [ { "Name": { "Ref": "DomainName" }, "Type": "A", "AliasTarget": { "HostedZoneId": { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "S3HostedZoneId" ]}, "DNSName": { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "S3WebsiteEndpoint" ]} } }, { "Name": { "Fn::Join" : ["", ["www.", { "Ref" : "DomainName" }]]}, "Type": "CNAME", "TTL" : "900", "ResourceRecords" : [ {"Fn::GetAtt":["WebsiteBucket", "DomainName"]} ] } ] } } }, "Outputs": { "WebsiteURL": { "Value": { "Fn::GetAtt": ["WebsiteBucket", "WebsiteURL" ] }, "Description": "URL for website hosted on S3" } } }