标签: amazon-vpc

通过AWS-lambda函数访问在EC2实例中运行的数据库

我在python3.6中编写了lambda函数来访问在EC2实例中运行的postgresql数据库。

       psycopg2.connect(user="<USER NAME>",
                        password="<PASSWORD>",
                        host="<EC2 IP Address>",
                        port="<PORT NUMBER>",
                        database="<DATABASE NAME>")
Run Code Online (Sandbox Code Playgroud)

创建了具有所需依赖项的部署包作为 zip 文件并上传到 AWS lambda。为了构建依赖项,我遵循了参考指南。

并且还将虚拟私有云 (VPC)配置为默认云,还包括 Ec2 实例详细信息,但我无法从数据库获取连接。尝试从 lambda 连接数据库时导致超时。

在此输入图像描述

拉姆达函数:

from __future__ import print_function
import json
import ast,datetime
import psycopg2


def lambda_handler(event, context):
    received_event = json.dumps(event, indent=2)
    load = ast.literal_eval(received_event)

    try:
        connection = psycopg2.connect(user="<USER NAME>",
                                        password="<PASSWORD>",
                                        host="<EC2 IP Address>",
                                        # host="localhost",
                                        port="<PORT NUMBER>",
                                        database="<DATABASE NAME>")

        cursor = connection.cursor()
        postgreSQL_select_Query = "select * from test_table limit 10"
        cursor.execute(postgreSQL_select_Query)
        print("Selecting rows …
Run Code Online (Sandbox Code Playgroud)

postgresql amazon-s3 amazon-web-services amazon-vpc aws-lambda

3
推荐指数
1
解决办法
2471
查看次数

如果子网组必须有 2 个不同可用区的 2 个子网,我如何执行 RDS 的单可用区部署?

每当我创建 RDS 实例并创建数据库子网组时,系统都会要求我选择 2 个不同可用区的 2 个子网。
那么如何进行单可用区部署以及多可用区部署有什么用呢?

amazon-web-services amazon-rds amazon-vpc

3
推荐指数
1
解决办法
2312
查看次数

专用链路与 VPC 对等互连

我需要在 VPC 之间建立连接。我的计划是 VPC 对等互连,但客户要求提供专用链接,因为他们听说这是安全的方式。但我最关心的是私有链接的性能开销。我的理解(可能是错误的);在专用链接架构中,有一个额外的 NLB。这不会因为额外的网络跃点而引入延迟吗?

cloud networking amazon-web-services amazon-vpc

3
推荐指数
1
解决办法
4950
查看次数

Terraform - 在 VPC 对等连接之间授权安全组

我在 AWS 上运行,并且有 VPC-A 和 VPC-B 我在两个 VPC 之间有一个 VPC 对等互连

我想要允许从 VPC-B 中的 SecurityGroupB 到 VPC-A 中的 SecurityGroupA 的流量

到目前为止,我通过以下调用使用 ruby​​ 客户端完成了此操作

        security_group_a.authorize_ingress(
          ip_permissions: [
            {
              from_port: "-1",
              ip_protocol: "-1",
              to_port: "-1",
              user_id_group_pairs: [
                {
                  description: "Accept all traffic from SecurityGroupB",
                  group_id: security_group_b.id,
                  vpc_id: vpc_b.id,
                  vpc_peering_connection_id: peering_connection_id,
                },
              ],
            },
          ]
        )
Run Code Online (Sandbox Code Playgroud)

我查看了 terraform 的aws_security_group_rule但找不到与上述设置等效的任何内容。

当我尝试将安全组 B 放入安全组 AI 的入口时,出现以下错误:

Error: Error authorizing security group rule type ingress: InvalidGroup.NotFound: You have specified two resources that belong to …
Run Code Online (Sandbox Code Playgroud)

amazon-vpc terraform aws-security-group terraform-provider-aws

3
推荐指数
1
解决办法
3999
查看次数

AWS Internet Gateway 看不到 VPC

在AWS命令控制台中,我有两个VPC,如以下屏幕截图所示:

可用 VPC 列表

但是当我创建一个新的 Internet 网关以允许外部流量进入此 VPC 时,似乎找不到该 VPC,只能创建一个新的:

无法选择现有 VPC

这令人沮丧,因为创建 VPC 的原始“独立”方式允许我放入公共子网 IP 以及可用区域等,而“创建 VPC”选项并没有给我太多帮助。我在这里犯了什么错误?

networking amazon-web-services amazon-vpc

3
推荐指数
1
解决办法
1263
查看次数

私有子网内的 lambda 如何访问公有子网中的 EC2?

我在公共子网内创建了一个 EC2 实例(以便我可以从家庭网络访问它),并在 VPC 的私有子网内创建了一些 Lambda。

我的第一个 lambda 可以自由访问互联网(通过 NAT 网关)并完成其工作。即每天一次从互联网获取文件并将其上传到 S3。

我的第二个 lambda 应该从 S3 检索该文件(它没有问题)读取该文件,然后将数据上传到在 EC2 实例上运行的 MySQL。它无法连接到数据库(使用 EC2 的公共或私有 IP),并且 Cloudwatch 日志显示会话超时,这让我认为这是一个网络问题。

我有一个第三个 lambda,它还需要与 EC2/数据库实例交互。

我的安全组允许来自我的家庭网络 IP、NAT 网关和 VPC IP 范围的所有传入流量。允许所有出站流量。

我很欣赏在公共子网中以这种方式设置 EC2/DB 的情况并不常见,但我更喜欢在家中使用 Sequel Pro 与它进行交互。

但是,我的设置可能吗?例如,我的私有子网 lambda 可以与公共子网 ec2 实例交互吗?如果是这样,有人知道我如何才能做到这一点吗?

amazon-ec2 amazon-web-services amazon-vpc aws-lambda

3
推荐指数
1
解决办法
1996
查看次数

VPC 中的 Terraform Lambda(与 MongoDB Atlas 对等)连接 NAT 网关

我已经构建了一个 Terraform 配置,用于部署 MongoDB atlas 云集群,并使用我的 AWS 账户设置 VPC 对等点。terraform 配置将凭证存储在 AWS Secrets Manager 中。不幸的是,我的 Lambda 无法访问 Secrets Manager API 端点或 Atlas 上托管的 MongoDB 集群。我读到我需要在我的 VPC 上设置 NAT 网关才能访问公共互联网。我不是网络专业人士,我尝试添加一堆不同的配置但无济于事。请帮忙:

  1. 我是否需要为我的 VPC 设置 NAT 网关才能访问 Secrets Manager?或者我可以以某种方式将 Secret 托管在 VPC 中吗?这里的最佳实践是什么?
  2. 我是否需要为 Lambda 设置 NAT 网关才能访问 Atlas 托管的 MongoDB 集群,即使它们位于同一 VPC 上并且我已将 Lambda 所在的安全组列入白名单?
  3. 如何设置 NAT 网关以允许我的 Lambda 连接到 Terraform 中的 Atlas 集群?

理想情况下,我想尽可能地锁定与外部互联网的连接,但如果这不是一个选择,我可以接受任何可行的实现。

这是我的 Terraform 配置

variable "admin_profile" {
  type = string
  default = "superadmin"
}


variable "region" {
  type …
Run Code Online (Sandbox Code Playgroud)

amazon-vpc aws-lambda mongodb-atlas terraform-provider-aws aws-secrets-manager

3
推荐指数
1
解决办法
1644
查看次数

使用 Kinesis Firehose 时,VPC 内的 Elasticsearch 不断出现 503 错误

我正在使用Amazon Kinesis Data Generator将数据发送到测试 Kinesis Firehose Stream,以便在 Elasticsearch Service 集群中建立索引。

数据生成器发送一个相当基本的 json 文档进行处理,流元素工作正常,Lambda 转换也是如此。到目前为止,我已经验证并能够测试所有内容。仅当向我的 VPC 内的 Elasticsearch 发出请求时,我才会收到错误。

如果我将管道切换为使用公共 Elasticsearch 域,则效果很好,但当我在 VPC 内使用 Elasticsearch 域时,会收到503 错误。这是每个请求的一致错误,因此不是容量问题。

这是我看到的错误的示例。只是一个通用的 503。我不确定这是否来自负载均衡器或目标(Elasticsearch 本身)。

{
 "deliveryStreamARN": "arn:aws:firehose:eu-west-2:xxx:deliverystream/firehose-test",
 "destination": "arn:aws:es:eu-west-2:xxx:domain/elasticsearch-test",
 "deliveryStreamVersionId": 1,
 "message": "Error received from Elasticsearch cluster. <html><body><h1>503 Service 
 Unavailable</h1>\nNo server is available to handle this request.\n</body></html>",
 "errorCode": "ES.ServiceException",
 "processor": "arn:aws:lambda:eu-west-2:xxx:function:transform-test:$LATEST"
}
Run Code Online (Sandbox Code Playgroud)

VPC内的其他应用程序可以毫无问题地使用Elasticsearch服务。这似乎是 Firehose 特有的东西。

我已经阅读并重新阅读了文档,但无法弄清楚为什么相同的数据管道在公共 ES 域上工作正常,但在我的 VPC 内的 ES 域上却不能。我已经仔细检查了所有角色、策略、安全组和子网。Firehose 和 Elasticsearch 都使用相同的 VPC、安全组和子网。安全组的入站规则允许HTTPS。一切看起来都是正确的,但仍然出现错误,并且 Elastic 中没有任何内容被索引。

我还阅读了这篇 AWS 博客文章大约 …

amazon-web-services amazon-vpc amazon-kinesis amazon-elasticsearch amazon-kinesis-firehose

3
推荐指数
1
解决办法
1753
查看次数

AWS:在面向互联网的 ALB 后面的私有子网中部署 Web 服务器

从成本优化的角度来看,在私有子网而不是公共子网中部署 Web 服务器有什么好处吗?(在面向互联网的 ALB 后面)

这两种方法的优缺点是什么?

subnet amazon-web-services amazon-vpc

3
推荐指数
1
解决办法
3672
查看次数

我什么时候应该创建不同的 VPC 而不仅仅是不同的子网?

我假设我正在开发一个项目。

创建不同的子网并使用 NACL 保护它们比创建不同的 VPC 更容易。

此外,如果您有 2 个 VPC,您可能需要通过 VPN 连接到它们...因此您将需要 2 个 VPN 连接或 1 个 VPN + Transit Gateway。

我的问题是:

如果我正在开发一个项目,什么时候创建多个 VPC 才真正有趣?

amazon-web-services amazon-vpc

3
推荐指数
1
解决办法
2199
查看次数