--- title: "How do I upload a Docker image to the FINBOURNE AWS store?" slug: "how-do-i-upload-a-docker-image-to-the-finbourne-aws-store" tags: ["scheduler", "docker", "images", "aws"] updated: 2024-09-26T13:10:22Z published: 2024-09-26T13:10:22Z canonical: "support.lusid.com/how-do-i-upload-a-docker-image-to-the-finbourne-aws-store" --- > ## Documentation Index > Fetch the complete documentation index at: https://support.lusid.com/llms.txt > Use this file to discover all available pages before exploring further. # How do I upload a Docker image to the FINBOURNE AWS store? Providing you are a LUSID user with sufficient [access control permissions](/v1/docs/setting-up-access-control-for-different-scheduler-users), you can upload a Docker image to the FINBOURNE AWS store. Once the image is uploaded, you can use it to create a job. > **Note:** If you are the LUSID domain owner, you are automatically assigned the built-in `lusid-administrator` role, which has all the permissions necessary to perform the operations in this article. **The instructions on this page do not actually upload an image for you**. Instead, they generate a series of commands—authentication credentials and Docker build instructions—that you then run yourself in order to log in, build the image with the correct version tags, and push it to AWS. > **Note:** Your image must not contain any Critical or High vulnerabilities. [Read more on troubleshooting Docker image vulnerabilities.](/v1/docs/troubleshooting-docker-image-vulnerabilities) ## Using the Scheduler REST API For example, to upload the `lusid-upsert-transactions-image` created in [Step 1 of this tutorial](/v1/docs/automatically-upserting-transactions-into-lusid-from-a-csv-file#step-1-creating-a-docker-image-containing-a-suitable-script): 1. [Obtain an API access token](/v1/docs/how-do-i-obtain-and-use-a-short-lived-api-access-token-from-okta). 2. Call the [UploadImage](https://www.lusid.com/docs/api/scheduler/endpoints/images/UploadImage/) API, passing in your API access token and the name and version number of your image (which can be any set of lowercase alphanumeric characters separated by a colon). For example, for an `acmecorp` LUSID domain: ```json curl -X POST "https://acmecorp.lusid.com/scheduler2/api/images"   -H "Authorization: Bearer "    -H "Content-Type: application/json-patch+json"    -d "{'imageName':'lusid-upsert-transactions-image:0.0.1'}" ``` The response contains a list of commands (note the AWS login token has been obfuscated): ```json {   "dockerLoginCommand": "docker login -u AWS -p ",   "buildVersionedDockerImageCommand": "docker build -t lusid-upsert-transactions-image:0.0.1 .",   "tagVersionedDockerImageCommand": "docker tag lusid-upsert-transactions-image:0.0.1 acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:0.0.1",   "pushVersionedDockerImageCommand": "docker push acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:0.0.1",   "tagLatestDockerImageCommand": "docker tag lusid-upsert-transactions-image:0.0.1 acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:latest",   "pushLatestDockerImageCommand": "docker push acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:latest",   "expiryTime": "2021-09-06T22:11:48.5050000+00:00" } ``` 3. Execute the first 6 commands sequentially in a Terminal window (as per the `expiryTime`, note you have 11 hours in which to do so). For example, for the response above you would run the following commands in order: ```bash $ docker login -u AWS -p $ docker build -t lusid-upsert-transactions-image:0.0.1 . $ docker tag lusid-upsert-transactions-image:0.0.1 acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:0.0.1 $ docker push acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:0.0.1 $ docker tag lusid-upsert-transactions-image:0.0.1 acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:latest $ docker push acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:latest ``` ## Using the LUSID web app For example, to upload the `lusid-upsert-transactions-image` created in [Step 1 of this tutorial](/v1/docs/automatically-upserting-transactions-into-lusid-from-a-csv-file#step-1-creating-a-docker-image-containing-a-suitable-script): 1. Sign in to the [LUSID web app](https://www.lusid.com/app) using the credentials of a LUSID administrator. 2. From the left-hand menu, select **Jobs & Scheduling > Images**: ![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/e8803dad-dc65-40a3-8661-a1edb606abdf.png?sv=2026-02-06&spr=https&st=2026-11-09T06%3A32%3A27Z&se=2026-11-09T07%3A32%3A27Z&sr=c&sp=r&sig=gE5hv1mzbqqBX83g2dV7Iu6AJeCJiEkJGfcU7Q7LLoI%3D) 3. On the **Images** dashboard, click the **Upload new image** button. 4. Enter your Docker image **Name** and **Tag** (version number), and click the **Produce command lines** button (note that Docker image names must not contain uppercase characters): ![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/e02a9ae8-262c-44f1-a06a-91f94672a813.png?sv=2026-02-06&spr=https&st=2026-11-09T06%3A32%3A27Z&se=2026-11-09T07%3A32%3A27Z&sr=c&sp=r&sig=gE5hv1mzbqqBX83g2dV7Iu6AJeCJiEkJGfcU7Q7LLoI%3D) 5. Execute the commands sequentially in a Terminal window (note you have 11 hours in which to do so before these commands expire). For example, for an `acmecorp` LUSID domain: ```bash $ docker login -u AWS -p $ docker build -t lusid-upsert-transactions-image:0.0.1 . $ docker tag lusid-upsert-transactions-image:0.0.1 acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:0.0.1 $ docker push acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:0.0.1 $ docker tag lusid-upsert-transactions-image:0.0.1 acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:latest $ docker push acmecorp.lusid.com/acmecorp/lusid-upsert-transactions-image:latest ```