gpt4 book ai didi

amazon-web-services - 将值从 CloudFormation 传递到 Swagger 文件

转载 作者:行者123 更新时间:2023-12-03 07:15:38 25 4
gpt4 key购买 nike

我正在使用 CloudFormation 创建我的基础设施。

我希望使用“API Gateway Extensions to OpenAPI”创建 API

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html

相关代码段如下所示。

        "MorningApi": { 
"Type": "AWS::ApiGateway::RestApi",
"Properties": {
"Description": {
"Fn::Sub": "${Stage}-MorningApi"
},
"Name": {
"Fn::Sub": "${Stage}-MorningApi"
},
"EndpointConfiguration": {
"Types": [
"REGIONAL"
]
},
"BodyS3Location": {
"Bucket" : "cf-morning",
"Key" : "nested-templates-stack/MorningApiStatusStackSwagger.json"
}
}
},
"MorningApiloadBalancer": {
"Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
"Properties": {
"Name": {
"Fn::Sub": "${Stage}-MorningApiloadBalancer"
},
"Subnets": [
{
"Ref": "PrivateASubnet"
},
{
"Ref": "PrivateBSubnet"
},
{
"Ref": "PrivateCSubnet"
}
],
"Type": {
"Ref": "ELBType"
},
"Scheme": "internal",
"IpAddressType": {
"Ref": "ELBIpAddressType"
}
}
}

我需要将“MorningApiloadBalancer”的“DNSName”传递到位于S3位置的swagger文件。我找不到办法做到这一点。任何帮助表示赞赏。

最佳答案

我之前没有尝试过将 swagger 与 API 网关一起使用。

使用Fn::Transform

使用 Fn::Tranform 宏存储在 S3 中的 Swagger 文件,它基本上会获取 swagger 文件的内容并转换为 cloudformation。

{
"APIGateway": {
"Type": "AWS::ApiGateway::RestApi",
"Name": "myapi",
"Properties": {
"Body": {
"Fn::Transform": {
"Name": "AWS::Include",
"Parameters": {
"Location": {
"Fn::Sub": "s3://${AWS::AccountId}-swagger-files/${SwaggerFile}"
}
}
}
}
}
}
}

内联 Swagger 定义

我看到一个示例,其中 swagger 定义嵌入到 cloudformation 模板中。如果这样做,您可以在 swagger 定义中使用内部函数。对于您的情况,您可以使用 Ref 获取负载均衡器的 dns 名称。

"GreetingApi": {
"Type": "AWS::ApiGateway::RestApi",
"Properties": {
"Name": "Greeting API",
"Description": "API used for Greeting requests",
"FailOnWarnings": true,
"Body": {
"swagger": "2.0",

"paths": {
"/greeting": {
"get": {
"x-amazon-apigateway-integration": {
"uri": {
"Fn::Join": [
"",
[
"arn:aws:apigateway:",
{
"Ref": "AWS::Region"
},
":lambda:path/2015-03-31/functions/",
{
"Fn::GetAtt": [
"GreetingLambda",
"Arn"
]
},
"/invocations"
]
]
}
}
}
}
}
}
}
}

获取 DNS 名称

我想你已经知道这一点了。

"Fn::GetAtt" : [ "MorningApiloadBalancer" , "DNSName" ]

希望这有帮助。

关于amazon-web-services - 将值从 CloudFormation 传递到 Swagger 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59557790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com