标签: amazon-vpc

使用VPC配置添加AWS Lambda会导致访问S3时出现超时

我正在尝试从AWS Lambda访问我的VPC上的S3和资源,但由于我将AWS Lambda配置为访问VPC,因此在访问S3时会超时.这是代码

from __future__ import print_function

import boto3
import logging
import json

print('Loading function')

s3 = boto3.resource('s3')

import urllib

def lambda_handler(event, context):
    logging.getLogger().setLevel(logging.INFO)
    # Get the object from the event and show its content type
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
    print('Processing object {} from bucket {}. '.format(key, bucket))
    try:
        response = s3.Object(bucket, key)
        content = json.loads(response.get()['Body'].read())
        # with table.batch_writer() as batch:
        for c in content:
            print('     Processing Item : ID' + str(c['id']))
            # ##################
            # Do custom processing …
Run Code Online (Sandbox Code Playgroud)

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

31
推荐指数
1
解决办法
1万
查看次数

AWS VPC 识别私有和公有子网

我在 AWS 账户中有一个 VPC,并且有 5 个与该 VPC 关联的子网。子网有 2 种类型 - 公共和私有。如何识别哪个子网是公共的,哪个是私有的?每个子网都有 CIDR 10.249.?.? 范围。

基本上,当我在该子网中使用 ec2SubnetIds 列表启动 EMR 时,它说 *** 子网配置无效:提供的子网列表包含公共和私有子网。只允许使用一种类型的子网。


如何纠正这个错误。

subnet amazon-web-services amazon-emr amazon-vpc

30
推荐指数
1
解决办法
2万
查看次数

Terraform 模块 - 输出变量作为另一个模块的输入

我是 terraform 的新手,正在尝试构建具有两个子网和 VPC 的基础设施。我创建了两个模块

  • 专有网络
  • 子网

VPC 模块将创建一个 VPC 并返回 vpc_id 作为输出,与我尝试在子网模块中使用的返回 vpc_id 相同,但当我运行 terraform 计划时,它会要求我输入 vpc_id 输入。

我想要 VPC 模块的输出值中的 vpc_id,任何人都可以帮助我吗?

下面是代码,

根 tf 文件,

 provider "aws" {
  shared_credentials_file = var.shared_cred
  profile                 = "default" 
  region                  = var.aws_region
}

module "vpc" {
  source = "./vpc"
  name   = "terraformVPC"
  cidr   = "10.50.40.0/27"
}

module "private_subnet" {
  source      = "./subnet"
  subnet_name = "private_subnet"
  subnet_cidr = "10.50.40.16/28"
  #VPC_id = aws_vpc.moduleVPC.id
  VPCid = module.vpc.outvpc_id # this is the issue
}

module "public_subnet" { …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-vpc terraform terraform-modules

30
推荐指数
2
解决办法
6万
查看次数

在VPC内从Lambda访问AWS S3

总的来说,我对在VPC中使用AWS Lambda感到非常困惑.问题是Lambda在尝试访问S3存储桶时超时.该解决方案似乎是一个VPC端点.

我已将Lambda函数添加到VPC,因此它可以访问RDS托管数据库(未在下面的代码中显示,但功能正常).但是,现在我无法访问S3,任何尝试这样做都会超时.

我尝试创建一个VPC S3端点,但没有任何改变.

VPC配置

每当我第一次制作EC2实例时,我都会使用默认创建的简单VPC.它有四个子网,都是默认创建的.

VPC路由表

_Destination - Target - Status - Propagated_

172.31.0.0/16 - local - Active - No

pl-63a5400a (com.amazonaws.us-east-1.s3) - vpce-b44c8bdd - Active - No

0.0.0.0/0 - igw-325e6a56 - Active - No
Run Code Online (Sandbox Code Playgroud)

简单的S3下载Lambda:

import boto3
import pymysql
from StringIO import StringIO

def lambda_handler(event, context):
    s3Obj = StringIO()

