prefect-aws


Nameprefect-aws JSON
Version 0.5.16 PyPI version JSON
download
home_pageNone
SummaryPrefect integrations for interacting with Amazon Web Services.
upload_time2025-08-27 14:22:41
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseApache License 2.0
keywords prefect
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # `prefect-aws`

<p align="center">
    <a href="https://pypi.python.org/pypi/prefect-aws/" alt="PyPI version">
        <img alt="PyPI" src="https://img.shields.io/pypi/v/prefect-aws?color=26272B&labelColor=090422"></a>
    <a href="https://pepy.tech/badge/prefect-aws/" alt="Downloads">
        <img src="https://img.shields.io/pypi/dm/prefect-aws?color=26272B&labelColor=090422" /></a>
</p>

## Welcome

Build production-ready data workflows that seamlessly integrate with AWS services. `prefect-aws` provides battle-tested blocks, tasks, and infrastructure integrations for AWS, featuring support for ECS, S3, Secrets Manager, Lambda, Batch, and Glue.

## Why use prefect-aws?

While you could integrate with AWS services directly using boto3, `prefect-aws` offers significant advantages:

- **Production-ready integrations**: Pre-built, tested components that handle common AWS patterns and edge cases
- **Unified credential management**: Secure, centralized authentication that works consistently across all AWS services
- **Built-in observability**: Automatic logging, monitoring, and state tracking for all AWS operations in your workflows
- **Infrastructure as code**: Deploy and scale your workflows on AWS ECS with minimal configuration
- **Error handling & retries**: Robust error handling with intelligent retry logic for transient AWS service issues
- **Type safety**: Full type hints and validation for all AWS service interactions

## Getting started

### Prerequisites

