OCI Function Deployment Error
Oracle Cloud Infrastructure offers serverless functions based on the open-source Fn framework. It's a container-native serverless platform that can be run anywhere. For OCI, function development requires a set of tools working together to create and deploy functions in accord. Often, this set of independent tools means you receive some mysterious error without a clear explanation or the root cause.
For example, the screenshot below demonstrates function deployment failure.
Even the verbose output does not help you to get to the bottom of the issue, but authorization failure suggests two possible options:
- Docker has invalid credentials and fails to authenticate against OCI Container Registry
- Docker has valid credentials but uses them against the wrong registry.
In my specific case, the second option was the problem. To solve it, let Fn SDK know where your target registry is. The fix is easy, and according to your preferences, you may specify the registry URL through the environment variable.
$ export FN_REGISTRY=<region-key>.ocir.io/<tenancy-namespace>/my-project
An alternative and more permanent way is to update your Fn project context and add a registry URI to the SDK configuration.
$ fn update context registry <region-key>.ocir.io/my-project
The OCI Container registry URI requires some decryption
region-key | The three-letter code for the OCI global regions. If you are on the East Coast, most likely it would be iad. |
tenancy-namespace | The unique tenancy attribute that you may find on the OCI Tenancy page as an "Object storage namespace." |
my-project | The repository prefix is used to organize images in the registry. I normally use the application name. |
The mystery error is gone, and function deployment has been completed.