    return boto3.resource('s3').Bucket('marineharvester').download_fileobj('Holding - Midsummer/sample', s3Obj)
Run Code Online (Sandbox Code Playgroud)

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

29
推荐指数
4
解决办法
1万
查看次数

使用MySQL Workbench通过EC2实例连接到Amazon RDS实例

在AWS中,我设置了一个带有堡垒主机的VPC.堡垒主机是一个具有公共地址槽的EC2实例,您可以通过该SSH连接到VPC上的任何其他服务器.

我在VPC中创建了一个RDS MySQL实例,我想使用MySQL workbench连接到它.我已按照此处详述的步骤操作,但在"步骤6:设置远程SSH配置"中,它要求我"提供Amazon EC2实例的公共DNS"(即堡垒主机).

然后,MySQL工作台会检查该服务器上的某些MySQL资源.但是,在我看来这是不正确的,因为我提供了堡垒主机的地址,它没有安装MySQL.结果,最后两次检查"检查启动/停止命令的位置"和"检查MySQL配置文件"然后失败.

然后我尝试使用RDS MySQL实例的端点地址,但没有成功(因为它在私有子网中,因此不能公开寻址).

似乎很多人都有这个并且正在运行,但我在这里做错了什么?

mysql ssh amazon-web-services amazon-rds amazon-vpc

26
推荐指数
3
解决办法
4万
查看次数

EC2 t2.micro实例没有公共DNS

EC2 t2.micro实例没有公共DNS

我推出了一个亚马逊网络服务(AWS)EC2实例t2.micro,它必须在一个VPC中启动.VPC已将"自动分配公共IP"设置为"是".DNS解析:是DNS主机名:是但在EC2仪表板上,实例仍具有空白的公共DNS和公共IP.我曾尝试多次重启实例,但仍未分配公共IP.我们的AWS账户附带的5个弹性IP已被使用.是否可以在不使用弹性IP的情况下将公共IP分配给t2.micro实例?

我已阅读帖子:EC2实例没有公共DNS,但我没有声誉点可以添加评论,因此我将此作为新问题发布.

amazon-ec2 amazon-vpc

26
推荐指数
7
解决办法
3万
查看次数

删除VPC和网络接口时出现问题

我试图删除aws vpc(非默认值).我收到错误"我们无法删除以下VPC(vpc-xxxxxxx(xx.xx.xx.x/16))网络接口'eni-xxxxxx'目前正在使用中.(服务:AmazonEC2;状态代码:400 ;错误代码:InvalidParameterValue;请求ID:xxxxxx-dd86-47c8-98cd-xxxxxxxxxxx)".

当我尝试删除相关的网络接口时,出现错误"eni-xxxxxxx:您无权访问指定的资源."

有一些与NI(网络接口)相关的安全组.有与NI相关的子网.没有EC2实例 - 所有实例都被终止.没有VPC端点.没有RDS db,db安全组或子网.

对于EC2 SG(安全组),我在尝试删除时收到权限被拒绝错误消息(甚至非默认SG对非默认VPC.此SG描述了"AWS为d-xxxxxxxxxx目录控制器创建的安全组".

对于子网,我无法删除它们,因为它们与上述NI相关联.

有人可以帮忙吗?我有一个免费的等级帐户,因此甚至没有技术支持或者都无法在aws论坛中发布新帖子(收到错误消息 - 您的帐户尚未准备好发布消息.请稍后再试).我担心这是因为我有一个免费的等级帐户.

amazon-ec2 amazon-web-services network-interface amazon-vpc

25
推荐指数
6
解决办法
2万
查看次数

允许AWS Lambda访问RDS数据库

我正在尝试从AWS Lambda(Java)连接到RDS数据库.

我应该从RDS安全组规则中启用哪个IP?

amazon-web-services amazon-vpc aws-lambda aws-security-group

23
推荐指数
3
解决办法
3万
查看次数

什么是VPC,AWS中的子网

我知道这是一个非常基本的问题.但是,我是AWS和n/w概念的初学者.

什么是VPC [虚拟私有云]实际上,它是如何服务于目的的?这是否必须在VPC中启动实例?

什么是子网,为什么必须拥有它?子网是否对应特定区域?

我对这些问题进行了研究并得到了一些解释,但老实说无法理解?

拜托,我希望在这里得到最好的答案.

提前致谢.

subnet amazon-web-services amazon-vpc

22
推荐指数
4
解决办法
7199
查看次数

如何在 aws cdk 中导入现有的 VPC?

嗨,我正在研究 aws cdk。我正在尝试获取现有的非默认 vpc。我尝试了以下选项。

vpc = ec2.Vpc.from_lookup(self, id = "VPC", vpc_id='vpcid', vpc_name='vpc-dev')
Run Code Online (Sandbox Code Playgroud)

这导致以下错误

[Error at /LocationCdkStack-cdkstack] Request has expired.
[Warning at /LocationCdkStack-cdkstack/TaskDef/mw-service] Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'.
Found errors
Run Code Online (Sandbox Code Playgroud)

我试过的其他方法是

vpc = ec2.Vpc.from_vpc_attributes(self, 'VPC', vpc_id='vpc-839227e7', availability_zones=['ap-southeast-2a','ap-southeast-2b','ap-southeast-2c'])
Run Code Online (Sandbox Code Playgroud)

这导致

[Error at /LocationCdkStack-cdkstack] Request has expired.
[Warning at /LocationCdkStack-cdkstack/TaskDef/mw-service] Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'.
Found errors
Run Code Online (Sandbox Code Playgroud)

我试过的其他方法是

vpc = ec2.Vpc.from_lookup(self, id = "VPC", is_default=True) // …

amazon-web-services amazon-vpc aws-cdk

19
推荐指数
1
解决办法
2万
查看次数