首页 > 解决方案 > 无法从 AWS Lambda 函数获取 AppConfig 的配置文件

问题描述

Lambda 函数 - Node.js

const AWS = require('aws-sdk')

exports.handler = async (event) => {
  var appconfig = new AWS.AppConfig({ apiVersion: '2019-10-09' })
  var params = {
    ApplicationId: '6xeris1',
    ConfigurationProfileId: '0ck2ijf'
  }
  const data = await appconfig.getConfigurationProfile(params).promise().catch(err => {
    console.log(err)
  })

  if (data) {
    console.log(data)

    const response = {
      statusCode: 200,
      headers: {
        'Access-Control-Allow-Headers': 'Content-Type',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
      },
      body: JSON.stringify(data)
    }
    return response
  } else {
    const response = {
      statusCode: 500,
      headers: {
        'Access-Control-Allow-Headers': 'Content-Type',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
      },
      body: {}
    }
    return response
  }
}

getConfigurationProfile被调用时没有响应。没有数据,没有错误,函数超时。

我在 Lambda 执行 IAM 角色中添加了以下内联策略,但它不起作用。

"Action": "appconfig:*"

有人在我之前解决了这个问题吗?谢谢你。

标签: amazon-web-servicesaws-lambdaaws-systems-manageraws-app-config

解决方案


根据评论。

问题是由于 lambda 函数被配置为在 VPC中。但是,VPC 中的函数没有 Internet 访问权限,也没有公共 IP。来自文档

将函数连接到公共子网不会为其提供 Internet 访问权限或公共 IP 地址

解决方案是使用VPC端点


推荐阅读