firebase / firebase-tools

The Firebase Command Line Tools
MIT License
4.01k stars 925 forks source link

Creating function requires two consecutive firebase deploys, inaccurate error reported #2238

Open MathBunny opened 4 years ago

MathBunny commented 4 years ago

I am suspecting this is the cause:

One or more users named in the policy do not belong to a permitted customer

[REQUIRED] Environment info

firebase-tools:8.2.0

Platform: Linux (gLinux)

[REQUIRED] Test case

Default setup, with the following function:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.helloWorld = functions.https.onRequest((request, response) => {
    response.send("Hello from Firebase!");
});

[REQUIRED] Steps to reproduce

firebase deploy --only functions

[REQUIRED] Expected behavior

Function is created successfully in one go, or the appropriate function is outlined with the error (not having to supply the --debug flag).

[REQUIRED] Actual behavior

hlazu@hlazu:~/Documents/onboarding/share-charts$ firebase --debug deploy --only functions
[2020-05-14T17:01:22.892Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2020-05-14T17:01:22.894Z] > authorizing via signed-in user
[2020-05-14T17:01:22.894Z] [iam] checking project chartshare-f9974 for permissions ["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get"]
[2020-05-14T17:01:22.899Z] >>> HTTP REQUEST POST https://cloudresourcemanager.googleapis.com/v1/projects/chartshare-f9974:testIamPermissions  
 {"permissions":["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get"]}
[2020-05-14T17:01:22.997Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:22 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","server-timing":"gfet4t7; dur=44","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:01:22.999Z] >>> HTTP REQUEST POST https://iam.googleapis.com/v1/projects/chartshare-f9974/serviceAccounts/chartshare-f9974@appspot.gserviceaccount.com:testIamPermissions  
 {"permissions":["iam.serviceAccounts.actAs"]}
[2020-05-14T17:01:23.056Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:23 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}

=== Deploying to 'chartshare-f9974'...

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint /usr/local/google/home/hlazu/Documents/onboarding/share-charts/functions
> eslint .

