【发布时间】:2018-11-04 14:08:36
【问题描述】:
我的 VPC 中有一个 Lambda 函数,我想访问 S3 存储桶。
我认为我已经正确设置了 S3 VPC 端点,因为我在与 Lambda 函数相同的子网和安全组中创建了一个 EC2 实例。当我在 EC2 实例上运行 Lambda 函数代码副本时,它可以正确显示 S3 文件内容。
但是当我在 Lambda 中运行代码时,它失败了。所以,我想知道“在 EC2 中运行”和“在 Lambda 中运行”有什么区别?为什么我在 Lambda 中运行它会失败?
这是我的 Lambda 函数代码:
import boto3
s3 = boto3.client('s3', region_name='ap-northeast-1')
def lambda_handler(event, context):
bucket = '*xxxxxx*'
key = 's3-upload.json'
try:
response = s3.get_object(Bucket=bucket, Key=key)
print('--------------------------------------')
print(response)
print('--------------------------------------')
body = response['Body'].read()
print(body)
print('--------------------------------------')
print("CONTENT TYPE: " + response['ContentType'])
except Exception as e:
print('Error getting object.')
print(e)
raise e
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-lambda endpoint amazon-vpc