我目前使用橡胶来部署(创建实例,部署代码,运行迁移等)到EC2,一切都很好.我需要将我的服务器移动到亚马逊的VPC,以打开到我的Web服务器的VPN连接,并将数据库保留在专用网络上.我到处寻找,似乎橡胶此时不支持部署到VPC实例.我见过其他支持部署到VPC实例的capistrano宝石(https://github.com/kryptek/capistrano-getservers)所以我认为这是可能的.我想继续使用橡胶进行部署,因为我花了很多时间设置它并且我对它非常满意.有没有人有关于如何自定义默认橡胶配置以部署(创建/销毁实例和部署代码)到VPC实例的建议?我将手动创建VPC,我只想创建实例并将我的应用程序部署到带有橡胶的VPC中.
先感谢您.
我在VPC A中的EC2实例上运行Tableau Server.同时,我在另一个VPC B中创建了一个postgres RDS.现在我想在Tableau Server和RDS之间建立连接.RDS VPC的CIDR为172.31.0.0/16,EC2 VPC的CIDR为10.0.0.0/16.
根据VPC中的A DB实例,在不同VPC中由EC2实例访问,我在VPC A和VPC B,pcx-xyz123之间创建了对等关系.此外,我还为VPC创建了以下路由表.
RDS VPC
Destination Target
172.31.0.0/16 local
10.0.0.0/16 pcx-xyz123
EC2 VPC
Destination Target
10.0.0.0/16 local
172.31.0.0/16 pcx-xyz123
Run Code Online (Sandbox Code Playgroud)
两个路由表都是主要的.每个都有0个子网(不确定这是否重要).
但是,我仍然无法从Tableau Server连接RDS.
这两个实例由同一帐户创建.它们都列在美国东部(俄亥俄州).所以我假设他们在同一个地区.另外两者都有us-east-2他们的主机名.从我的PC,我可以使用psql命令或pgAdmin连接到RDS.
为什么我不能连接这两个实例?
编辑:我在与Tableau Server相同的VPC的同一子网内创建了另一个EC2 Linux实例,仅用于调试目的.我以相同的方式配置了对等和路由表,并将子网与路由表相关联.但是,我仍然无法连接到EC2 Linux实例上的RDS.
我有一个任务来配置 API 网关以将流量路由到 Lambda 或负载均衡器(内部,在 VPC 下)。我认为可以使用简单的 HTTP 集成或 AWS 服务为 ALB 创建简单的集成。但是经过一段时间的谷歌搜索后,我发现只有一种解决方案 - 是配置 NLB,然后使用VPC_Link 集成。在这种情况下,一切看起来都在工作。
但是我仍然找到了一些像这样的文章,其中人们描述了如何在没有 VPC_links 的情况下集成 Api Gateway 和 LB。就我而言invalid endpoint address,将内部 ALB 与 apigateway 集成时,我总是看到错误。我想这仅适用于公共资源(面向 LB 的互联网)?
问题的第二部分。当我配置 VPC_link 时,我仍然需要在集成中提供一些端点以进行证书检查和其他事情。但是看起来这个端点仍然必须可以公开访问?问题是我在 ALB 下的服务有多个端点,我需要在这个端点提供路径Endpoint URL,这个端点应该是公开的,就像我现在看到的那样。因此,出于测试原因,我提供了我们需要执行的公共资源的 url 和端点路径。这有效,但对我来说看起来太丑了。可能有任何漂亮的解决方案。
amazon-web-services amazon-vpc aws-api-gateway aws-load-balancer
我已经建立了亚马逊虚拟私有云(VPC).在VPC内部我有2个网络,我在其中创建实例.出于安全原因,我想在这些网络上放置一些网络访问控制列表(网络ACL),除了机器防火墙.在亚马逊示例之后,我有一个公共网络(暴露于互联网访问)10.0.0.0/24和3个私人网络10.0.1.0/24,10.0.2.0/24,10.0.3.0/24.它们之间的流量被路由.
所以对于网络10.0.1.0/24作为ACL,我把它:
Inbound:
10.0.0.0/24 port 80 (HTTP)
10.0.0.0/24 port 22 (SSH)
10.0.2.0/24 port 3306 (MySql)
10.0.3.0/24 port 3306 (MySql)
Outbound
ALL ALL
Run Code Online (Sandbox Code Playgroud)
对于网络10.0.2.0/24和10.0.3.0/24:
Inbound
10.0.1.0/24 port 3306 (MySql)
Outbound
ALL ALL
Run Code Online (Sandbox Code Playgroud)
对于此处的公共网络10.0.0.0/24,我有一个公开的负载均衡器,它将流量重定向到专用网络10.0.1.0/24,其中应用程序通过HTTP进行响应:
Inbound
0.0.0.0/0 port 80 (HTTP)
0.0.0.0/0 port 443 (HTTPS)
0.0.0.0/0 port 22 (SSH)
Outbound
ALL ALL
Run Code Online (Sandbox Code Playgroud)
问题是,当我将这些规则付诸行动时,所有流量都会冻结并且应用程序无法使用.发生了什么?难道我做错了什么?
我们正在调整我们的应用程序CloudFormation模板以使用VPC.在此模板中,我们需要以编程方式生成用于VPC子网的CIDR块,以确保它们不会在CloudFormation堆栈之间发生冲突.
我最初的计划是通过将字符串连接在一起来生成CIDR,例如:
"ProxyLoadBalancerSubnetA" : {
"Type" : "AWS::EC2::Subnet",
"Properties" : {
"VpcId" : { "Ref" : "Vpc" },
"AvailabilityZone" : "eu-west-1a",
"CidrBlock" : { "Fn::Join" : [ ".", [ { "Ref" : "VpcCidrPrefix" }, "0.0/24" ] ] }
}
},
Run Code Online (Sandbox Code Playgroud)
然而,在进一步考虑之后,我们需要使用单个VPC,而不是为每个堆栈使用VPC.
AWS限制VPC使用最大的/16CIDR块(我们已经要求提高此限制,但显然不可能).这意味着我们不再可能使用此连接方法,因为我们的每个堆栈都需要总共超过255个地址的子网.
我想在运行中生成CIDR块,而不必将它们定义为CloudFormation模板的参数,
我有一个想法是每个堆栈都有一个"基本整数",并为每个子网的CIDR块添加.
例如:
"CidrBlock" : { "Fn::Join" : [ ".", [ { "Ref" : "VpcCidrPrefix" }, { "Fn::Sum", [ { "Ref" : "VpcCidrStart" }, 3 ] }, "0/24 ] ] }
Run Code Online (Sandbox Code Playgroud)
其中VpcCidrStart是一个整数,用于设置第三个CIDR八位字节应在脚本中开始的值,并且3是子网号. …
情况就是这样:
X能够连接到YTCP端口上的实例27017(EC2安全组允许)X 有mongo shellYMongoDB正在运行,接受来自X端口的连接27017X,使用mongo shell连接到数据库实例YX,查询Y和插入到Y.一切都很成功.Y:删除27017#1中提到的端口规则X仍然可以从/ insert查询到托管的数据库Y.这不是预期的.X期望EC2网络防火墙将终止违反规则的连接(安全组策略).
你能解释一下上面的#7是怎么回事吗?那怎么可以避免(那时候X什么都做不了Y)?
谢谢.
amazon-ec2 mongodb amazon-web-services amazon-vpc aws-security-group
所以,如果我有两个lambdas,一个在私有VPC中,一个不在VPC上,从公共lambda内部调用私有lambda可以工作,但我不能从私有lambda调用公共.
没有NAT设置.
为什么是这样?看来我理论上不应该从公众那里打电话给私人.
我想为公共子网中的单个 Linux EC2 实例编写一个完整的 CloudFormation 模板。我使用AWS CloudFormation 模板创建了一个以安全组为起点的 EC2 实例。此模板在您的默认 VPC 中启动一个实例。
我的目标是拥有一个自包含模板,可以在新堆栈中创建所需的所有内容,但不会创建到默认 VPC 中。我想要一个新的 VPC、安全组、路由表、互联网网关、子网并启动一个新的 Linux EC2 实例。
所以我使用了上面的模板并添加了所需的资源并使用Refs链接它们。一切都很好:VPC、子网、安全组、Internet GW、RouteTables 等。但我的 EC2 会出错,堆栈会回滚。
状态原因是:
Value () for parameter groupId is invalid. The value cannot be empty (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterValue; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx)
CloudFormation 模板中的 EC2 资源如下所示:
"EC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : { "Ref" : "InstanceType" },
"SecurityGroups" : [ { "Ref" : …Run Code Online (Sandbox Code Playgroud) 我在 AWS ECS 集群中创建了 ECS 服务。我的容器使用 awsvpc 网络模式。该服务没有负载均衡器。
但它不能触及任何公共互联网资源。
当我转到 ECS 实例并通过 ssh 进入 docker 容器时,我无法获取任何公共资源。
root@ip-10-3-1-23:/app# traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 *^C
Run Code Online (Sandbox Code Playgroud)
root@ip-10-3-1-23:/app# wget google.com
--2019-08-31 22:34:38-- http://google.com/
Resolving google.com (google.com)... 172.217.9.206, 2607:f8b0:4004:807::200e
Connecting to google.com (google.com)|172.217.9.206|:80... ^C
root@ip-10-3-1-23:/app#
Run Code Online (Sandbox Code Playgroud)
EC2 实例安全组:
入站:
Type Protocol Port Range Source Description
All TCP TCP …Run Code Online (Sandbox Code Playgroud) 我不太容易发现这些 AWS VPC 选项之间的区别。
amazon-vpc ×10
amazon-ec2 ×3
acl ×1
amazon-ecs ×1
amazon-rds ×1
aws-lambda ×1
cidr ×1
deployment ×1
mongodb ×1
networking ×1
rubber ×1
traffic ×1