我将 Lambda 连接到 EFS,我想使用 Lambda 将小文件从 S3 下载到 EFS。
我将 Lambda 函数连接到文件系统,并添加了权限为 777 的访问点。
我在 Lambda 中有这个小的 python 函数可以下载到挂载:
import json
import boto3
import time
import os
s3 = boto3.client('s3')
def lambda_handler(event, context):
s3.download_file('my_bucket', 'img.jpg', '/mnt/my-efs/img.jpg')
return{
"statusCode": 200
}
Run Code Online (Sandbox Code Playgroud)
我在 1 分钟后超时(这应该不到一秒钟)。
如果我为 下载/tmp/img.jpg
,这有效。即使我将文件从复制/tmp/
到/mnt/my-efs/
该工程。
我为 Lambda 用户提供了这个 IAM:
AmazonEC2FullAccess
AmazonS3FullAccess
AmazonVPCFullAccess
AWSLambdaVPCAccessExecutionRole
AmazonElasticFileSysstemClientReadWriteAccess
AmazonElasticFileSysstemClientFullAccess
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用 Lambda 从 S3 下载文件到 EFS?
我有带文件夹的 s3 存储桶,文件夹内有大文件。
我想用 python3-boto3 脚本重命名该文件夹。
我读了这篇文章(“如何使用Python重命名Amazon S3文件夹对象”),他所做的就是复制带有新前缀的文件,然后删除原始文件夹。
这是非常没有效率的方法,而且因为我有大文件,所以需要很长时间才能完成。
有没有更简单/更有效的方法来做到这一点?
我正在关注这篇有关使用文本文件收集器导出指标的文章。
我制作了一个/var/lib/node_exporter/textfile_collector/directory_size.prom
包含目录大小指标的文本文件,但它不会将其推送到普罗米修斯。
我读到该标志--collector.textfile.directory
负责读取目录的路径。如何查看收集器的目录是什么,以及如何更改它?