使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

CDK Lambda部署

0

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

profile picture
專家
已提問 1 年前檢視次數 79 次
1 個回答
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
專家
已回答 1 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南