【发布时间】:2019-10-17 12:52:30
【问题描述】:
我有一个 Lambda .jar,它是从 AWS 账户(“Account_Bld”)中的 Jenkins 盒子构建的。构建完成后,我将 .jar 复制到不同 AWS 账户(“Account_Dst”)中的 S3 存储桶,并尝试根据 S3 中新复制的 .jar 更新 Account_Dst 中的 Lambda。
我将此命令用作我的部署脚本的一部分,这是对另一个版本的轻微修改,当所有内容都位于同一帐户中时该版本可以工作:
aws lambda update-function-code --function-name arn:aws:lambda:us-east-1:{Account_Dst_Id}:function:{lambda_function_name} --zip-file fileb://{jar_file_relative_path} --区域 us-east-1
不出所料,我收到了这个错误:
调用 UpdateFunctionCode 操作时发生错误 (AccessDeniedException):用户:arn:aws:sts::{Account_Bld_Id}:assumed-role/{jenkins_ec2_role}/{jenkins_ec2_instance_id} 无权执行:lambda:UpdateFunctionCode on resource : arn:aws:lambda:us-east-1:{Account_Dst_Id}:function:{lambda_function_name}
我已授予 jenkins_ec2_role 权限以更新另一个帐户中的 Lambda,但我需要在 Account_Dst 中的某个地方回报这些权限是有道理的——假设有一个简单的解决方案来解决这个问题。
现在,可能的解决方案。我可以在 Account_Dst 中担任具有正确权限的角色并更新 Lambda,但这比现在对我来说更值得设置麻烦。我已经看到一些 Google 建议我可以使用 CodePipeline,但显然我使用的是 Jenkins,所以这似乎也不是一个好的解决方案。
所以,问题是,这里是否有一个我缺少的简单解决方案?
【问题讨论】:
标签: amazon-web-services deployment aws-lambda