0

我正在尝试创建一个 lambda 函数,该函数将检查 codecommit 中是否存在特定的存储库。Lamda 服务角色具有管理员权限。下面是代码。lambda 无法调用 getRepository 方法。它既没有给出任何例外,也没有通过。对此有什么帮助吗?console.log("Before call cc") 这是最后打印的语句。之后我没有得到任何成功或错误日志。

const CloudFormation = require('aws-sdk/clients/cloudformation');
const Codecommit = require('aws-sdk/clients/codecommit');
exports.handler = async (event) => {
    try{
        console.log("event",event);
    console.log("event",JSON.stringify(event));
    var repositoryName = event.detail.repositoryName;
    var cfn = new CloudFormation({ 
    region: "ap-northeast-1"
    });
    var cc = new Codecommit({ 
    region: "ap-northeast-1"
    });
    const stackName = repositoryName+"-infra-stack";
    var cloneUrl;
    console.log("RepositoryName"+repositoryName);
    console.log("StackName"+stackName);
    var codeCommitParam = {
        repositoryName: repositoryName
      };
    try{
        console.log("Before calling cc")
        cc.getRepository(codeCommitParam, function(err, data) {
        if (err){
            console.log(err, err.stack);
        }else {
            console.log(data.repositoryMetadata.cloneUrlHttp);
            cloneUrl=data.repositoryMetadata.cloneUrlHttp; 
            console.log("Clone url "+cloneUrl);        
            checkStackDescription();
        }   
      });
    }catch(error){
        console.log(error);
    }
}
4

1 回答 1

1

我相信这归结为 Lambda 中的 JavaScript 被异步调用,因此 Lambda 在回调处理响应之前完成调用。

通过更新到以下语法尝试更新以同步使用它。

console.log("Before calling cc")
let result = await cc.getRepository(codeCommitParam).promise();

console.log(result);

请注意,这result可能是错误或有效响应。

于 2020-08-05T16:45:51.247 回答