Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用测试事件运行aws lambda上载文件(python)_Python_Amazon Web Services_Aws Lambda - Fatal编程技术网

使用测试事件运行aws lambda上载文件(python)

使用测试事件运行aws lambda上载文件(python),python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,我想创建lambda函数,将csv文件上传到s3 bucket。为了进行性能测试,我正在尝试配置测试事件(使用s3_put defaul模板只输入我的bucket名称和新文件名) 测试事件 { "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "eu-central-1", "eventTime": "1970-01-01T00:00:

我想创建lambda函数,将csv文件上传到s3 bucket。为了进行性能测试,我正在尝试配置测试事件(使用s3_put defaul模板只输入我的bucket名称和新文件名)

测试事件

{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventSource": "aws:s3",
      "awsRegion": "eu-central-1",
      "eventTime": "1970-01-01T00:00:00.000Z",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
        "principalId": "EXAMPLE"
      },
      "requestParameters": {
        "sourceIPAddress": "127.0.0.1"
      },
      "responseElements": {
        "x-amz-request-id": "EXAMPLE123456789",
        "x-amz-id-2": "EXAMPLE123/5678abcder455relambdaisawesome/mnopqrdtygfwxyzABCDEFGH"
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "testConfigRule",
        "bucket": {
          "name": "MY_BUCKET",
          "ownerIdentity": {
            "principalId": "EXAMPLE"
          },
          "arn": "arn:aws:s3:::MY_BUCKET"
        },
        "object": {
          "key": "MY_NEY_FILE_NAME",
          "size": 1024,
          "eTag": "01234567847647383cdef0123456789abcdef",
          "sequencer": "0A1B2Cghfdjd3D4E5F678901"
        }
      }
    }
  ]
}
lambda_函数.py

import os
import boto3
from botocore.exceptions import ClientError
SECRET_KEY = "XXXX"
ACCESS_KEY = "XXXX"
processed_folder = "drivers"

    def lambda_handler(event, context):
        """Upload a file to an S3 bucket
        """
        for record in event['Records']:
            # Create some variables that make it easier to work with the data in the
            # event record.
            bucket = record['s3']['bucket']['name'
            key = record['s3']['object']['key']
            file_name = ????
        s3_client = boto3.client('s3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
        try:
            response = s3_client.upload_file(file_name, bucket, key)
        except ClientError as e:
            logging.error(e)
            return False
        return True
由于明显的原因,我得到了一个错误
“name”file\u name“没有定义”

如何将文件添加到配置中?

S3中的文件名位于“键”组件中

例如,文件名为“mountains.jpg”的Bucket“images”文件夹中名为“Resources”的文件的文件键为“images/mountains.jpg”

因此,为了提取文件名,您必须拆分文件名并从中提取


顺便说一下,test_事件的格式是在S3上添加文件时触发的事件格式。将文件添加到S3时是否触发lambda

s3 fileupload函数接受bucketname、密钥和文件内容。
因此,理想情况下,您的文件名应该包含要上载的文件的内容。

test\u事件只是lambda函数页面下拉列表中的默认示例。我所更改的只是名称bucket和文件名。据我所知,键值是s3中保存的文件的路径。我感兴趣的是如何指定我将要下载的文件的路径,例如,从Internet下载。为此,您只需将测试事件作为{filename:“yourfilename”}传递。(在下拉列表中选择HelloWorld模板)。在代码中,您可以通过事件[“filename”]访问文件名