Mik*_*ike 6 amazon-web-services aws-lambda aws-cdk
我希望能够通过 AWS CDK 更新现有的 lambda 函数。我需要更新环境变量配置。据我所知这是不可能的,有什么可行的办法可以实现这一点吗?
我正在使用这样的代码来导入 lambda:
const importedLambdaFromArn = lambda.Function.fromFunctionAttributes(
this,
'external-lambda-from-arn',
{
functionArn: 'my-arn',
role: importedRole,
}
);
Run Code Online (Sandbox Code Playgroud)
目前,我必须手动更改 cloudformation 模板。直接在cdk中更新会好得多。
是的,这是可能的,尽管您应该在实际操作之前阅读@Allan_Chua 的答案。Lambda 的UpdateFunctionConfiguration API 可以修改已部署函数的环境变量。CDK 的AwsCustomResource构造允许我们在堆栈部署期间调用该 API。*
假设您想要将TABLE_NAME之前部署的 lambda 设置为 DynamoDB 表名称的值:
// MyStack.ts
const existingFunc = lambda.Function.fromFunctionArn(this, 'ImportedFunction', arn);
const table = new dynamo.Table(this, 'DemoTable', {
partitionKey: { name: 'id', type: dynamo.AttributeType.STRING },
});
new cr.AwsCustomResource(this, 'UpdateEnvVar', {
onCreate: {
service: 'Lambda',
action: 'updateFunctionConfiguration',
parameters: {
FunctionName: existingFunc.functionArn,
Environment: {
Variables: {
TABLE_NAME: table.tableName,
},
},
},
physicalResourceId: cr.PhysicalResourceId.of('DemoTable'),
},
policy: cr.AwsCustomResourcePolicy.fromSdkCalls({
resources: [existingFunc.functionArn],
}),
});
Run Code Online (Sandbox Code Playgroud)
在底层,自定义资源创建一个 lambda,UpdateFunctionConfiguration在创建堆栈时使用 JS SDK 进行调用。还有onUpdate一些onDelete案件需要处理。
* 同样,这是否是一个好主意取决于用例。您随时可以UpdateFunctionConfiguration在没有 CDK 的情况下进行调用。
| 归档时间: |
|
| 查看次数: |
6046 次 |
| 最近记录: |