gpt4 book ai didi

amazon-web-services - Lambda 无法在 VPC 内为 CodePipeline 执行 putjobSuccess

转载 作者:行者123 更新时间:2023-12-05 05:01:51 24 4
gpt4 key购买 nike

我正在尝试创建一个与 CodePipeline 配合使用的 Lambda 函数。问题是它无法将作业成功信息发送到 CodePipeline。我正在使用 javascript aws-sdk,并且来自 AWS.CodePipeline 对象的函数 putJobSuccessResult 在生产环境中执行不正常。

const AWS = require('aws-sdk');

const codepipeline = new AWS.CodePipeline();

exports.config = (event, context) => {
// Retrieve the Job ID from the Lambda action
const jobId = event['CodePipeline.job'].id;

return codepipeline.putJobSuccessResult({ jobId }).promise();
};

当我放置管道的 jobId 时,此代码在本地运行良好,但当我将代码上传到 AWS 控制台并运行管道时,它不再运行。

这是特定于 CodePipeline 部分的 Lambda 的 IAM 配置:

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"codepipeline:PutJobSuccessResult",
"codepipeline:PutJobFailureResult"
],
"Resource": "*",
"Effect": "Allow"
}
]
}

对于为什么它不能在云上运行,您有什么想法吗?

最佳答案

VPC 中的 lambda 超时的一个很可能的原因是它无法访问互联网,因为它没有公共(public) IP。来自 docs :

Connect your function to private subnets to access private resources. If your function needs internet access, use NAT. Connecting a function to a public subnet does not give it internet access or a public IP address.

要纠正此问题,应检查以下内容:

  • 是私有(private)子网中的 lambda
  • 公共(public)子网中是否有 NAT 网关/实例
  • 是否正确配置了从私有(private)子网到 NAT 设备的路由表以启用互联网访问

或者,可以考虑使用(或检查是否存在)VPC interface endpoint对于代码管道。该接口(interface),如果正确设置,可以在没有互联网的情况下从 lambda 函数访问 CodePipeline。

关于amazon-web-services - Lambda 无法在 VPC 内为 CodePipeline 执行 putjobSuccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62534977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com