Сделайте доступ к движку приложения функций firebase 'ALLOW_INTERNAL_ONLY'

Я пытаюсь сделать http-запросы от экземпляра движка приложения к функции firebase, разрешенной только для внутренних запросов.

// index.js (firebase functions)

const egressOpts = {
  vpcConnector: 'the-vpc-connector',
  vpcConnectorEgressSettings: 'ALL_TRAFFIC'
}

exports.processTransaction = functions
  .runWith({
    ...egressOpts,
    ingressSettings: 'ALLOW_INTERNAL_ONLY',
    timeoutSeconds: 300
  })
  .https.onRequest(processTransaction)

Говорят, что экземпляры appengine flex находятся в той же сети, что и облачные функции, поэтому они должны общаться друг с другом без дополнительной настройки (как видно на здесь).

Но что, если моя функция подключена к VPC через бессерверный коннектор vpc? Нужно ли мне подключать мой экземпляр GAE к той же сети? И как мне это сделать?

Я попытался развернуть стандартный GAE с коннектором vpc, но ничего не изменилось:

runtime: nodejs14
env: standard
manual_scaling:
  instances: 1
resources:
  cpu: 2
  memory_gb: 2.0
  disk_size_gb: 10
vpc_access_connector:
    name: "projects/the-project-id/locations/us-central1/connectors/the-vpc-connector"

Я также попытался назначить роль Invoker облачной функции учетной записи службы GAE, но безуспешно.

Добавляя больше контекста, это мой гибкий GAE app.yaml (я развертываю с помощью облачного конструктора):

runtime: nodejs
env: flex
manual_scaling:
  instances: 1
resources:
  cpu: 2
  memory_gb: 2.0
  disk_size_gb: 10
vpc_access_connector:
    name: "projects/the-project-id/locations/us-central1/connectors/the-vpc-connector"
skip_files:
  - ^node_modules
  - ^dev_credentials
  - ^deployment

Ошибка, которую я получаю на stackdriver:

</body></html>
<h2></h2>
<h2>Your client does not have permission to get URL <code>/processTransaction</code> from this server.</h2>
<h1>Error: Forbidden</h1>
<body text=#000000 bgcolor=#ffffff>
</head>
<title>403 Forbidden</title>

Что мне здесь не хватает?


person AFMeirelles    schedule 27.06.2021    source источник
comment
Чтобы прояснить несколько вещей: 1) Используете ли вы стандартные или гибкие экземпляры GAE? Ваши 2 файла .yaml содержат противоречивую информацию. Как вы уже упоминали, настройка внутреннего трафика будет работать только для среды Flex. 2) Развернуты ли ваши функции Firebase и GAE в одном проекте Google Cloud?   -  person Daniel L    schedule 28.06.2021
comment
Да, я пробовал использовать как гибкие, так и стандартные экземпляры ... функции firebase и экземпляры GAE находятся в одном проекте. Как вы думаете, это связано с бессерверным коннектором VPC, или я смотрю не на того виновника?   -  person AFMeirelles    schedule 28.06.2021