Amazon s3 aws通过s3无服务器提供文件
我正在尝试使用python中的lambda函数提供来自S3的音频文件 My lambda函数正在生成一条Amazon s3 aws通过s3无服务器提供文件,amazon-s3,aws-lambda,boto3,Amazon S3,Aws Lambda,Boto3,我正在尝试使用python中的lambda函数提供来自S3的音频文件 My lambda函数正在生成一条内部服务器错误消息,CloudWatch日志显示: 23:42:07响应的JSON序列化过程中发生错误:b'\xff\xfb\x90\xc4\x00\x00\… 下面是我的python lambda函数中的代码 import boto3 def getAudio(event, context): #[Validate permissions here] s3 = boto3.
内部服务器错误
消息,CloudWatch日志显示:
23:42:07响应的JSON序列化过程中发生错误:b'\xff\xfb\x90\xc4\x00\x00\…
下面是我的python lambda函数中的代码
import boto3
def getAudio(event, context):
#[Validate permissions here]
s3 = boto3.client('s3')
my_bucket = 'my-app'
my_key = "audio/%s.mp3"%(event['pathParameters']['audio_id'])
s3_object = s3.get_object(Bucket=my_bucket, Key=my_key)
return s3_object['Body'].read()
检索和传递音频文件的适当方式是什么
我的端点是
https://1cbbkp15ci.execute-api.us-east-1.amazonaws.com/dev/assert/audio/adfk-m1
为S3创建签名URL并重定向到该URL的最干净方法
Lambda(验证权限并创建签名URL)-->重定向(302)
-->S3存储桶中的实际文件
Python签名URL生成代码:
import boto3
import requests
# Get the service client.
s3 = boto3.client('s3')
# Generate the URL to get 'key-name' from 'bucket-name'
url = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': 'bucket-name',
'Key': 'key-name'
}
)
# Use the URL to perform the GET operation. You can use any method you like
# to send the GET, but we will use requests here to keep things simple.
response = requests.get(url)
此外,如果您希望服务具有正确的内容类型。在S3中设置对象的内容类型。您可以使用命令行甚至boto3进行设置
aws s3api放置对象--bucket bucket--key foo.mp3--body foo.mp3
--内容类型音频/mpeg
希望有帮助。为S3创建签名URL并重定向到该URL的最干净方法 Lambda(验证权限并创建签名URL)-->重定向(302) -->S3存储桶中的实际文件 Python签名URL生成代码:
import boto3
import requests
# Get the service client.
s3 = boto3.client('s3')
# Generate the URL to get 'key-name' from 'bucket-name'
url = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': 'bucket-name',
'Key': 'key-name'
}
)
# Use the URL to perform the GET operation. You can use any method you like
# to send the GET, but we will use requests here to keep things simple.
response = requests.get(url)
此外,如果您希望服务具有正确的内容类型。在S3中设置对象的内容类型。您可以使用命令行甚至boto3进行设置
aws s3api放置对象--bucket bucket--key foo.mp3--body foo.mp3
--内容类型音频/mpeg
希望有帮助。谢谢!使用这个并调整“ExpiresIn”参数正是我所需要的。很高兴看到它的帮助。谢谢!使用这个并调整“ExpiresIn”参数正是我所需要的。很高兴看到它有所帮助。