Inventory

Provides a S3 bucket inventory configuration resource.

Example Usage

Add inventory configuration

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
    public MyStack()
    {
        var testBucket = new Aws.S3.Bucket("testBucket", new Aws.S3.BucketArgs
        {
        });
        var inventory = new Aws.S3.Bucket("inventory", new Aws.S3.BucketArgs
        {
        });
        var testInventory = new Aws.S3.Inventory("testInventory", new Aws.S3.InventoryArgs
        {
            Bucket = testBucket.Id,
            IncludedObjectVersions = "All",
            Schedule = new Aws.S3.Inputs.InventoryScheduleArgs
            {
                Frequency = "Daily",
            },
            Destination = new Aws.S3.Inputs.InventoryDestinationArgs
            {
                Bucket = new Aws.S3.Inputs.InventoryDestinationBucketArgs
                {
                    Format = "ORC",
                    BucketArn = inventory.Arn,
                },
            },
        });
    }

}
package main

import (
	"github.com/pulumi/pulumi-aws/sdk/v4/go/aws/s3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		testBucket, err := s3.NewBucket(ctx, "testBucket", nil)
		if err != nil {
			return err
		}
		inventory, err := s3.NewBucket(ctx, "inventory", nil)
		if err != nil {
			return err
		}
		_, err = s3.NewInventory(ctx, "testInventory", &s3.InventoryArgs{
			Bucket:                 testBucket.ID(),
			IncludedObjectVersions: pulumi.String("All"),
			Schedule: &s3.InventoryScheduleArgs{
				Frequency: pulumi.String("Daily"),
			},
			Destination: &s3.InventoryDestinationArgs{
				Bucket: &s3.InventoryDestinationBucketArgs{
					Format:    pulumi.String("ORC"),
					BucketArn: inventory.Arn,
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
import pulumi
import pulumi_aws as aws

test_bucket = aws.s3.Bucket("testBucket")
inventory = aws.s3.Bucket("inventory")
test_inventory = aws.s3.Inventory("testInventory",
    bucket=test_bucket.id,
    included_object_versions="All",
    schedule=aws.s3.InventoryScheduleArgs(
        frequency="Daily",
    ),
    destination=aws.s3.InventoryDestinationArgs(
        bucket=aws.s3.InventoryDestinationBucketArgs(
            format="ORC",
            bucket_arn=inventory.arn,
        ),
    ))
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const testBucket = new aws.s3.Bucket("testBucket", {});
const inventory = new aws.s3.Bucket("inventory", {});
const testInventory = new aws.s3.Inventory("testInventory", {
    bucket: testBucket.id,
    includedObjectVersions: "All",
    schedule: {
        frequency: "Daily",
    },
    destination: {
        bucket: {
            format: "ORC",
            bucketArn: inventory.arn,
        },
    },
});

Add inventory configuration with S3 bucket object prefix

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
    public MyStack()
    {
        var test = new Aws.S3.Bucket("test", new Aws.S3.BucketArgs
        {
        });
        var inventory = new Aws.S3.Bucket("inventory", new Aws.S3.BucketArgs
        {
        });
        var test_prefix = new Aws.S3.Inventory("test-prefix", new Aws.S3.InventoryArgs
        {
            Bucket = test.Id,
            IncludedObjectVersions = "All",
            Schedule = new Aws.S3.Inputs.InventoryScheduleArgs
            {
                Frequency = "Daily",
            },
            Filter = new Aws.S3.Inputs.InventoryFilterArgs
            {
                Prefix = "documents/",
            },
            Destination = new Aws.S3.Inputs.InventoryDestinationArgs
            {
                Bucket = new Aws.S3.Inputs.InventoryDestinationBucketArgs
                {
                    Format = "ORC",
                    BucketArn = inventory.Arn,
                    Prefix = "inventory",
                },
            },
        });
    }

}
package main

import (
	"github.com/pulumi/pulumi-aws/sdk/v4/go/aws/s3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		test, err := s3.NewBucket(ctx, "test", nil)
		if err != nil {
			return err
		}
		inventory, err := s3.NewBucket(ctx, "inventory", nil)
		if err != nil {
			return err
		}
		_, err = s3.NewInventory(ctx, "test_prefix", &s3.InventoryArgs{
			Bucket:                 test.ID(),
			IncludedObjectVersions: pulumi.String("All"),
			Schedule: &s3.InventoryScheduleArgs{
				Frequency: pulumi.String("Daily"),
			},
			Filter: &s3.InventoryFilterArgs{
				Prefix: pulumi.String("documents/"),
			},
			Destination: &s3.InventoryDestinationArgs{
				Bucket: &s3.InventoryDestinationBucketArgs{
					Format:    pulumi.String("ORC"),
					BucketArn: inventory.Arn,
					Prefix:    pulumi.String("inventory"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
import pulumi
import pulumi_aws as aws

test = aws.s3.Bucket("test")
inventory = aws.s3.Bucket("inventory")
test_prefix = aws.s3.Inventory("test-prefix",
    bucket=test.id,
    included_object_versions="All",
    schedule=aws.s3.InventoryScheduleArgs(
        frequency="Daily",
    ),
    filter=aws.s3.InventoryFilterArgs(
        prefix="documents/",
    ),
    destination=aws.s3.InventoryDestinationArgs(
        bucket=aws.s3.InventoryDestinationBucketArgs(
            format="ORC",
            bucket_arn=inventory.arn,
            prefix="inventory",
        ),
    ))
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const test = new aws.s3.Bucket("test", {});
const inventory = new aws.s3.Bucket("inventory", {});
const test_prefix = new aws.s3.Inventory("test-prefix", {
    bucket: test.id,
    includedObjectVersions: "All",
    schedule: {
        frequency: "Daily",
    },
    filter: {
        prefix: "documents/",
    },
    destination: {
        bucket: {
            format: "ORC",
            bucketArn: inventory.arn,
            prefix: "inventory",
        },
    },
});

Create a Inventory Resource

new Inventory(name: string, args: InventoryArgs, opts?: CustomResourceOptions);
@overload
def Inventory(resource_name: str,
              opts: Optional[ResourceOptions] = None,
              bucket: Optional[str] = None,
              destination: Optional[InventoryDestinationArgs] = None,
              enabled: Optional[bool] = None,
              filter: Optional[InventoryFilterArgs] = None,
              included_object_versions: Optional[str] = None,
              name: Optional[str] = None,
              optional_fields: Optional[Sequence[str]] = None,
              schedule: Optional[InventoryScheduleArgs] = None)
@overload
def Inventory(resource_name: str,
              args: InventoryArgs,
              opts: Optional[ResourceOptions] = None)
func NewInventory(ctx *Context, name string, args InventoryArgs, opts ...ResourceOption) (*Inventory, error)
public Inventory(string name, InventoryArgs args, CustomResourceOptions? opts = null)
name string
The unique name of the resource.
args InventoryArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name str
The unique name of the resource.
args InventoryArgs
The arguments to resource properties.
opts ResourceOptions
Bag of options to control resource's behavior.
ctx Context
Context object for the current deployment.
name string
The unique name of the resource.
args InventoryArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name string
The unique name of the resource.
args InventoryArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.

Inventory Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Programming Model docs.

Inputs

The Inventory resource accepts the following input properties:

Bucket string
The name of the source bucket that inventory lists the objects for.
Destination InventoryDestinationArgs
Contains information about where to publish the inventory results (documented below).
IncludedObjectVersions string
Object versions to include in the inventory list. Valid values: All, Current.
Schedule InventoryScheduleArgs
Specifies the schedule for generating inventory results (documented below).
Enabled bool
Specifies whether the inventory is enabled or disabled.
Filter InventoryFilterArgs
Specifies an inventory filter. The inventory only includes objects that meet the filter’s criteria (documented below).
Name string
Unique identifier of the inventory configuration for the bucket.
OptionalFields List<string>
List of optional fields that are included in the inventory results. Valid values: Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier.
Bucket string
The name of the source bucket that inventory lists the objects for.
Destination InventoryDestination
Contains information about where to publish the inventory results (documented below).
IncludedObjectVersions string
Object versions to include in the inventory list. Valid values: All, Current.
Schedule InventorySchedule
Specifies the schedule for generating inventory results (documented below).
Enabled bool
Specifies whether the inventory is enabled or disabled.
Filter InventoryFilter
Specifies an inventory filter. The inventory only includes objects that meet the filter’s criteria (documented below).
Name string
Unique identifier of the inventory configuration for the bucket.
OptionalFields []string
List of optional fields that are included in the inventory results. Valid values: Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier.
bucket string
The name of the source bucket that inventory lists the objects for.
destination InventoryDestinationArgs
Contains information about where to publish the inventory results (documented below).
includedObjectVersions string
Object versions to include in the inventory list. Valid values: All, Current.
schedule InventoryScheduleArgs
Specifies the schedule for generating inventory results (documented below).
enabled boolean
Specifies whether the inventory is enabled or disabled.
filter InventoryFilterArgs
Specifies an inventory filter. The inventory only includes objects that meet the filter’s criteria (documented below).
name string
Unique identifier of the inventory configuration for the bucket.
optionalFields string[]
List of optional fields that are included in the inventory results. Valid values: Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier.
bucket str
The name of the source bucket that inventory lists the objects for.
destination InventoryDestinationArgs
Contains information about where to publish the inventory results (documented below).
included_object_versions str
Object versions to include in the inventory list. Valid values: All, Current.
schedule InventoryScheduleArgs
Specifies the schedule for generating inventory results (documented below).
enabled bool
Specifies whether the inventory is enabled or disabled.
filter InventoryFilterArgs
Specifies an inventory filter. The inventory only includes objects that meet the filter’s criteria (documented below).
name str
Unique identifier of the inventory configuration for the bucket.
optional_fields Sequence[str]
List of optional fields that are included in the inventory results. Valid values: Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier.

Outputs

All input properties are implicitly available as output properties. Additionally, the Inventory resource produces the following output properties:

Id string
The provider-assigned unique ID for this managed resource.
Id string
The provider-assigned unique ID for this managed resource.
id string
The provider-assigned unique ID for this managed resource.
id str
The provider-assigned unique ID for this managed resource.

Look up an Existing Inventory Resource

Get an existing Inventory resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

public static get(name: string, id: Input<ID>, state?: InventoryState, opts?: CustomResourceOptions): Inventory
@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        bucket: Optional[str] = None,
        destination: Optional[InventoryDestinationArgs] = None,
        enabled: Optional[bool] = None,
        filter: Optional[InventoryFilterArgs] = None,
        included_object_versions: Optional[str] = None,
        name: Optional[str] = None,
        optional_fields: Optional[Sequence[str]] = None,
        schedule: Optional[InventoryScheduleArgs] = None) -> Inventory
func GetInventory(ctx *Context, name string, id IDInput, state *InventoryState, opts ...ResourceOption) (*Inventory, error)
public static Inventory Get(string name, Input<string> id, InventoryState? state, CustomResourceOptions? opts = null)
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
resource_name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.

The following state arguments are supported:

Bucket string
The name of the source bucket that inventory lists the objects for.
Destination InventoryDestinationArgs
Contains information about where to publish the inventory results (documented below).
Enabled bool
Specifies whether the inventory is enabled or disabled.
Filter InventoryFilterArgs
Specifies an inventory filter. The inventory only includes objects that meet the filter’s criteria (documented below).
IncludedObjectVersions string
Object versions to include in the inventory list. Valid values: All, Current.
Name string
Unique identifier of the inventory configuration for the bucket.
OptionalFields List<string>
List of optional fields that are included in the inventory results. Valid values: Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier.
Schedule InventoryScheduleArgs
Specifies the schedule for generating inventory results (documented below).
Bucket string
The name of the source bucket that inventory lists the objects for.
Destination InventoryDestination
Contains information about where to publish the inventory results (documented below).
Enabled bool
Specifies whether the inventory is enabled or disabled.
Filter InventoryFilter
Specifies an inventory filter. The inventory only includes objects that meet the filter’s criteria (documented below).
IncludedObjectVersions string
Object versions to include in the inventory list. Valid values: All, Current.
Name string
Unique identifier of the inventory configuration for the bucket.
OptionalFields []string
List of optional fields that are included in the inventory results. Valid values: Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier.
Schedule InventorySchedule
Specifies the schedule for generating inventory results (documented below).
bucket string
The name of the source bucket that inventory lists the objects for.
destination InventoryDestinationArgs
Contains information about where to publish the inventory results (documented below).
enabled boolean
Specifies whether the inventory is enabled or disabled.
filter InventoryFilterArgs
Specifies an inventory filter. The inventory only includes objects that meet the filter’s criteria (documented below).
includedObjectVersions string
Object versions to include in the inventory list. Valid values: All, Current.
name string
Unique identifier of the inventory configuration for the bucket.
optionalFields string[]
List of optional fields that are included in the inventory results. Valid values: Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier.
schedule InventoryScheduleArgs
Specifies the schedule for generating inventory results (documented below).
bucket str
The name of the source bucket that inventory lists the objects for.
destination InventoryDestinationArgs
Contains information about where to publish the inventory results (documented below).
enabled bool
Specifies whether the inventory is enabled or disabled.
filter InventoryFilterArgs
Specifies an inventory filter. The inventory only includes objects that meet the filter’s criteria (documented below).
included_object_versions str
Object versions to include in the inventory list. Valid values: All, Current.
name str
Unique identifier of the inventory configuration for the bucket.
optional_fields Sequence[str]
List of optional fields that are included in the inventory results. Valid values: Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier.
schedule InventoryScheduleArgs
Specifies the schedule for generating inventory results (documented below).

Supporting Types

InventoryDestination

Bucket InventoryDestinationBucketArgs
The S3 bucket configuration where inventory results are published (documented below).
Bucket InventoryDestinationBucket
The S3 bucket configuration where inventory results are published (documented below).
bucket InventoryDestinationBucketArgs
The S3 bucket configuration where inventory results are published (documented below).
bucket InventoryDestinationBucketArgs
The S3 bucket configuration where inventory results are published (documented below).

InventoryDestinationBucket

BucketArn string
The Amazon S3 bucket ARN of the destination.
Format string
Specifies the output format of the inventory results. Can be CSV, ORC or Parquet.
AccountId string
The ID of the account that owns the destination bucket. Recommended to be set to prevent problems if the destination bucket ownership changes.
Encryption InventoryDestinationBucketEncryptionArgs
Contains the type of server-side encryption to use to encrypt the inventory (documented below).
Prefix string
The prefix that is prepended to all inventory results.
BucketArn string
The Amazon S3 bucket ARN of the destination.
Format string
Specifies the output format of the inventory results. Can be CSV, ORC or Parquet.
AccountId string
The ID of the account that owns the destination bucket. Recommended to be set to prevent problems if the destination bucket ownership changes.
Encryption InventoryDestinationBucketEncryption
Contains the type of server-side encryption to use to encrypt the inventory (documented below).
Prefix string
The prefix that is prepended to all inventory results.
bucketArn string
The Amazon S3 bucket ARN of the destination.
format string
Specifies the output format of the inventory results. Can be CSV, ORC or Parquet.
accountId string
The ID of the account that owns the destination bucket. Recommended to be set to prevent problems if the destination bucket ownership changes.
encryption InventoryDestinationBucketEncryptionArgs
Contains the type of server-side encryption to use to encrypt the inventory (documented below).
prefix string
The prefix that is prepended to all inventory results.
bucket_arn str
The Amazon S3 bucket ARN of the destination.
format str
Specifies the output format of the inventory results. Can be CSV, ORC or Parquet.
account_id str
The ID of the account that owns the destination bucket. Recommended to be set to prevent problems if the destination bucket ownership changes.
encryption InventoryDestinationBucketEncryptionArgs
Contains the type of server-side encryption to use to encrypt the inventory (documented below).
prefix str
The prefix that is prepended to all inventory results.

InventoryDestinationBucketEncryption

SseKms InventoryDestinationBucketEncryptionSseKmsArgs
Specifies to use server-side encryption with AWS KMS-managed keys to encrypt the inventory file (documented below).
SseS3 InventoryDestinationBucketEncryptionSseS3Args
Specifies to use server-side encryption with Amazon S3-managed keys (SSE-S3) to encrypt the inventory file.
SseKms InventoryDestinationBucketEncryptionSseKms
Specifies to use server-side encryption with AWS KMS-managed keys to encrypt the inventory file (documented below).
SseS3 InventoryDestinationBucketEncryptionSseS3
Specifies to use server-side encryption with Amazon S3-managed keys (SSE-S3) to encrypt the inventory file.
sseKms InventoryDestinationBucketEncryptionSseKmsArgs
Specifies to use server-side encryption with AWS KMS-managed keys to encrypt the inventory file (documented below).
sseS3 InventoryDestinationBucketEncryptionSseS3Args
Specifies to use server-side encryption with Amazon S3-managed keys (SSE-S3) to encrypt the inventory file.
sse_kms InventoryDestinationBucketEncryptionSseKmsArgs
Specifies to use server-side encryption with AWS KMS-managed keys to encrypt the inventory file (documented below).
sse_s3 InventoryDestinationBucketEncryptionSseS3Args
Specifies to use server-side encryption with Amazon S3-managed keys (SSE-S3) to encrypt the inventory file.

InventoryDestinationBucketEncryptionSseKms

KeyId string
The ARN of the KMS customer master key (CMK) used to encrypt the inventory file.
KeyId string
The ARN of the KMS customer master key (CMK) used to encrypt the inventory file.
keyId string
The ARN of the KMS customer master key (CMK) used to encrypt the inventory file.
key_id str
The ARN of the KMS customer master key (CMK) used to encrypt the inventory file.

InventoryFilter

Prefix string
The prefix that an object must have to be included in the inventory results.
Prefix string
The prefix that an object must have to be included in the inventory results.
prefix string
The prefix that an object must have to be included in the inventory results.
prefix str
The prefix that an object must have to be included in the inventory results.

InventorySchedule

Frequency string
Specifies how frequently inventory results are produced. Valid values: Daily, Weekly.
Frequency string
Specifies how frequently inventory results are produced. Valid values: Daily, Weekly.
frequency string
Specifies how frequently inventory results are produced. Valid values: Daily, Weekly.
frequency str
Specifies how frequently inventory results are produced. Valid values: Daily, Weekly.

Import

S3 bucket inventory configurations can be imported using bucket:inventory, e.g.

 $ pulumi import aws:s3/inventory:Inventory my-bucket-entire-bucket my-bucket:EntireBucket

Package Details

Repository
https://github.com/pulumi/pulumi-aws
License
Apache-2.0
Notes
This Pulumi package is based on the aws Terraform Provider.