CDK Lambda部署

0

【以下的问题经过翻译处理】 你好,我正在使用 CDK 来构建我的基础设施。 我在 CDK 和另一个保存 Lambda 代码的文件夹中创建了一个 Lambda 函数。 我在命令行中使用以下命令将其部署到我的 AWS 账户: ''' $ npm run build && cdk Synth $ cdk bootstrap $ cdk deploy ''' 第一次一切正常。 但是,当我对 Lambda 代码进行任何更改并再次重新使用这些命令时,我的 Lambda 代码不会在控制台上修改。 似乎它没有部署代码,因为 CDK 没有更改。 那么我该如何部署修改后的 lambda 代码呢? 找不到任何相关文档。

profile picture
EXPERTE
gefragt vor 5 Monaten53 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 由于CDK使用CloudFormation来部署其资源,因此任何更新都需要触发CloudFormation更新,以便更新代码。 作为测试,我使用了以下 CDK Lambda 代码。 请看下面: ''' const bucket = s3.Bucket.fromBucketName(this, 'bucket', '<Bucket_Name>');

  const lambdaFunc = new lambda.Function(this, 'lambdaFunc', {
      runtime: lambda.Runtime.PYTHON_3_9,
      code: new lambda.S3Code(bucket, "hello.py.zip", '<S3_Object_Version_Number>'),
      handler: 'lambda.lambda_handler',
});

''' 由于我正在利用S3作为我的代码来源,因此对代码进行任何更改都需要执行以下步骤:

1.上传代码到S3 2.在S3控制台的“版本”选项卡中获取版本号 3.将版本号添加到lambda.S3Code()函数的第三个参数中 4.运行cdk deploy命令

堆栈成功更新后,我能够确认Lambda控制台中的Lambda代码已更改。请参见以下测试结果: ===原始代码:

def handler(event, context):
    print('request: {}'.format(json.dumps(event)))
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'text/plain'
        },
        'body': 'Hello, CDK! You have a hit {}\n'.format(event['path'])
    }

---更新后的代码:

def handler(event, context):
    print('request: {}'.format(json.dumps(event)))
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'text/plain'
        },
        'body': 'Hola, CDK! Tienes un éxito {}\n'.format(event['path'])
    }

===

由于CDK为Lambda构造提供多种源代码的方式,代码片段和CDK版本将帮助我为您的用例提供适当的更新步骤。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen