Skip to content

prefect_earthdata.credentials

Module handling NASA Earthdata credentials

Classes

EarthdataCredentials

Bases: Block

Block used to manage authentication with NASA Earthdata. To obtain an account, please refer to the Earthdata Login docs.

Authentication is handled via the earthaccess module. Refer to the earthaccess docs for more info about the possible credential configurations.

Parameters:

Name Type Description Default
earthdata_username str

The Earthdata username of a specific account.

required
earthdata_password str

The Earthdata password of a specific account.

required
Example

Load stored Earthdata credentials:

from prefect_earthdata import EarthdataCredentials

ed_credentials_block = EarthdataCredentials.load("BLOCK_NAME")

Source code in prefect_earthdata/credentials.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
class EarthdataCredentials(Block):
    """
    Block used to manage authentication with NASA Earthdata.
    To obtain an account, please refer to the
    [Earthdata Login docs](https://www.earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/earthdata-login).

    Authentication is handled via the `earthaccess` module.
    Refer to the [earthaccess docs](https://nsidc.github.io/earthaccess/)
    for more info about the possible credential configurations.

    Args:
        earthdata_username (str): The Earthdata username of a specific account.
        earthdata_password (str): The Earthdata password of a specific account.

    Example:
        Load stored Earthdata credentials:
        ```python
        from prefect_earthdata import EarthdataCredentials

        ed_credentials_block = EarthdataCredentials.load("BLOCK_NAME")
        ```
    """  # noqa E501

    _logo_url = "https://yt3.googleusercontent.com/ytc/AGIKgqPjIUeAw3_hrkHWZgixdwD5jc-hTWweoCA6bJMhUg=s176-c-k-c0x00ffffff-no-rj"  # noqa
    _block_type_name = "NASA Earthdata Credentials"
    _documentation_url = "https://giorgiobasile.github.io/prefect-earthdata/credentials/#prefect_earthdata.credentials.EarthdataCredentials"  # noqa

    earthdata_username: str = Field(
        default=...,
        description="The Earthdata username of a specific account.",
        title="Earthdata username",
    )
    earthdata_password: SecretStr = Field(
        default=...,
        description="The Earthdata password of a specific account.",
        title="Earthdata password",
    )

    def login(self) -> earthaccess.Auth:
        """
        Returns an authenticated session with NASA Earthdata using
        the [`earthaccess.login()`](https://nsidc.github.io/earthaccess/user-reference/api/api/#earthaccess.api.login) function

        Example:
            Authenticates with NASA Earthdata using the credentials.

            ```python
            from prefect_earthdata import EarthdataCredentials

            earthdata_credentials_block = EarthdataCredentials(
                earthdata_username = "username",
                earthdata_password = "password"
            )
            earthdata_auth = earthdata_credentials_block.login()
            ```
        """  # noqa E501

        os.environ["EARTHDATA_USERNAME"] = self.earthdata_username
        os.environ["EARTHDATA_PASSWORD"] = self.earthdata_password.get_secret_value()
        return earthaccess.login(strategy="environment")

Functions

login

Returns an authenticated session with NASA Earthdata using the earthaccess.login() function

Example

Authenticates with NASA Earthdata using the credentials.

from prefect_earthdata import EarthdataCredentials

earthdata_credentials_block = EarthdataCredentials(
    earthdata_username = "username",
    earthdata_password = "password"
)
earthdata_auth = earthdata_credentials_block.login()
Source code in prefect_earthdata/credentials.py
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
def login(self) -> earthaccess.Auth:
    """
    Returns an authenticated session with NASA Earthdata using
    the [`earthaccess.login()`](https://nsidc.github.io/earthaccess/user-reference/api/api/#earthaccess.api.login) function

    Example:
        Authenticates with NASA Earthdata using the credentials.

        ```python
        from prefect_earthdata import EarthdataCredentials

        earthdata_credentials_block = EarthdataCredentials(
            earthdata_username = "username",
            earthdata_password = "password"
        )
        earthdata_auth = earthdata_credentials_block.login()
        ```
    """  # noqa E501

    os.environ["EARTHDATA_USERNAME"] = self.earthdata_username
    os.environ["EARTHDATA_PASSWORD"] = self.earthdata_password.get_secret_value()
    return earthaccess.login(strategy="environment")