无法从AWS Lambda函数获取AppConfig的配置文件

Kim*_*min 5 amazon-web-services aws-lambda aws-ssm aws-app-config

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
  }
}
Run Code Online (Sandbox Code Playgroud)

叫的时候getConfigurationProfile没有反应。没有数据,没有错误,函数超时。

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

"Action": "appconfig:*"
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*cin 4

根据评论。

该问题是由于 lambda 函数配置为位于VPC 中所致。但是,VPC 中的功能没有互联网访问权限,也没有公共 IP。来自文档:

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

解决方案是使用VPC 端点。