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

Mia*_*Mia 7 amazon-web-services python-3.x boto3 aws-lambda

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

我尝试查看 Boto3 Doc。我的代码对于 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)
Run Code Online (Sandbox Code Playgroud)

错误:GetObjet S3 密钥无效。

如何创建 s3 密钥,或者是否有一种简单的方法来创建没有任何依赖性的 AWS Lambda 函数。请指导我!

Rod*_*res 7

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

此代码将从 ZIP 文件创建 lambda 函数:

首先我们声明 zip 文件的路径然后在aws_file函数中我们将其转换为字节以便亚马逊可以读取它最后lambda_creator将上传它并使用给定的参数创建 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
Run Code Online (Sandbox Code Playgroud)


Chr*_*ams 3

该密钥来自将对象上传到 Amazon S3,您可以通过 Boto3 SDK调用put_object以编程方式执行此操作。

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

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',
        )

Run Code Online (Sandbox Code Playgroud)

您在上传此文件时指定密钥,请确保在上传时压缩代码。

或者使用该ZipFile属性,Boto3 文档中指出了以下内容。

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