planet-client-python icon indicating copy to clipboard operation
planet-client-python copied to clipboard

Add support for GEE service account credentials

Open kevinlacaille opened this issue 3 years ago • 2 comments

Is your feature request related to a problem? Please describe. In order for a user to bring their own GCS service account, we must supply them with somewhere to input that SA's credentials in order_request.google_earth_engine()

We already show support for the credentials field on our Dev Center's example request JSON.

Describe the solution you'd like Current Google Earth Engine configuration:

def google_earth_engine(project: str, collection: str) -> dict:
    '''Google Earth Engine configuration.
    Parameters:
        project: GEE project name.
        collection: GEE Image Collection name.
    '''
    cloud_details = {
        'project': project,
        'collection': collection,
    }
    return {'google_earth_engine': cloud_details}

Proposed solution:

def google_earth_engine(project: str, collection: str, credentials: str) -> dict:
    '''Google Earth Engine configuration.
    Parameters:
        project: GEE project name.
        collection: GEE Image Collection name.
        credentials: Base64-encoded credentials for the GEE service account
    '''
    cloud_details = {
        'project': project,
        'collection': collection,
        'credentials': credentials,
    }
    return {'google_earth_engine': cloud_details}

Current test:

def test_google_earth_engine():
    gee_config = order_request.google_earth_engine('project', 'collection')
    expected = {
        'google_earth_engine': {
            'project': 'project',
            'collection': 'collection',
        }
    }

    assert gee_config == expected

Proposed test:

def test_google_earth_engine():
    gee_config = order_request.google_earth_engine('project', 'collection', 'credentials')
    expected = {
        'google_earth_engine': {
            'project': 'project',
            'collection': 'collection',
            'credentials': '<REDACTED>',
        }
    }

    assert gee_config == expected

Additional context Many users like to bring their own service account over using Planet's, so this feature is likely to be used.

kevinlacaille avatar Nov 16 '22 21:11 kevinlacaille

Note: bringing your own service account for GEE delivery is recommended for high volume workloads.

With the default Planet Service Account, the ingest queue can fill up with large orders. Planet recommends a limit of approximately 1000 assets delivered per organization, per day. There is also an option to bring their own service account for a dedicated queue with greater scalability.

See these docs for more info: https://developers.planet.com/docs/integrations/gee/faq/ https://developers.planet.com/docs/integrations/gee/delivery/#creating-a-service-account

strixcuriosus avatar May 17 '23 18:05 strixcuriosus

Any thoughts on how the CLI UX could encourage and/or inform users of this option?

strixcuriosus avatar May 17 '23 18:05 strixcuriosus