我正在尝试从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) 我在 AWS 账户中有一个 VPC,并且有 5 个与该 VPC 关联的子网。子网有 2 种类型 - 公共和私有。如何识别哪个子网是公共的,哪个是私有的?每个子网都有 CIDR 10.249.?.? 范围。
基本上,当我在该子网中使用 ec2SubnetIds 列表启动 EMR 时,它说 *** 子网配置无效:提供的子网列表包含公共和私有子网。只允许使用一种类型的子网。
如何纠正这个错误。
我是 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) 总的来说,我对在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) 在AWS中,我设置了一个带有堡垒主机的VPC.堡垒主机是一个具有公共地址槽的EC2实例,您可以通过该SSH连接到VPC上的任何其他服务器.
我在VPC中创建了一个RDS MySQL实例,我想使用MySQL workbench连接到它.我已按照此处详述的步骤操作,但在"步骤6:设置远程SSH配置"中,它要求我"提供Amazon EC2实例的公共DNS"(即堡垒主机).
然后,MySQL工作台会检查该服务器上的某些MySQL资源.但是,在我看来这是不正确的,因为我提供了堡垒主机的地址,它没有安装MySQL.结果,最后两次检查"检查启动/停止命令的位置"和"检查MySQL配置文件"然后失败.
然后我尝试使用RDS MySQL实例的端点地址,但没有成功(因为它在私有子网中,因此不能公开寻址).
似乎很多人都有这个并且正在运行,但我在这里做错了什么?
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,但我没有声誉点可以添加评论,因此我将此作为新问题发布.
我试图删除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论坛中发布新帖子(收到错误消息 - 您的帐户尚未准备好发布消息.请稍后再试).我担心这是因为我有一个免费的等级帐户.
我正在尝试从AWS Lambda(Java)连接到RDS数据库.
我应该从RDS安全组规则中启用哪个IP?
amazon-web-services amazon-vpc aws-lambda aws-security-group
我知道这是一个非常基本的问题.但是,我是AWS和n/w概念的初学者.
什么是VPC [虚拟私有云]实际上,它是如何服务于目的的?这是否必须在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-vpc ×10
aws-lambda ×3
amazon-ec2 ×2
amazon-s3 ×2
subnet ×2
amazon-emr ×1
amazon-rds ×1
aws-cdk ×1
mysql ×1
ssh ×1
terraform ×1