✔  functions: Finished running predeploy script.
[2020-05-14T17:01:29.425Z] > [functions] package.json contents: {
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "lint": "eslint .",
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "dependencies": {
    "firebase-admin": "^8.12.1",
    "firebase-functions": "^3.6.1"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-plugin-promise": "^4.0.1",
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
[2020-05-14T17:01:31.731Z] [functions] runtime dependency check dates: warning: 2020-05-21T00:00:00.000Z error: 2020-06-23T00:00:00.000Z
[2020-05-14T17:01:31.731Z] >>> HTTP REQUEST GET https://serviceusage.googleapis.com/v1/projects/chartshare-f9974/services/cloudfunctions.googleapis.com  

[2020-05-14T17:01:31.732Z] >>> HTTP REQUEST GET https://serviceusage.googleapis.com/v1/projects/chartshare-f9974/services/runtimeconfig.googleapis.com  

[2020-05-14T17:01:31.930Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:31 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:01:31.934Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:31 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
✔  functions: required API cloudfunctions.googleapis.com is enabled
[2020-05-14T17:01:31.936Z] >>> HTTP REQUEST GET https://firebase.googleapis.com/v1beta1/projects/chartshare-f9974/adminSdkConfig  

[2020-05-14T17:01:32.178Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:32 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
i  functions: preparing functions directory for uploading...
[2020-05-14T17:01:32.180Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/chartshare-f9974/configs  

[2020-05-14T17:01:32.475Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:32 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
i  functions: packaged functions (43.79 KB) for uploading
[2020-05-14T17:01:33.215Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/projects/chartshare-f9974/locations/-/functions  

[2020-05-14T17:01:33.527Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:33 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:01:33.530Z] [functions] found 1 new HTTP functions, testing setIamPolicy permission...
[2020-05-14T17:01:33.530Z] >>> HTTP REQUEST POST https://cloudresourcemanager.googleapis.com/v1/projects/chartshare-f9974:testIamPermissions  
 {"permissions":["cloudfunctions.functions.setIamPolicy"]}
[2020-05-14T17:01:33.579Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:33 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","server-timing":"gfet4t7; dur=36","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:01:33.580Z] [functions] found setIamPolicy permission, proceeding with deploy
[2020-05-14T17:01:33.581Z] >>> HTTP REQUEST POST https://cloudfunctions.googleapis.com/v1/projects/chartshare-f9974/locations/us-central1/functions:generateUploadUrl  

[2020-05-14T17:01:33.993Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:33 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:01:33.994Z] >>> HTTP REQUEST PUT https://storage.googleapis.com/gcf-upload-us-central1-4d4615ba-b9d9-4554-acec-9884cff3fb4c/55d5265e-ec02-4d0e-81d7-be1e8bb40a74.zip?GoogleAccessId=service-132480619309@gcf-admin-robot.iam.gserviceaccount.com&Expires=1589477493&Signature=K%2BS1e%2B1jZcblGhW7xMEpuHUXSjIU8D%2FKA9%2BiTH6t3jFiNFSD1hYeSB%2BItsiAzEXd9qhIvUcIf4l%2F0lfMme27LEDZ43RytXlAWelig1viKp3HmdfrayVG%2FqUwmYOwj1p4vxKO10%2Bl%2FmAenTMyct6sTzD%2FRyq5g9somnJ3lisaav5ALFmOHdwef07rqwNgKojCQofiY31HL9%2FKfkjUmsO2TRX%2BIVM48Zb%2Bu69z65ao7EHrRqEydyUYbwbh6YXDa2oClmq%2Bn%2FAxllEEamQm%2BmMBePVs1C0ileckIQiUvppagGFqnFzD1naEAu80bv%2BAyo3Qxat3qwSdVmWvjP6jiaXqFA%3D%3D  
 <request body omitted>
[2020-05-14T17:01:34.132Z] <<< HTTP RESPONSE 200 {"x-guploader-uploadid":"AAANsUk4sqJrlTcWEJhKS92F1QD06IMFrTEF2aMyOG_e03gUpvtVhw59d2d5cKd3LiVobXh0h3uvlkYEO_1pcuKm21JAXYHvpQ","etag":"\"e04975970dbd025a90beda8d34744458\"","x-goog-generation":"1589475694106213","x-goog-metageneration":"1","x-goog-hash":"crc32c=U716ig==, md5=4El1lw29AlqQvtqNNHREWA==","x-goog-stored-content-length":"44843","x-goog-stored-content-encoding":"identity","vary":"Origin","content-length":"0","date":"Thu, 14 May 2020 17:01:34 GMT","server":"UploadServer","content-type":"text/html; charset=UTF-8"}
✔  functions: functions folder uploaded successfully
i  functions: creating Node.js 8 function helloWorld(us-central1)...
[2020-05-14T17:01:34.136Z] Trigger is:  {"httpsTrigger":{}}
[2020-05-14T17:01:34.137Z] >>> HTTP REQUEST GET https://serviceusage.googleapis.com/v1/projects/chartshare-f9974/services/cloudscheduler.googleapis.com  

[2020-05-14T17:01:34.341Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:34 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:01:34.343Z] >>> HTTP REQUEST POST https://cloudfunctions.googleapis.com/v1/projects/chartshare-f9974/locations/us-central1/functions  
 {"sourceUploadUrl":"https://storage.googleapis.com/gcf-upload-us-central1-4d4615ba-b9d9-4554-acec-9884cff3fb4c/55d5265e-ec02-4d0e-81d7-be1e8bb40a74.zip?GoogleAccessId=service-132480619309@gcf-admin-robot.iam.gserviceaccount.com&Expires=1589477493&Signature=K%2BS1e%2B1jZcblGhW7xMEpuHUXSjIU8D%2FKA9%2BiTH6t3jFiNFSD1hYeSB%2BItsiAzEXd9qhIvUcIf4l%2F0lfMme27LEDZ43RytXlAWelig1viKp3HmdfrayVG%2FqUwmYOwj1p4vxKO10%2Bl%2FmAenTMyct6sTzD%2FRyq5g9somnJ3lisaav5ALFmOHdwef07rqwNgKojCQofiY31HL9%2FKfkjUmsO2TRX%2BIVM48Zb%2Bu69z65ao7EHrRqEydyUYbwbh6YXDa2oClmq%2Bn%2FAxllEEamQm%2BmMBePVs1C0ileckIQiUvppagGFqnFzD1naEAu80bv%2BAyo3Qxat3qwSdVmWvjP6jiaXqFA%3D%3D","name":"projects/chartshare-f9974/locations/us-central1/functions/helloWorld","entryPoint":"helloWorld","labels":{"deployment-tool":"cli-firebase"},"runtime":"nodejs8","httpsTrigger":{}}
[2020-05-14T17:01:34.622Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:01:34 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:01:34.623Z] Setting public policy for function helloWorld
[2020-05-14T17:01:34.624Z] >>> HTTP REQUEST POST https://cloudfunctions.googleapis.com/v1/projects/chartshare-f9974/locations/us-central1/functions/helloWorld:setIamPolicy  
 {"policy":{"version":3,"bindings":[{"role":"roles/cloudfunctions.invoker","members":["allUsers"]}]},"updateMask":"version,bindings"}
[2020-05-14T17:01:34.959Z] <<< HTTP RESPONSE 400 {"vary":"X-Origin, Referer, Origin,Accept-Encoding","content-type":"application/json; charset=UTF-8","date":"Thu, 14 May 2020 17:01:34 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:01:34.960Z] <<< HTTP RESPONSE BODY {"error":{"code":400,"message":"One or more users named in the policy do not belong to a permitted customer.","status":"FAILED_PRECONDITION","details":[{"@type":"type.googleapis.com/google.rpc.PreconditionFailure","violations":[{"type":"constraints/iam.allowedPolicyMemberDomains","subject":"orgpolicy:chartshare-f9974/us-central1/helloWorld?configvalue=allUsers","description":"User allUsers is not in permitted organization."}]}]}}

Functions deploy had errors with the following functions:

To try redeploying those functions, run:
    firebase deploy --only functions:

To continue deploying other features (such as database), run:
    firebase deploy --except functions

Error: Functions did not deploy properly.

Invoking it again right after:

hlazu@hlazu:~/Documents/onboarding/share-charts$ firebase --debug deploy --only functions
[2020-05-14T17:04:13.720Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2020-05-14T17:04:13.722Z] > authorizing via signed-in user
[2020-05-14T17:04:13.722Z] [iam] checking project chartshare-f9974 for permissions ["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get"]
[2020-05-14T17:04:13.727Z] >>> HTTP REQUEST POST https://cloudresourcemanager.googleapis.com/v1/projects/chartshare-f9974:testIamPermissions  
 {"permissions":["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get"]}
[2020-05-14T17:04:13.846Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:13 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","server-timing":"gfet4t7; dur=48","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:13.848Z] >>> HTTP REQUEST POST https://iam.googleapis.com/v1/projects/chartshare-f9974/serviceAccounts/chartshare-f9974@appspot.gserviceaccount.com:testIamPermissions  
 {"permissions":["iam.serviceAccounts.actAs"]}
[2020-05-14T17:04:13.903Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:13 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}

=== Deploying to 'chartshare-f9974'...

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint /usr/local/google/home/hlazu/Documents/onboarding/share-charts/functions
> eslint .

✔  functions: Finished running predeploy script.
[2020-05-14T17:04:20.176Z] > [functions] package.json contents: {
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "lint": "eslint .",
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "dependencies": {
    "firebase-admin": "^8.12.1",
    "firebase-functions": "^3.6.1"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-plugin-promise": "^4.0.1",
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
[2020-05-14T17:04:22.487Z] [functions] runtime dependency check dates: warning: 2020-05-21T00:00:00.000Z error: 2020-06-23T00:00:00.000Z
[2020-05-14T17:04:22.487Z] >>> HTTP REQUEST GET https://serviceusage.googleapis.com/v1/projects/chartshare-f9974/services/cloudfunctions.googleapis.com  

[2020-05-14T17:04:22.488Z] >>> HTTP REQUEST GET https://serviceusage.googleapis.com/v1/projects/chartshare-f9974/services/runtimeconfig.googleapis.com  

[2020-05-14T17:04:22.655Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:22 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:22.725Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:22 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
✔  functions: required API cloudfunctions.googleapis.com is enabled
[2020-05-14T17:04:22.728Z] >>> HTTP REQUEST GET https://firebase.googleapis.com/v1beta1/projects/chartshare-f9974/adminSdkConfig  

[2020-05-14T17:04:22.878Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:22 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
i  functions: preparing functions directory for uploading...
[2020-05-14T17:04:22.880Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/chartshare-f9974/configs  

[2020-05-14T17:04:23.186Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:23 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
i  functions: packaged functions (43.79 KB) for uploading
[2020-05-14T17:04:23.928Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/projects/chartshare-f9974/locations/-/functions  

[2020-05-14T17:04:24.237Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:24 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:24.241Z] >>> HTTP REQUEST POST https://cloudfunctions.googleapis.com/v1/projects/chartshare-f9974/locations/us-central1/functions:generateUploadUrl  

[2020-05-14T17:04:24.713Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:24 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:24.714Z] >>> HTTP REQUEST PUT https://storage.googleapis.com/gcf-upload-us-central1-4d4615ba-b9d9-4554-acec-9884cff3fb4c/96a5ad32-d566-4519-8f92-2de8dbb0cd40.zip?GoogleAccessId=service-132480619309@gcf-admin-robot.iam.gserviceaccount.com&Expires=1589477664&Signature=gjJxZJ0rNqLH2cGWv0VfBDNHugYasuVa59P73pYZQ%2BnUCpcZ5vvi8ZXvkezZDiciLGhVm%2BE28p4iWG51E4%2F3HuIoejHTyJuyORx5vGPCxB7nG1GNoijcTql4t7CIkJqQYCng3aanTx8B7GBxuoEDCFHmOuYQM%2BLhGft28PmGxH5fhkcS8a%2BljVJopqEogeSoTMk6JGfAOHnL3Aasg2npDnWV%2B2MhpW1hM9XTUKIia5sS0NI67TblaOuI79%2FoQ8PekJXZiO6qs0szmcCh6ZDnKtlltIk4u%2FLTLk7QQ6S6zKgWgFYkNE00XlcyYZ1w9kn2UndpbRSlruCzv02MyPMMjA%3D%3D  
 <request body omitted>
[2020-05-14T17:04:24.873Z] <<< HTTP RESPONSE 200 {"x-guploader-uploadid":"AAANsUmPMebKmxghr41yH7rbnovvHjDYORUy9eYDqYoNEtmEa0bnrWGbZ3u5WnPBrdrlXX-8ESWQbe-8aPuPpGUfKJuqLm6gEA","etag":"\"2a46cc07fc26445bd788df025e0b5778\"","x-goog-generation":"1589475864849563","x-goog-metageneration":"1","x-goog-hash":"crc32c=E2cgbg==, md5=KkbMB/wmRFvXiN8CXgtXeA==","x-goog-stored-content-length":"44843","x-goog-stored-content-encoding":"identity","vary":"Origin","content-length":"0","date":"Thu, 14 May 2020 17:04:24 GMT","server":"UploadServer","content-type":"text/html; charset=UTF-8"}
✔  functions: functions folder uploaded successfully
i  functions: updating Node.js 8 function helloWorld(us-central1)...
[2020-05-14T17:04:24.877Z] Trigger is:  {"httpsTrigger":{}}
[2020-05-14T17:04:24.879Z] >>> HTTP REQUEST GET https://serviceusage.googleapis.com/v1/projects/chartshare-f9974/services/cloudscheduler.googleapis.com  

[2020-05-14T17:04:25.068Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:25 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:25.072Z] >>> HTTP REQUEST PATCH https://cloudfunctions.googleapis.com/v1/projects/chartshare-f9974/locations/us-central1/functions/helloWorld {"updateMask":"sourceUploadUrl,name,labels,runtime,httpsTrigger"} 
 {"sourceUploadUrl":"https://storage.googleapis.com/gcf-upload-us-central1-4d4615ba-b9d9-4554-acec-9884cff3fb4c/96a5ad32-d566-4519-8f92-2de8dbb0cd40.zip?GoogleAccessId=service-132480619309@gcf-admin-robot.iam.gserviceaccount.com&Expires=1589477664&Signature=gjJxZJ0rNqLH2cGWv0VfBDNHugYasuVa59P73pYZQ%2BnUCpcZ5vvi8ZXvkezZDiciLGhVm%2BE28p4iWG51E4%2F3HuIoejHTyJuyORx5vGPCxB7nG1GNoijcTql4t7CIkJqQYCng3aanTx8B7GBxuoEDCFHmOuYQM%2BLhGft28PmGxH5fhkcS8a%2BljVJopqEogeSoTMk6JGfAOHnL3Aasg2npDnWV%2B2MhpW1hM9XTUKIia5sS0NI67TblaOuI79%2FoQ8PekJXZiO6qs0szmcCh6ZDnKtlltIk4u%2FLTLk7QQ6S6zKgWgFYkNE00XlcyYZ1w9kn2UndpbRSlruCzv02MyPMMjA%3D%3D","name":"projects/chartshare-f9974/locations/us-central1/functions/helloWorld","labels":{"deployment-tool":"cli-firebase"},"httpsTrigger":{},"runtime":"nodejs8"}
[2020-05-14T17:04:25.505Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:25 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:25.509Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/projects/chartshare-f9974/locations/-/functions  

[2020-05-14T17:04:25.778Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:25 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:25.779Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:25.933Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:25 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:27.937Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:28.109Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:28 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:30.112Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:30.327Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:30 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:32.328Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:32.483Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:32 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:34.484Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:34.600Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:34 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:36.603Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:36.763Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:36 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:38.766Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:38.892Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:38 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:40.894Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:41.045Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:41 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:43.046Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:43.133Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:43 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:45.135Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:45.293Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:45 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:47.296Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:47.415Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:47 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:49.418Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:49.526Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:49 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:51.530Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:51.683Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:51 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:53.686Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:53.823Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:53 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:55.827Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:55.959Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:55 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:04:57.962Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:04:58.073Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:04:58 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:05:00.080Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:05:00.239Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:05:00 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
[2020-05-14T17:05:02.240Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/Y2hhcnRzaGFyZS1mOTk3NC91cy1jZW50cmFsMS9oZWxsb1dvcmxkL2dzZXJsX1RVMjhV  

[2020-05-14T17:05:02.425Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 17:05:02 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","accept-ranges":"none","transfer-encoding":"chunked"}
✔  functions[helloWorld(us-central1)]: Successful update operation. 

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/chartshare-f9974/overview
joehan commented 4 years ago

Hey @MathBunny, I chatted with Bryan about this last Friday, not sure if it reached you. You're absolutely right about the cause of this issue - on function creation, the CLI makes a call to IAM to try to make your new function public. That call is failing due to your org policy, so the function ends up being created but staying private. The next deploy succeeds, because it is updating the function, and the CLI doesn't make any IAM calls when updating functions (so that it won't break any manual changes to IAM policy).

Having said all that, I do think it would be worth cleaning up and clarifying the error here - ideally, that first deployment should show a message like "Unable to set IAM policy to make "functionXYZ" public"

MathBunny commented 4 years ago

Thanks for following up! This is consistent with the behavior I was seeing, as I was unable to make the functions public as well.