aws apigateway 使用httpapi私有集成ecs服务

news2024/12/25 9:02:34

参考资料

  • https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/http-api-private-integration.html
  • https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/http-api-develop-integrations-private.html

在《aws apigateway 基础概念和入门示例》中我们提到apigateway支持的集成方式

在这里插入图片描述

本文介绍的私有集成是http api集成的一种,目的是通过apigateway将ecs服务暴露为api接口。具体的架构如下图所示

       您在本教程中创建的 API 的架构概述。客户端使用 API 网关 HTTP API 通过 VPC 链接访问您的 Amazon ECS 服务。

注意点

  • 私有集成,所有资源必须归同一AWS账户所有(包括负载均衡器或 AWS Cloud Map 服务、VPC 链接和 HTTP API)
  • 默认私有集成流量使用 HTTP 协议
  • 私有集成使用 VPC link来封装 API Gateway 与目标 VPC 资源之间的连接。创建link时会创建托管eni。如果 60 天内未通过 VPC link发送任何流量,其状态会变为 INACTIVE,并删除 VPC link的所有网络接口。请求恢复时再创建eni
  • 创建 VPC link后,无法更改其子网或安全组

官方提供了cloudmation模板,创建vpc基础设施和ecs服务,并将ecs任务挂载到elb上,我们可以使用现有的集群,手动完成这一步骤。

ecs任务定义相关的模板如下,使用该模板创建任务定义

AWSTemplateFormatVersion: "2010-09-09"

Resources:
  PrivateIntegrationsTutorialServiceTaskDef914930A0:
    Type: "AWS::ECS::TaskDefinition"
    Properties:
      ContainerDefinitions:
        - Essential: true
          Image: public.ecr.aws/nginx/nginx:perl
          LogConfiguration:
            LogDriver: awslogs
            Options:
              awslogs-group: !Ref PrivateIntegrationsTutorialServiceTaskDefwebLogGroup
              awslogs-stream-prefix: PrivateIntegrationsTutorialService
              awslogs-region: cn-north-1
          Name: web
          PortMappings:
            - ContainerPort: 80
              Protocol: tcp
      Cpu: "512"
      ExecutionRoleArn: "arn:aws-cn:iam::xxxxxxxxxxx:role/ecsTaskExecutionRole"
      Memory: "1024"
      NetworkMode: awsvpc
      RequiresCompatibilities:
        - FARGATE
      # TaskRoleArn: "arn:aws-cn:iam::xxxxxxxxxxx:role/ecsTaskRole"
  PrivateIntegrationsTutorialServiceTaskDefwebLogGroup:
    Type: "AWS::Logs::LogGroup"
    DeletionPolicy: Delete

查看堆栈任务定义创建

aaa

使用任务定义创建服务,手动挂载到alb的8097端口上,尝试访问

http://main-alb-1897344746.cn-north-1.elb.amazonaws.com.cn:8097/

创建vpclink,apigateway在子网中创建对应的网卡,作为访问vpc内ecs任务的入口
aaa

创建的网卡如下

aaa

创建http api,设置ANY方法贪婪匹配,为方法配置iam授权

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bDPhCbn1-1678034556865)(assets/image-20230305233544966.png)]

配置api私有集成

在这里插入图片描述

将集成添加到路由中

http api会自动部署,直接测试api

在这里插入图片描述

终端访问,不知为何,请求一直卡住,最后一直报错503

最后检查发现,文档中提到要将网卡创建在私有子网中。我这里创建的alb是internet-facing,由于这两个网卡不会分配公有ip,因此无法访问lb,导致503

$ awscurl --service execute-api -X GET --region cn-north-1  https://5o8m4t2r57.execute-api.cn-north-1.amazonaws.com.cn/hello
{"message":"Service Unavailable"}
requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: https://5o8m4t2r57.execute-api.cn-north-1.amazonaws.com.cn/hello

重新创建vpc link选择带nat的私有子网试试,报错变成了500

$ awscurl --service execute-api -X GET --region cn-north-1  https://5o8m4t2r57.execute-api.cn-north-1.amazonaws.com.cn
{"message":"Internal Server Error"}
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: https://5o8m4t2r57.execute-api.cn-north-1.amazonaws.com.cn/

只能试试是不是alb internet-facing的问题,创建一个internal的alb,貌似还是不行。

暂时不知道怎么解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue2.0开发之——购物车案例-Goods组件封装-把购买数量传给counter组件(52)

一 概述 Goods组件中导入Counter组件设置Counter组件的数量 二 Goods组件中导入Counter组件 2.1 Goods组件中导入Counter组件 import Counter from "/components/Counter/Counter.vue";2.2 Goods组件中注册Counter组件 components:{Counter }2.3 Goods组件中使用…

GDKOI2023游记+一周模拟赛题解

温馨提示: 1)有些链接需要在本校OJ上的博客里才能打开。2)没更新完。 Day -6(3.4) 晚上打了场AtCoder,rank1515rank 1515rank1515,切了5题,信心。 zswangziye的atcoder账号 打T5的时候心态不稳&#xff…

2022年MathorCup数学建模A题大规模指纹图像检索的模型与实现解题全过程文档加程序

2022年第十二届MathorCup高校数学建模 A题 大规模指纹图像检索的模型与实现 原题再现 在生物特征识别领域,指纹作为最具独特性与持久性的生物特征之一,被广泛应用于身份识别。   指纹识别过程分为特征提取和比对两个环节。其中特征提取环节会提取用于…

matplotlib: 绘制柱状图

