Metadata-Version: 2.4
Name: anvil-cloud
Version: 0.0.3
Summary: Anvil — secure-by-default cloud infrastructure components
Author: Damien Pace
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/anvil-cloud/anvil
Project-URL: Repository, https://github.com/anvil-cloud/anvil
Project-URL: Documentation, https://github.com/anvil-cloud/anvil#readme
Keywords: pulumi,anvil,aws,gcp,cloud,infrastructure
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: pulumi<4.0.0,>=3.0.0
Requires-Dist: pulumi-aws<8.0.0,>=7.21.0
Requires-Dist: pulumi-gcp<10.0.0,>=9.0.0

# Anvil — Python SDK

Secure-by-default cloud infrastructure components for [Pulumi](https://www.pulumi.com/).

Anvil wraps raw cloud resources with opinionated, security-hardened defaults so you ship infrastructure that's secure from day one — without the boilerplate.

## Install

```bash
pip install anvil-cloud
```

## Quick start

```python
import pulumi
import pulumi_anvil as anvil

# Create an S3 bucket with encryption, versioning, and public access
# blocked by default — no 30-line config required.
bucket = anvil.aws.Bucket("my-data",
    data_classification="sensitive",
    lifecycle=90,
)

pulumi.export("bucket_name", bucket.bucket_name)
```

```python
# Deploy a Lambda function into a VPC
fn = anvil.aws.Lambda("my-api",
    name="api-handler",
    vpc="vpc-abc123",
)
```

```python
# GCP Cloud Storage with uniform bucket-level access
gcs = anvil.gcp.StorageBucket("analytics",
    data_classification="internal",
    location="US",
)
```

## What you get

| Component                 | Cloud                  | Secure defaults                                                    |
| ------------------------- | ---------------------- | ------------------------------------------------------------------ |
| `anvil.aws.Bucket`        | AWS S3                 | Encryption, versioning (sensitive), public access block, lifecycle |
| `anvil.aws.Lambda`        | AWS Lambda             | VPC placement, least-privilege role                                |
| `anvil.gcp.StorageBucket` | GCP Cloud Storage      | Uniform bucket-level access, encryption                            |
| `anvil.gcp.Function`      | GCP Cloud Functions v2 | Secure defaults                                                    |

## Overrides

Every component accepts a `transform` argument to override or extend the underlying resource configuration when the defaults don't fit:

```python
bucket = anvil.aws.Bucket("custom",
    data_classification="public",
    transform=anvil.aws.BucketTransformArgs(
        overrides=anvil.aws.BucketOverrides(
            force_destroy=True,
            tags={"env": "dev"},
        ),
    ),
)
```

## Requirements

- Python >= 3.8
- Pulumi >= 3.0.0
- The `pulumi-resource-anvil` provider binary (installed via `anvil` CLI or manually)

## Links

- [GitHub](https://github.com/anvil-cloud/anvil)
- [npm (Node SDK)](https://www.npmjs.com/package/@anvil-cloud/sdk)
- [Go SDK](https://pkg.go.dev/github.com/DamienPace15/anvil/sdk/go/anvil)

## License

Apache-2.0
