IP Library Granted Patent US 10,261,782
Granted Patent B2
US 10,261,782 · App. 14/975,631 · Granted Apr 16, 2019

Software container registry service

Inventors: Anthony Joseph Suarez (Seattle, WA); Scott Kerns Windsor (Seattle, WA); Nare Hayrapetyan (Seattle, WA); Daniel Robert Gerdesmeier (Seattle, WA); Pooja Kalpana Prakash (Seattle, WA)
Assignee: Amazon Technologies, Inc.
G06F8/71G06F8/63G06F9/45558G06F21/53G06F21/6209G06F2009/4557G06F2221/033
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,261,782
App. No.
14/975,631
Granted
Apr 16, 2019
Kind
B2
Abstract

A request to store, in first data store associated with a customer of a computing resource service provider, a software image is received, the request including a set of layers of the software image to be stored. As a result of successful authentication of the request, based at least in part on a security token included with the request, a subset of layers of the software image that have not previously been stored in the first data store are determined, based at least in part on first metadata obtained from a second data store, the subset of layers in the first data store are stored, second metadata about the subset of layers are stored in the second data store, and the software image is caused to be launched in a software container of an instance based at least in part on the subset of layers.

Claims (93)

1. One or more non-transitory computer-readable storage media having collectively stored thereon executable instructions that, as a result of execution by one or more processors of a distributed computer system, cause the distributed computer system to at least:

receive a request to store, in first data store associated with a customer of a computing resource service provider, a software image, the request including a set of layers of the software image to be stored; and

as a result of successful authentication of the request:

determine, based at least in part on first metadata obtained from a second data store:

a first subset of the set of layers that has not previously been stored in the first data store; and

a second subset of the set of layers that is currently stored in the first data store;

store the first subset of layers in the first data store;

store, in the second data store, second metadata about the first subset of layers stored in the first data store; and

cause the software image to be launched in a software container of an instance based at least in part on the first subset, the second subset, the first metadata and the second metadata.

2. The one or more non-transitory computer-readable storage media of claim 1 , wherein:

the request includes at least one build artifact for the software image; and

the executable instructions that cause the distributed computer system to receive the request include instructions that cause the distributed computer system to:

store at least the one build artifact with a managed source control service; and

building the set of layers of the software image from at least the one build artifact.

3. The one or more non-transitory computer-readable storage media of claim 1 , wherein:

the first data store is located in a first region;

the instance is hosted on a computing system that is physically located in a second region; and

the executable instructions that cause the distributed computer system to cause the software image to be launched further include executable instructions that cause the distributed computer system to:

determine that the instance is running a previous version of the software image;

determine that the software image is a latest version of the software image;

copy the first subset of layers from the first data store to a second data store that is hosted on a computing system that is physically located in the second region to form a copied software image; and

cause the software image to be launched in the software container based at least in part on the copied software image.

4. The one or more non-transitory computer-readable storage media of claim 1 , wherein:

the instance is an instance of a second customer of the computing resource service provider; and

the second customer is charged, by the customer, for usage of the software container in which the software image is launched.

5. The one or more non-transitory computer-readable storage media of claim 1 , wherein the executable instructions further include executable instructions that cause the distributed computer system to, dependent upon a determination that the software image was successfully launched in the software container of the instance, cause the software image to be launched in a second software container of a second instance associated with the customer.

6. The one or more non-transitory computer-readable storage media of claim 1 , wherein:

the first data store holds a first version of a software application associated with a tag;

the software image is a second version of a software application; and

the executable instructions further include executable instructions that cause the distributed computer system to, as a result of receiving a second request to associate the tag with the second version of the software image:

disassociate the tag with the first version; and

associate the tag with the second version.

7. The one or more non-transitory computer-readable storage media of claim 1 , wherein the executable instructions that cause the distributed computer system to store the first subset of layers include executable instructions that cause the distributed computer system to:

scan the first subset of layers for a match to one or more specified criteria; and

store, depending at least in part on not finding the match to the one or more specified criteria, the first subset of layers in the first data store.

8. The one or more non-transitory computer-readable storage media of claim 7 , wherein the executable instructions that cause the distributed computer system to cause the software image to be launched include executable instructions that cause the distributed computer system to:

obtain the software image from the first data store to form an obtained software image;

open the obtained software image to form an opened software image;

scan the opened software image for a match to one or more specified criteria; and

launch, depending at least in part on not finding a match to the one or more specified criteria, the opened software image in the software container of the instance.

9. A system comprising:

one or more processors; and

memory including executable instructions that, if executed by the one or more processors, cause the system to:

