Cloudformation 不支持在 apigateway 中创建 vpc 链接

2024-04-15

In aws api gateway there is a section called API Link and I can manually set that. enter image description here

问题是我在 cloudformation 文档中找不到有关如何通过 api 网关上的云形成创建 vpc 链接的任何部分。 是cloudformation不支持还是我错过了?


您可以使用 swagger 来定义使用 VPC Link 的 API 网关。这是一个完整的 CloudFormation 模板,您可以部署来测试它...

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Test backend access via API Gateway. This template provisions a Regional API Gateway proxing requests to a backend via VPC Link and Direct Connect to on-premises resources using private ip addresses.",
    "Parameters": {
        "VPCId": {
            "Description": "VPC Id for API Gateway VPC Link",
            "Type": "AWS::EC2::VPC::Id"
        },
        "NLBSubnetList": {
            "Type": "List<AWS::EC2::Subnet::Id>",
            "Description": "Subnet Ids for provisioning load balancer supporting the VPC Link"
        },
        "BackendBaseEndpoint": {
            "Description": "The backend service base url including protocol. e.g.: https://<url>",
            "Type": "String",
            "Default": "https://mybackend.dev.mycompany.com"
        },
        "TargetIpAddresses": {
            "Type": "CommaDelimitedList",
            "Description": "Comma separated list of NLB target ip addresses. Specify two entries.",
            "Default": "10.78.80.1, 10.79.80.1"
        }
    },
    "Resources": {
        "API": {
            "Type": "AWS::ApiGateway::RestApi",
            "Properties": {
                "Name": "Test Api",
                "Description": "Test Api using VPC_LINK and AWS_IAM authorisation",
                "Body": {
                    "swagger": "2.0",
                    "info": {
                        "title": "Test Api"
                    },
                    "schemes": [
                        "https"
                    ],
                    "paths": {
                        "/{proxy+}": {
                            "x-amazon-apigateway-any-method": {
                                "parameters": [
                                    {
                                        "name": "proxy",
                                        "in": "path",
                                        "required": true,
                                        "type": "string"
                                    }
                                ],
                                "responses": {},
                                "security": [
                                    {
                                        "sigv4": []
                                    }
                                ],
                                "x-amazon-apigateway-integration": {
                                    "responses": {
                                        "default": {
                                            "statusCode": "200"
                                        }
                                    },
                                    "requestParameters": {
                                        "integration.request.path.proxy": "method.request.path.proxy"
                                    },
                                    "uri": {
                                        "Fn::Join": [
                                            "",
                                            [
                                                {
                                                    "Ref": "BackendBaseEndpoint"
                                                },
                                                "/{proxy}"
                                            ]
                                        ]
                                    },
                                    "passthroughBehavior": "when_no_match",
                                    "connectionType": "VPC_LINK",
                                    "connectionId": "${stageVariables.vpcLinkId}",
                                    "httpMethod": "GET",
                                    "type": "http_proxy"
                                }
                            }
                        }
                    },
                    "securityDefinitions": {
                        "sigv4": {
                            "type": "apiKey",
                            "name": "Authorization",
                            "in": "header",
                            "x-amazon-apigateway-authtype": "awsSigv4"
                        }
                    }
                },
                "EndpointConfiguration": {
                    "Types": [
                        "REGIONAL"
                    ]
                }
            },
            "DependsOn": "VPCLink"
        },
        "APIStage": {
            "Type": "AWS::ApiGateway::Stage",
            "Properties": {
                "StageName": "dev",
                "Description": "dev Stage",
                "RestApiId": {
                    "Ref": "API"
                },
                "DeploymentId": {
                    "Ref": "APIDeployment"
                },
                "MethodSettings": [
                    {
                        "ResourcePath": "/*",
                        "HttpMethod": "GET",
                        "MetricsEnabled": "true",
                        "DataTraceEnabled": "true",
                        "LoggingLevel": "ERROR"
                    }
                ],
                "Variables": {
                    "vpcLinkId": {
                        "Ref": "VPCLink"
                    }
                }
            }
        },
        "APIDeployment": {
            "Type": "AWS::ApiGateway::Deployment",
            "Properties": {
                "RestApiId": {
                    "Ref": "API"
                },
                "Description": "Test Deployment"
            }
        },
        "VPCLink": {
            "Type": "AWS::ApiGateway::VpcLink",
            "Properties": {
                "Description": "Vpc link to GIS platform",
                "Name": "VPCLink",
                "TargetArns": [
                    {
                        "Ref": "NLB"
                    }
                ]
            }
        },
        "NLBTargetGroup": {
            "Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
            "Properties": {
                "Name": "NLBTargetGroup",
                "Port": 443,
                "Protocol": "TCP",
                "TargetGroupAttributes": [
                    {
                        "Key": "deregistration_delay.timeout_seconds",
                        "Value": "20"
                    }
                ],
                "TargetType": "ip",
                "Targets": [
                    {
                        "Id": { "Fn::Select" : [ "0", {"Ref": "TargetIpAddresses"} ] },
                        "Port": 443,
                        "AvailabilityZone": "all"
                    },
                    {
                        "Id": { "Fn::Select" : [ "1", {"Ref": "TargetIpAddresses"} ] },
                        "Port": 443,
                        "AvailabilityZone": "all"
                    }
                ],
                "VpcId": {
                    "Ref": "VPCId"
                },
                "Tags": [
                    {
                        "Key": "Project",
                        "Value": "API and VPC Link Test"
                    }
                ]
            }
        },
        "NLB": {
            "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
            "Properties": {
                "Type": "network",
                "Scheme": "internal",
                "Subnets": {
                    "Ref": "NLBSubnetList"
                }
            }
        },
        "NLBListener": {
            "Type": "AWS::ElasticLoadBalancingV2::Listener",
            "Properties": {
                "DefaultActions": [
                    {
                        "Type": "forward",
                        "TargetGroupArn": {
                            "Ref": "NLBTargetGroup"
                        }
                    }
                ],
                "LoadBalancerArn": {
                    "Ref": "NLB"
                },
                "Port": "443",
                "Protocol": "TCP"
            }
        }
    },
    "Outputs": {
        "NetworkLoadBalancerArn": {
            "Value": {
                "Ref": "NLB"
            },
            "Description": "The network elastic load balancer Amazon resource name"
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cloudformation 不支持在 apigateway 中创建 vpc 链接 的相关文章

  • S3 存储桶可以生成自己的对象键名称吗?

    我正在将 Amazon API Gateway 配置为 S3 存储桶的代理 理想情况下 我希望客户端能够将文件发布到存储桶 让 S3 为其分配一个文件名 然后在响应中返回该名称 我不想让客户端能够指定文件名 这可能吗 设置代理的文档根本没有
  • 具有维度的 Amazon Web Service CloudWatch 自定义指标

    我正在尝试将数据推送到 AWS CloudWatch 上的自定义指标 但想了解有关维度的更多信息以及如何使用它们 我已经阅读了 AWS 文档 但它并没有真正解释它们的用途以及它如何影响 AWS 管理控制台中的图形 UI 维度是进一步细分指标
  • 无法使用 python 在 aws cdk 中编写策略文档

    您好 我正在开发 AWS CDK 我正在努力制定政策 下面是我的代码 MWSECSServiceRole iam Role self MWSECSServiceRole assumed by iam ServicePrincipal ecs
  • 同一 Kinesis 流的多个不同消费者

    我有一个 Kinesis 生产者 它将单一类型的消息写入流 我想在多个完全不同的消费者应用程序中处理这个流 因此 对于给定的主题 流 具有单个发布者的发布 订阅 我还想利用检查点来确保每个消费者处理写入流的每条消息 最初 我为所有消费者和生
  • AWS Lambda python API 调用方法不返回 JSON - 不可序列化?

    我有一个 Lambda 函数 它是对 API 的基本 Python GET 调用 它在本地运行良好 但是当我上传到 Lambda 以及请求库 时 它不会从 API 调用返回 JSON 响应 我只是希望它将整个 JSON 对象返回给调用者 我
  • AWS DMS 无法截断 SQL 事务日志

    我们正在运行 AWS DMS 以 SQL 作为源 以 DynamoDB 作为目标 我们很难截断事务日志 我们看到每个 AWS DMS 有 2 个 SQL 任务 如下所示 begin transaction WVGLQ7HFWFWJCCPK4
  • 如何动态更新我的 AWS CloudWatch 控制面板?

    我在 CloudWatch 中有几个仪表板 它们代表我的基础设施的静态视图 例如 自动扩展工作组中当前正在运行的实例数量 或者各种关键 EC2 实例的 CPU 磁盘状态 但是 当我添加新实例时 我总是需要手动更新仪表板以将它们包含在显示中
  • Elastic Beanstalk、Bundler 找不到 gem“bundler”的兼容版本

    我已经尝试过将 Elastic Beanstalk 用于 Rails 当我运行 eb deploy 时出现此错误 我需要至少安装bundler 1 8 4 知道如何解决这个问题吗 Bundler could not find compati
  • 如何在docker的keycloak中添加SSL

    我在将 SSL 证书添加到在 docker 上运行的 Keycloak 时遇到问题 我通过负载均衡器从 AWS EC2 获得了 SSL 证书 但不知道如何将其添加到 docker 上的 Keycloak 中 我正在通过谷歌搜索 但尚未找到任
  • AmazonServiceException:用户无权执行:dynamodb:DescribeTable 状态代码:400;错误代码:AccessDeniedException

    我原本以为这个问题是由于区域不匹配造成的 但是在更改区域后 在尝试此处找到的 Amazon AWS 示例时 我仍然遇到以下错误 DynamoDB映射器 https github com awslabs aws sdk android sam
  • 从 EC2 W2008 实例创建 AMI - 为什么从来没有获得密码?

    我正在尝试做什么 我正在尝试克隆 EC2视窗2008通过管理控制台实例 该实例基于 Windows Server2008 i386 Base v104 ami 92ba43fb 但上面安装了许多应用程序 我想为新实例保留这些应用程序 发生了
  • 使用 Terraform 管理访问 RDS 数据库的凭据时出现问题

    我通过 Terraform 创建了一个秘密 该秘密用于访问也在 Terraform 中定义的 RDS 数据库 并且在秘密中 我不想包含username and password 因此我创建了一个空密钥 然后在 AWS 控制台中手动添加凭证
  • 具有服务器端加密 s3 存储桶的 AWS Cloudfront

    这是对这个问题 https stackoverflow com questions 50166557 how can a cloudfront distribution an aws kms key to get an s3 image e
  • 如何在 PuTTY 中保存并运行 Java 文件?

    我是 AWS 亚马逊网络服务 的新手 所以这可能是一个基本问题 我在 AWS 上创建了一个 EC2 实例 我有一台 Windows 计算机 因此我使用 PUTTY 来连接 Linux 实例 连接到我的 EC2 实例后 我使用以下命令编写 J
  • 从 Amazon API 网关终端节点输出纯文本内容

    使用 Amazon 的 API Gateway 我可以创建一个端点 该端点将调用输出纯文本的 lambda 函数 但是 当我在端点上发出请求时 输出会返回默认内容类型 application json 这将输出用引号括起来的纯文本响应 我想
  • 带有 AWS S3 文件的 Icecast 服务器

    我目前正在运行 Icecast 服务器 用于在 EC2 实例上传输音频 目前我所有的 mp3 文件都存储在 EC2 实例上 我想将它们移动到 AWS S3 进行存储 到目前为止 我已经能够找到能够更新播放列表 https mediareal
  • 如何将域添加到 aws 上的现有 SSL 证书

    我有一个与 Amazon Web Services 上的负载均衡器关联的 SSL 证书 我想在该证书上有一个额外的域 我的问题是 是否可以向 aws 上现有的 ssl 证书添加额外的域 我发现您可以在创建证书时添加其他名称 但我不知道如何使
  • 如何使用具有自定义身份验证的 AWS cognito 创建临时 s3 上传安全令牌

    因此 我对 Cognito 的 Amazon 文档中有关其声明的用例之一的内容感到有点困惑 使用您自己的身份系统 允许您的应用程序将数据保存到 AWS 云 就我而言 我想给他们 aws 令牌 以便他们从移动客户端直接上传到 s3 而无需将我
  • 在 ec2 上托管 Rails

    我想将 Rails 部署到亚马逊 ec2 上 我看过 poolparty 和 ec2onrails 但似乎都不再维护了 人们用什么来做到这一点 都是自制的木偶和卡皮斯特拉诺 还是有一个项目可以让我继续下去 我可以推荐两个项目 如果您有一个
  • 如何在 Elastic Beanstalk 上添加 PATH

    我想将 PATH 添加到包上eb deploy 软件包安装到 var www html vendor bin 可以通过SSH手动添加 但是如何使用配置文件添加PATH 我有这样的配置文件 ebextensions ec2 config 01

随机推荐