Python 3.x 使用Boto3 Python代码创建AWS Lambda函数?

Python 3.x 使用Boto3 Python代码创建AWS Lambda函数?,python-3.x,amazon-web-services,aws-lambda,boto3,Python 3.x,Amazon Web Services,Aws Lambda,Boto3,我需要使用从头开始选项创建一个lambda函数。我看到AWS应用程序中有3个选项。我浏览了AWS Boto3文档,但找不到选择3种方法的方法 我试着去调查医生。我的代码对于S3密钥失败。如何使用Boto3代码创建简单的lambda函数 我的代码: lambda_Client = boto3.client('lambda', aws_access_key_id=accessKey, aws_secret_access_key=secretKey,r

我需要使用从头开始选项创建一个lambda函数。我看到AWS应用程序中有3个选项。我浏览了AWS Boto3文档,但找不到选择3种方法的方法

我试着去调查医生。我的代码对于S3密钥失败。如何使用Boto3代码创建简单的lambda函数

我的代码:

  lambda_Client = boto3.client('lambda', aws_access_key_id=accessKey,
                       aws_secret_access_key=secretKey,region_name=region)
  response =lambda_Client.create_function(
            Code={
                'S3Bucket': 's3bucket',
                'S3Key': 'function.zip', #how can i create or fetch this S3Key
            },
            Description='Process image objects from Amazon S3.',
            FunctionName='function_name',
            Handler='index.handler',
            Publish=True,
            Role='arn:aws:iam::123456789012:role/lambda-role',
            Runtime='nodejs12.x',
        )

        print(response)
错误: GetObjet S3密钥无效


我如何创建一个s3键,或者有没有一种简单的方法来创建一个AWS Lambda函数而没有任何依赖关系。请引导我

此键来自将对象上载到Amazon S3,您可以通过Boto3 SDK以编程方式进行调用

下面是如何使用的一个粗略示例

import zipfile
archive = zipfile.ZipFile('function.zip', 'w')
zip.write('index.js', 'path/on/disk/index.js')
.......

client.put_object(Body=archive, Bucket='bucket-name', Key='function.zip')

lambda_Client = boto3.client('lambda', aws_access_key_id=accessKey,
                       aws_secret_access_key=secretKey,region_name=region)
response = lambda_Client.create_function(
            Code={
                'S3Bucket': 'bucket-name',
                'S3Key': 'function.zip', #how can i create or fetch this S3Key
            },
            Description='Process image objects from Amazon S3.',
            FunctionName='function_name',
            Handler='index.handler',
            Publish=True,
            Role='arn:aws:iam::123456789012:role/lambda-role',
            Runtime='nodejs12.x',
        )

上载此文件时指定密钥,请确保上载时压缩代码

或者使用
ZipFile
属性,从它声明以下内容

部署包的base64编码内容。AWS SDK和AWS CLI客户端为您处理编码


我在尝试使用zip文件创建lambda函数时发现了很多问题,但最终我做到了,并且成功了

ZIPNAME = "code\\my-deployment-package.zip"


def aws_file():
    with open(ZIPNAME, 'rb') as file_data:
        bytes_content = file_data.read()
    return bytes_content


def lambda_creator(name):
    lambda_client = boto3.client('lambda', aws_access_key_id=ACCESSKEY,
                                 aws_secret_access_key=SECRETKEY, region_name=REGION)
    response = lambda_client.create_function(
        Code={
            'ZipFile': aws_file()
        },
        Description='Hello World Test.',
        FunctionName='Test-lambda',
        Handler='lambda_function.lambda_handler',
        Publish=True,
        Role='arn:aws:iam:: 123456789012:role/lambda-rol',
        Runtime='python3.8',
    )
    return response

我已经添加了一个粗略的示例,它应该说明如何实现您指定的Lambda角色,您只需要在其策略中添加
xray:PutTraceSegments
的权限。或者将
AWSXrayWriteOnlyAccess
托管策略添加到您的角色:)好的,谢谢,我正在使用python 3.7.3进行代码导入zipfile archive=zipfile.zipfile('function.zip','w')zip.write('index.js','path/on/disk/index.js'))我作为AttributeError收到错误:类型对象“zip”没有属性“write”write没有突出显示,而import zip在单击itI时将进入正确的库我只需要上传一个zip文件,而不是写入我该怎么做?哎呀,那应该是
存档。写
请解释你的代码是做什么的以及它是如何做的。