通过matplotlib绘制柱形图 第一个例子 from matplotlib import pyplot as plty [10, 11, 12, 11, 9, 8, 13, 10] # 创建y轴坐标 x list(range(1,9)) # 创建x轴坐标# 创建x轴显示的参数(此功能在与在图像中x轴仅显示能被10整除的刻度,避免刻度过多分…

比亚迪:全球最大电动汽车制造商的坎坷成长之路

来源:猛兽财经 作者:猛兽财经 特斯拉(TSLA)首席执行官埃隆马斯克表示,特斯拉最接近的竞争对手可能是一家中国电动汽车公司。猛兽财经认为,沃伦•巴菲特支持的比亚迪(0211)可能是马斯…

在ubuntu上部署与使用docker(python)

1.安装Docker首先,更新现有的包列表sudo apt update接下来安装一些允许童HTTPS才能使用的软件包:sudo apt install apt-transport-https ca-certificates curl software-properties-common然后将官方Docker存储库的GPG秘钥添加到您的系统curl -fsSL http…

关于 C# 引用参数和值参数

关于 C# 引用参数和值参数 C# 数据类型分为值类型和引用类型,两者的区别在于值类型的数据存储在栈中,而引用类型的数据存储在堆中,但是栈中会存放指向存储数据的堆的位置。 传递参数时,传递的是数据栈中的值,实参将数…

高等数学——一元函数微分学

文章目录导数与微分概念几何意义连续、可导、可微之间的关系求导法则基本初等函数的导数公式有理运算法则复合函数求导法奇偶性和周期性隐函数求导反函数求导参数方程求导对数求导法高阶导数概念常用的高阶导数公式微分中值定理和导数的应用微分中值定理导数的应用函数的单调性…

巾帼绽芬芳 一起向未来(下篇)

编者按:为了隆重纪念纪念“三八”国际妇女节113周年,快来与你全方位、多层次分享交流“三八”国际妇女节的前世今生。分上篇(节日简介、节日发展和节日意义)、中篇(节日活动宗旨和世界各国庆祝方式)和下篇&…

Linux学习第二十节-NTP网络时间协议

1.概念 NTP(Network Time Protocol)网络时间协议基于UDP用于网络时间同步的协议,使网络中的计算机时钟同步到UTC(世界统一时间),再配合各个时区的偏移调整就能实现精准同步对时功能。 chrony是网络时间协议NTP的实现方式, Chron…

three.js 纹理贴图的使用

刚刚入门的小伙伴请先查看 three.js 基础认识与简单应用 本文章中的两个注意点,下面也有提到,分别是: 1、 vue项目中使用的贴图路径-->需要把 static文件夹 放到 public文件夹下,并使用 static 开头的绝对路径。 2、使用环境遮挡贴图时&a…

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成-阿里云物联网手动接入步骤

基础资料基于Air780E开发板:Air780E文档中心简介:AT开发探讨重点本系列主要探讨MQTT手动接入腾讯云物理网平台的基本操作及手动鉴权步骤、信息订阅及发布的基本原理。参考阅读:物联网模组AT命令接入云平台(1)-MQTT基本…

移动硬盘怎么恢复数据?怎么恢复硬盘删除的数据

移动硬盘可以随时插上或拔下,小巧而便于携带的硬盘存储器,以较高的速度与系统进行数据传输。由于其存储空间较大,性价比较高,存储和传输数据快速简便,是很多职场人士必备的外置设备之一。移动硬盘怎么恢复数据&#xf…

cuda代码高效策略--b站看课的笔记

1.1 高效公式 要么增大数据量,要么减少每个线程的内存(每个线程读取的数据量变少,每个线程的读取数据的速度变快(转变存储方式,对读取慢的地方做优化–合并全局内存)) 1.2 合并全局内存 一个线…

电子台账:模板制作之二——行过滤(垂直过滤)

1 简介大部分情况下,企业数据源表格中,只有部分行的数据可用于电子台账。例如,一共100行数据,我们只要取得其中20行即可。如果所有数据一股脑全部导入到台账中,再手工删除不需要的行,太麻烦了,有…

js变量和函数提升

1、变量提升 变量提升是JavaScript 中比较“奇怪”的现象,它允许在变量声明之前即被访问 (仅存在于var声明变量) 注意: 1.变量在未声明即被访问时会报语法错误 2.变量在var声明之前即被访问,变量的值为 undefined 3.let/const声明的变量不存在变量提升…

sqli-labs通关lesson36-40

1.lesson36 union select判断注入:为单引号注入?id1%df-- 查数据库:?id-1%df union select 1,2,database()-- 2.lesson-37 报错注入判断注入:为单引号注入通过下方判断password为单引号注入unamez&passwdg%df -- &submitSubmit查数…

神经网络之反向传播算法(自适应梯度算法Adagrad)

文章目录自适应梯度算法(Adagrad)1、算法原理2、算法实现2.1 训练过程2.2 测试过程及结果3、参考源码及数据集自适应梯度算法(Adagrad) 自适应梯度算法(Adaptive gradient algorithm,Adagrad)与…

惊!初中生也来卷了……

大家好,我是良许。 前两天在抖音直播的时候,突然来了一位不速之客…… 他自称是初中生,一开始我还有点不太相信,直到跟他连麦,听到他还略带一些稚嫩的声音,我才知道,他没有骗我…… 他说他想学…

Dynamic Movement Primitives (DMP) 学习

Dynamic Movement Primitives (DMP) 学习 【知乎】Dynamic Movement Primitives介绍及Python实现与UR5机械臂仿真 1. DMP的建模过程 链接:Dynamic Movement Primitives介绍及Python实现与UR5机械臂仿真 - 知乎 (zhihu.com) 沙漏大佬!!&am…