- An [AWS account](https://aws.amazon.com/account/) and the necessary permissions to access desired services.

### Installation

Install `prefect-aws` as a dependency of Prefect. If you don't already have `prefect` installed, it will install the newest version of `prefect` as well.

```bash
pip install "prefect[aws]"
```

## Blocks setup

### Credentials

Most AWS services require an authenticated session.
Prefect makes it simple to provide credentials via AWS Credentials blocks.

Steps:

1. Refer to the [AWS Configuration documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds) to retrieve your access key ID and secret access key.
1. Copy the access key ID and secret access key.
1. Create an `AwsCredentials` block in the Prefect UI or use a Python script like the one below.

```python
from prefect_aws import AwsCredentials


AwsCredentials(
    aws_access_key_id="PLACEHOLDER",
    aws_secret_access_key="PLACEHOLDER",
    aws_session_token=None,  # replace this with token if necessary
    region_name="us-east-2"
).save("BLOCK-NAME-PLACEHOLDER")
```

Prefect uses the Boto3 library under the hood.
To find credentials for authentication, any data not provided to the block are sourced at runtime in the order shown in the [Boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials).
Prefect creates the session object using the values in the block and then, any missing values follow the sequence in the Boto3 docs.

### S3

Create a block for reading and writing files to S3.

```python
from prefect_aws import AwsCredentials
from prefect_aws.s3 import S3Bucket

S3Bucket(
    bucket_name="BUCKET-NAME-PLACEHOLDER",
    credentials=aws_credentials
).save("S3-BLOCK-NAME-PLACEHOLDER")
```

### Lambda
Invoke AWS Lambdas, synchronously or asynchronously.

```python
from prefect_aws.lambda_function import LambdaFunction
from prefect_aws.credentials import AwsCredentials

LambdaFunction(
    function_name="test_lambda_function",
    aws_credentials=credentials,
).save("LAMBDA-BLOCK-NAME-PLACEHOLDER")
```

### Secret Manager
Create a block to read, write, and delete AWS Secret Manager secrets.

```python
from prefect_aws import AwsCredentials
from prefect_aws.secrets_manager import AwsSecret

AwsSecret(
    secret_name="test_secret_name",
    aws_credentials=credentials,
).save("AWS-SECRET-BLOCK-NAME-PLACEHOLDER")

```


## Scale workflows with AWS infrastructure

### ECS (Elastic Container Service)

Deploy and scale your Prefect workflows on [AWS ECS](https://aws.amazon.com/ecs/) for production workloads. `prefect-aws` provides:

- **ECS workers**: Long-running workers for hybrid deployments with full control over execution environment
- **Auto-scaling**: Dynamic resource allocation based on workflow demands
- **Cost optimization**: Pay only for compute resources when workflows are running

See the [ECS worker deployment guide](/integrations/prefect-aws/ecs_guide) for a step-by-step walkthrough of deploying production-ready workers to your ECS cluster.

### Docker Images

Pre-built Docker images with `prefect-aws` are available for simplified deployment:

```bash
docker pull prefecthq/prefect-aws:latest
```

#### Available Tags

Image tags have the following format:
- `prefecthq/prefect-aws:latest` - Latest stable release with Python 3.12
- `prefecthq/prefect-aws:latest-python3.11` - Latest stable with Python 3.11
- `prefecthq/prefect-aws:0.5.9-python3.12` - Specific prefect-aws version with Python 3.12
- `prefecthq/prefect-aws:0.5.9-python3.12-prefect3.4.9` - Full version specification

#### Usage Examples

**Running an ECS worker:**
```bash
docker run -d \
  --name prefect-ecs-worker \
  -e PREFECT_API_URL=https://api.prefect.cloud/api/accounts/your-account/workspaces/your-workspace \
  -e PREFECT_API_KEY=your-api-key \
  prefecthq/prefect-aws:latest \
  prefect worker start --pool ecs-pool
```

**Local development:**
```bash
docker run -it --rm \
  -v $(pwd):/opt/prefect \
  prefecthq/prefect-aws:latest \
  python your_flow.py
```

## Supported AWS services

`prefect-aws` provides comprehensive integrations for key AWS services:

| Service | Integration Type | Use Cases |
|---------|-----------------|-----------|
| **S3** | `S3Bucket` block | File storage, data lake operations, deployment storage |
| **Secrets Manager** | `AwsSecret` block | Secure credential storage, API key management |
| **Lambda** | `LambdaFunction` block | Serverless function execution, event-driven processing |
| **Glue** | `GlueJobBlock` block | ETL operations, data transformation pipelines |
| **ECS** | `ECSWorker` infrastructure | Container orchestration, scalable compute workloads |
| **Batch** | `batch_submit` task | High-throughput computing, batch job processing |

**Integration types explained:**
- **Blocks**: Reusable configuration objects that can be saved and shared across flows
- **Tasks**: Functions decorated with `@task` for direct use in flows
- **Workers**: Infrastructure components for running flows on AWS compute services

Each integration includes full support for AWS IAM roles, cross-region operations, and Prefect's built-in retry and error handling mechanisms.

## Examples

### Read and write files to AWS S3

Upload a file to an AWS S3 bucket and download the same file under a different filename.
The following code assumes that the bucket already exists:

```python
from pathlib import Path
from prefect import flow
from prefect_aws import AwsCredentials, S3Bucket


@flow
def s3_flow():
    # create a dummy file to upload
    file_path = Path("test-example.txt")
    file_path.write_text("Hello, Prefect!")

    aws_credentials = AwsCredentials.load("BLOCK-NAME-PLACEHOLDER")
    s3_bucket = S3Bucket(
        bucket_name="BUCKET-NAME-PLACEHOLDER",
        credentials=aws_credentials
    )

    s3_bucket_path = s3_bucket.upload_from_path(file_path)
    downloaded_file_path = s3_bucket.download_object_to_path(
        s3_bucket_path, "downloaded-test-example.txt"
    )
    return downloaded_file_path.read_text()


if __name__ == "__main__":
    s3_flow()
```

### Access secrets with AWS Secrets Manager

Write a secret to AWS Secrets Manager, read the secret data, delete the secret, and return the secret data.

```python
from prefect import flow
from prefect_aws import AwsCredentials, AwsSecret


@flow
def secrets_manager_flow():
    aws_credentials = AwsCredentials.load("BLOCK-NAME-PLACEHOLDER")
    aws_secret = AwsSecret(secret_name="test-example", aws_credentials=aws_credentials)
    aws_secret.write_secret(secret_data=b"Hello, Prefect!")
    secret_data = aws_secret.read_secret()
    aws_secret.delete_secret()
    return secret_data


if __name__ == "__main__":
    secrets_manager_flow()
```

### Invoke lambdas

```python
from prefect_aws.lambda_function import LambdaFunction
from prefect_aws.credentials import AwsCredentials

credentials = AwsCredentials()
lambda_function = LambdaFunction(
    function_name="test_lambda_function",
    aws_credentials=credentials,
)
response = lambda_function.invoke(
    payload={"foo": "bar"},
    invocation_type="RequestResponse",
)
response["Payload"].read()
```

### Submit AWS Glue jobs

```python
from prefect import flow
from prefect_aws import AwsCredentials
from prefect_aws.glue_job import GlueJobBlock


@flow
def example_run_glue_job():
    aws_credentials = AwsCredentials(
        aws_access_key_id="your_access_key_id",
        aws_secret_access_key="your_secret_access_key"
    )
    glue_job_run = GlueJobBlock(
        job_name="your_glue_job_name",
        arguments={"--YOUR_EXTRA_ARGUMENT": "YOUR_EXTRA_ARGUMENT_VALUE"},
    ).trigger()

    return glue_job_run.wait_for_completion()


if __name__ == "__main__":
    example_run_glue_job()
```

### Submit AWS Batch jobs

```python
from prefect import flow
from prefect_aws import AwsCredentials
from prefect_aws.batch import batch_submit


@flow
def example_batch_submit_flow():
    aws_credentials = AwsCredentials(
        aws_access_key_id="access_key_id",
        aws_secret_access_key="secret_access_key"
    )
    job_id = batch_submit(
        "job_name",
        "job_queue",
        "job_definition",
        aws_credentials
    )
    return job_id


if __name__ == "__main__":
    example_batch_submit_flow()
```

## Resources

### Documentation
- **[prefect-aws SDK Reference](https://reference.prefect.io/prefect_aws/)** - Complete API documentation for all blocks and tasks
- **[ECS Deployment Guide](/integrations/prefect-aws/ecs_guide)** - Step-by-step guide for deploying workflows on ECS
- **[Prefect Secrets Management](/v3/develop/secrets)** - Using AWS credentials with third-party services

### AWS Resources
- **[AWS Documentation](https://docs.aws.amazon.com/)** - Official AWS service documentation
- **[Boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)** - Python SDK reference for AWS services
- **[AWS IAM Best Practices](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)** - Security recommendations for AWS access

### Community & Support
- **[Prefect Slack Community](https://prefect.io/slack)** - Get help and share experiences
- **[GitHub Issues](https://github.com/PrefectHQ/prefect/issues)** - Report bugs and request features

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "prefect-aws",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "prefect",
    "author": null,
    "author_email": "\"Prefect Technologies, Inc.\" <help@prefect.io>",
    "download_url": "https://files.pythonhosted.org/packages/b4/5a/493fdbd95a1c2832556caec88478abb2776d3973c8f963dd3ab2b36e144c/prefect_aws-0.5.16.tar.gz",
    "platform": null,
    "description": "# `prefect-aws`\n\n<p align=\"center\">\n    <a href=\"https://pypi.python.org/pypi/prefect-aws/\" alt=\"PyPI version\">\n        <img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/prefect-aws?color=26272B&labelColor=090422\"></a>\n    <a href=\"https://pepy.tech/badge/prefect-aws/\" alt=\"Downloads\">\n        <img src=\"https://img.shields.io/pypi/dm/prefect-aws?color=26272B&labelColor=090422\" /></a>\n</p>\n\n## Welcome\n\nBuild production-ready data workflows that seamlessly integrate with AWS services. `prefect-aws` provides battle-tested blocks, tasks, and infrastructure integrations for AWS, featuring support for ECS, S3, Secrets Manager, Lambda, Batch, and Glue.\n\n## Why use prefect-aws?\n\nWhile you could integrate with AWS services directly using boto3, `prefect-aws` offers significant advantages:\n\n- **Production-ready integrations**: Pre-built, tested components that handle common AWS patterns and edge cases\n- **Unified credential management**: Secure, centralized authentication that works consistently across all AWS services\n- **Built-in observability**: Automatic logging, monitoring, and state tracking for all AWS operations in your workflows\n- **Infrastructure as code**: Deploy and scale your workflows on AWS ECS with minimal configuration\n- **Error handling & retries**: Robust error handling with intelligent retry logic for transient AWS service issues\n- **Type safety**: Full type hints and validation for all AWS service interactions\n\n## Getting started\n\n### Prerequisites\n\n- An [AWS account](https://aws.amazon.com/account/) and the necessary permissions to access desired services.\n\n### Installation\n\nInstall `prefect-aws` as a dependency of Prefect. If you don't already have `prefect` installed, it will install the newest version of `prefect` as well.\n\n```bash\npip install \"prefect[aws]\"\n```\n\n## Blocks setup\n\n### Credentials\n\nMost AWS services require an authenticated session.\nPrefect makes it simple to provide credentials via AWS Credentials blocks.\n\nSteps:\n\n1. Refer to the [AWS Configuration documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds) to retrieve your access key ID and secret access key.\n1. Copy the access key ID and secret access key.\n1. Create an `AwsCredentials` block in the Prefect UI or use a Python script like the one below.\n\n```python\nfrom prefect_aws import AwsCredentials\n\n\nAwsCredentials(\n    aws_access_key_id=\"PLACEHOLDER\",\n    aws_secret_access_key=\"PLACEHOLDER\",\n    aws_session_token=None,  # replace this with token if necessary\n    region_name=\"us-east-2\"\n).save(\"BLOCK-NAME-PLACEHOLDER\")\n```\n\nPrefect uses the Boto3 library under the hood.\nTo find credentials for authentication, any data not provided to the block are sourced at runtime in the order shown in the [Boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials).\nPrefect creates the session object using the values in the block and then, any missing values follow the sequence in the Boto3 docs.\n\n### S3\n\nCreate a block for reading and writing files to S3.\n\n```python\nfrom prefect_aws import AwsCredentials\nfrom prefect_aws.s3 import S3Bucket\n\nS3Bucket(\n    bucket_name=\"BUCKET-NAME-PLACEHOLDER\",\n    credentials=aws_credentials\n).save(\"S3-BLOCK-NAME-PLACEHOLDER\")\n```\n\n### Lambda\nInvoke AWS Lambdas, synchronously or asynchronously.\n\n```python\nfrom prefect_aws.lambda_function import LambdaFunction\nfrom prefect_aws.credentials import AwsCredentials\n\nLambdaFunction(\n    function_name=\"test_lambda_function\",\n    aws_credentials=credentials,\n).save(\"LAMBDA-BLOCK-NAME-PLACEHOLDER\")\n```\n\n### Secret Manager\nCreate a block to read, write, and delete AWS Secret Manager secrets.\n\n```python\nfrom prefect_aws import AwsCredentials\nfrom prefect_aws.secrets_manager import AwsSecret\n\nAwsSecret(\n    secret_name=\"test_secret_name\",\n    aws_credentials=credentials,\n).save(\"AWS-SECRET-BLOCK-NAME-PLACEHOLDER\")\n\n```\n\n\n## Scale workflows with AWS infrastructure\n\n### ECS (Elastic Container Service)\n\nDeploy and scale your Prefect workflows on [AWS ECS](https://aws.amazon.com/ecs/) for production workloads. `prefect-aws` provides:\n\n- **ECS workers**: Long-running workers for hybrid deployments with full control over execution environment\n- **Auto-scaling**: Dynamic resource allocation based on workflow demands\n- **Cost optimization**: Pay only for compute resources when workflows are running\n\nSee the [ECS worker deployment guide](/integrations/prefect-aws/ecs_guide) for a step-by-step walkthrough of deploying production-ready workers to your ECS cluster.\n\n### Docker Images\n\nPre-built Docker images with `prefect-aws` are available for simplified deployment:\n\n```bash\ndocker pull prefecthq/prefect-aws:latest\n```\n\n#### Available Tags\n\nImage tags have the following format:\n- `prefecthq/prefect-aws:latest` - Latest stable release with Python 3.12\n- `prefecthq/prefect-aws:latest-python3.11` - Latest stable with Python 3.11\n- `prefecthq/prefect-aws:0.5.9-python3.12` - Specific prefect-aws version with Python 3.12\n- `prefecthq/prefect-aws:0.5.9-python3.12-prefect3.4.9` - Full version specification\n\n#### Usage Examples\n\n**Running an ECS worker:**\n```bash\ndocker run -d \\\n  --name prefect-ecs-worker \\\n  -e PREFECT_API_URL=https://api.prefect.cloud/api/accounts/your-account/workspaces/your-workspace \\\n  -e PREFECT_API_KEY=your-api-key \\\n  prefecthq/prefect-aws:latest \\\n  prefect worker start --pool ecs-pool\n```\n\n**Local development:**\n```bash\ndocker run -it --rm \\\n  -v $(pwd):/opt/prefect \\\n  prefecthq/prefect-aws:latest \\\n  python your_flow.py\n```\n\n## Supported AWS services\n\n`prefect-aws` provides comprehensive integrations for key AWS services:\n\n| Service | Integration Type | Use Cases |\n|---------|-----------------|-----------|\n| **S3** | `S3Bucket` block | File storage, data lake operations, deployment storage |\n| **Secrets Manager** | `AwsSecret` block | Secure credential storage, API key management |\n| **Lambda** | `LambdaFunction` block | Serverless function execution, event-driven processing |\n| **Glue** | `GlueJobBlock` block | ETL operations, data transformation pipelines |\n| **ECS** | `ECSWorker` infrastructure | Container orchestration, scalable compute workloads |\n| **Batch** | `batch_submit` task | High-throughput computing, batch job processing |\n\n**Integration types explained:**\n- **Blocks**: Reusable configuration objects that can be saved and shared across flows\n- **Tasks**: Functions decorated with `@task` for direct use in flows\n- **Workers**: Infrastructure components for running flows on AWS compute services\n\nEach integration includes full support for AWS IAM roles, cross-region operations, and Prefect's built-in retry and error handling mechanisms.\n\n## Examples\n\n### Read and write files to AWS S3\n\nUpload a file to an AWS S3 bucket and download the same file under a different filename.\nThe following code assumes that the bucket already exists:\n\n```python\nfrom pathlib import Path\nfrom prefect import flow\nfrom prefect_aws import AwsCredentials, S3Bucket\n\n\n@flow\ndef s3_flow():\n    # create a dummy file to upload\n    file_path = Path(\"test-example.txt\")\n    file_path.write_text(\"Hello, Prefect!\")\n\n    aws_credentials = AwsCredentials.load(\"BLOCK-NAME-PLACEHOLDER\")\n    s3_bucket = S3Bucket(\n        bucket_name=\"BUCKET-NAME-PLACEHOLDER\",\n        credentials=aws_credentials\n    )\n\n    s3_bucket_path = s3_bucket.upload_from_path(file_path)\n    downloaded_file_path = s3_bucket.download_object_to_path(\n        s3_bucket_path, \"downloaded-test-example.txt\"\n    )\n    return downloaded_file_path.read_text()\n\n\nif __name__ == \"__main__\":\n    s3_flow()\n```\n\n### Access secrets with AWS Secrets Manager\n\nWrite a secret to AWS Secrets Manager, read the secret data, delete the secret, and return the secret data.\n\n```python\nfrom prefect import flow\nfrom prefect_aws import AwsCredentials, AwsSecret\n\n\n@flow\ndef secrets_manager_flow():\n    aws_credentials = AwsCredentials.load(\"BLOCK-NAME-PLACEHOLDER\")\n    aws_secret = AwsSecret(secret_name=\"test-example\", aws_credentials=aws_credentials)\n    aws_secret.write_secret(secret_data=b\"Hello, Prefect!\")\n    secret_data = aws_secret.read_secret()\n    aws_secret.delete_secret()\n    return secret_data\n\n\nif __name__ == \"__main__\":\n    secrets_manager_flow()\n```\n\n### Invoke lambdas\n\n```python\nfrom prefect_aws.lambda_function import LambdaFunction\nfrom prefect_aws.credentials import AwsCredentials\n\ncredentials = AwsCredentials()\nlambda_function = LambdaFunction(\n    function_name=\"test_lambda_function\",\n    aws_credentials=credentials,\n)\nresponse = lambda_function.invoke(\n    payload={\"foo\": \"bar\"},\n    invocation_type=\"RequestResponse\",\n)\nresponse[\"Payload\"].read()\n```\n\n### Submit AWS Glue jobs\n\n```python\nfrom prefect import flow\nfrom prefect_aws import AwsCredentials\nfrom prefect_aws.glue_job import GlueJobBlock\n\n\n@flow\ndef example_run_glue_job():\n    aws_credentials = AwsCredentials(\n        aws_access_key_id=\"your_access_key_id\",\n        aws_secret_access_key=\"your_secret_access_key\"\n    )\n    glue_job_run = GlueJobBlock(\n        job_name=\"your_glue_job_name\",\n        arguments={\"--YOUR_EXTRA_ARGUMENT\": \"YOUR_EXTRA_ARGUMENT_VALUE\"},\n    ).trigger()\n\n    return glue_job_run.wait_for_completion()\n\n\nif __name__ == \"__main__\":\n    example_run_glue_job()\n```\n\n### Submit AWS Batch jobs\n\n```python\nfrom prefect import flow\nfrom prefect_aws import AwsCredentials\nfrom prefect_aws.batch import batch_submit\n\n\n@flow\ndef example_batch_submit_flow():\n    aws_credentials = AwsCredentials(\n        aws_access_key_id=\"access_key_id\",\n        aws_secret_access_key=\"secret_access_key\"\n    )\n    job_id = batch_submit(\n        \"job_name\",\n        \"job_queue\",\n        \"job_definition\",\n        aws_credentials\n    )\n    return job_id\n\n\nif __name__ == \"__main__\":\n    example_batch_submit_flow()\n```\n\n## Resources\n\n### Documentation\n- **[prefect-aws SDK Reference](https://reference.prefect.io/prefect_aws/)** - Complete API documentation for all blocks and tasks\n- **[ECS Deployment Guide](/integrations/prefect-aws/ecs_guide)** - Step-by-step guide for deploying workflows on ECS\n- **[Prefect Secrets Management](/v3/develop/secrets)** - Using AWS credentials with third-party services\n\n### AWS Resources\n- **[AWS Documentation](https://docs.aws.amazon.com/)** - Official AWS service documentation\n- **[Boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)** - Python SDK reference for AWS services\n- **[AWS IAM Best Practices](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)** - Security recommendations for AWS access\n\n### Community & Support\n- **[Prefect Slack Community](https://prefect.io/slack)** - Get help and share experiences\n- **[GitHub Issues](https://github.com/PrefectHQ/prefect/issues)** - Report bugs and request features\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "Prefect integrations for interacting with Amazon Web Services.",
    "version": "0.5.16",
    "project_urls": {
        "Homepage": "https://github.com/PrefectHQ/prefect/tree/main/src/integrations/prefect-aws"
    },
    "split_keywords": [
        "prefect"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d49db6146f061b0da5e3a74abded8275b8a16f9f168d7a7dacf04c5515ee40c0",
                "md5": "f203cb488d6d18a89dd7c14bf0d70bc6",
                "sha256": "a62176b7d7c3dcdae35774a0ec68c2c72f984efac6e09f5148191ab5c2b1ca0c"
            },
            "downloads": -1,
            "filename": "prefect_aws-0.5.16-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f203cb488d6d18a89dd7c14bf0d70bc6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 82913,
            "upload_time": "2025-08-27T14:22:40",
            "upload_time_iso_8601": "2025-08-27T14:22:40.255458Z",
            "url": "https://files.pythonhosted.org/packages/d4/9d/b6146f061b0da5e3a74abded8275b8a16f9f168d7a7dacf04c5515ee40c0/prefect_aws-0.5.16-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b45a493fdbd95a1c2832556caec88478abb2776d3973c8f963dd3ab2b36e144c",
                "md5": "114095014c81fdce68abd806300067b9",
                "sha256": "ca8da239c0539bab1d402ae1583168888715d604047202ea8ae8a6481de3d6bf"
            },
            "downloads": -1,
            "filename": "prefect_aws-0.5.16.tar.gz",
            "has_sig": false,
            "md5_digest": "114095014c81fdce68abd806300067b9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 134175,
            "upload_time": "2025-08-27T14:22:41",
            "upload_time_iso_8601": "2025-08-27T14:22:41.683936Z",
            "url": "https://files.pythonhosted.org/packages/b4/5a/493fdbd95a1c2832556caec88478abb2776d3973c8f963dd3ab2b36e144c/prefect_aws-0.5.16.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-27 14:22:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "PrefectHQ",
    "github_project": "prefect",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "prefect-aws"
}
        
Elapsed time: 4.94839s