receive a request to store, in first data store associated with a customer of a computing resource service provider, a software image, the request including a set of layers of the software image to be stored; and

as a result of successful authentication of the request:

determine, based at least in part on first metadata obtained from a second data store that:

a first subset of the set of layers has not previously been stored in the first data store; and

a second subset of the set of layers is already stored in the first data store;

store the first subset of layers in the first data store;

store, in the second data store, second metadata about the first subset of layers stored in the first data store; and

cause the software image to be launched in a software container of an instance based at least in part on the first subset, the second subset, the first metadata and the second metadata.

10. The system of claim 9 , wherein the executable instructions that cause the software image to be launched include instructions that cause the system to:

obtain the first subset of layers from the first data store as an obtained image; and

deploy the obtained image as a software container within a virtual machine instance associated with the customer.

11. The system of claim 10 , wherein

the executable instructions further include instructions that cause the system to obtain, based at least in part on a storage locations in the second metadata, the first subset of layers as an obtained container image; and

the executable instructions that cause the system to deploy the obtained container image further include instructions that cause the system to:

copy the obtained image to a second data store that is physically located in a different geographic region from the first data store to form a copied image; and

deploy, from the second data store, the copied image as another software container to another virtual machine associated with the customer that is physically located in the different geographic region.

12. The system of claim 9 , wherein:

the executable instructions further include instructions that cause the system to:

submit credential information of the customer to an authentication service for validation; and

as a result of receiving an indication of successful validation of the credential information by the authentication service, obtain an encrypted security token generated based at least in part on encrypting the credential information and at least one restriction; and

authenticate the request by causing the system to:

decrypt the encrypted security token to obtain decrypted credential information and a decrypted restriction; and

verify that the decrypted credential information and the decrypted restriction authorizes fulfilment of the request to store the first subset of layers in the first data store.

13. A computer-implemented method comprising:

receiving a request to store, in first data store associated with a customer of a computing resource service provider, a software image, the request including a set of layers of the software image to be stored; and

as a result of successfully authenticating the request:

determining, based at least in part on first metadata obtained from a second data store that the set of layers comprises a first subset and a second subset, the first subset not having previously been stored in the first data store, the second subset being currently stored in the first data store;

storing the first subset of layers in the first data store;

storing, in the second data store, second metadata about the first subset of layers stored in the first data store; and

causing the software image to be launched in a software container of an instance based at least in part on the first subset and the second subset.

14. The computer-implemented method of claim 13 , wherein successfully authenticating the request includes successfully authenticating a security token that includes encrypted credential information of the customer, the security token being included with the request.

15. The computer-implemented method of claim 13 , wherein the request is received through an application programming interface from a device associated with the customer.

16. The computer-implemented method of claim 13 , wherein successfully authenticating the request includes:

decrypting an encrypted token included in the request using a key shared as a secret between an entity associated with the customer and the computing resource service provider to produce a set of credentials and a restriction;

authenticating that the set of credentials is associated with the customer;

determining that the customer is authorized to have the first subset of layers stored in the first data store; and

determining, based at least in part on the restriction, that the encrypted token is valid.

17. The computer-implemented method of claim 13 , further comprising:

receiving, from the instance, a first application programming interface request corresponding to a first container engine type;

translating the first application programming interface request into a second application programming interface request having a format that corresponds to a second container engine type; and

providing the second application programming interface request to a service that processes requests of the format that corresponds to the second container engine type.

18. The computer-implemented method of claim 13 , wherein:

the method further comprises converting the software image to another software image comprising another set of layers, the other software image being of a different software container type from the software image; and

storing the other set of layers of the other software image in the first data store.

19. The computer-implemented method of claim 13 , wherein:

the request includes a build artifact for the software image; and

the method further comprises:

storing the build artifact at a managed source control service; and

building the set of layers of the software image from the build artifact.

20. The computer-implemented method of claim 19 , further comprising, dependent upon successfully building the set of layers, scheduling the launching of the software image to the instance in accordance with a deployment strategy specified by the customer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2016
From: SUAREZ, ANTHONY JOSEPH; WINDSOR, SCOTT KERNS; HAYRAPETYAN, NARE; GERDESMEIER, DANIEL ROBERT; PRAKASH, POOJA KALPANA
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 040023/0284 →
Continuity (1)
Related Publication 20170180346A1 · Jun 22, 2017
Cited By (15)
US 12,200,004 US 12,260,205 US 12,321,738 US 12,457,204 US 12,468,522 US 12,481,794 US 12,587,568 US 12,602,246 US 12,634,213 US 12,634,350 US 12,657,051 US 12,693,889 US 12,699,639 US 12,712,727 US 12,717,612