<reponame>zchase/pulumi-awsx-go// *** WARNING: this file was generated by Pulumi SDK Generator. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.AwsxGo.Ecr.Inputs
{

    /// <summary>
    /// A lifecycle policy rule that determine which images in a repository should be expired.
    /// </summary>
    public sealed class LifecyclePolicyRuleArgs : Pulumi.ResourceArgs
    {
        /// <summary>
        /// Describes the purpose of a rule within a lifecycle policy.
        /// </summary>
        [Input("description")]
        public Input<string>? Description { get; set; }

        /// <summary>
        /// The maximum age limit (in days) for your images. Either [maximumNumberOfImages] or [maximumAgeLimit] must be provided.
        /// </summary>
        [Input("maximumAgeLimit")]
        public Input<double>? MaximumAgeLimit { get; set; }

        /// <summary>
        /// The maximum number of images that you want to retain in your repository. Either [maximumNumberOfImages] or [maximumAgeLimit] must be provided.
        /// </summary>
        [Input("maximumNumberOfImages")]
        public Input<double>? MaximumNumberOfImages { get; set; }

        [Input("tagPrefixList")]
        private InputList<string>? _tagPrefixList;

        /// <summary>
        /// A list of image tag prefixes on which to take action with your lifecycle policy. Only used if you specified "tagStatus": "tagged". For example, if your images are tagged as prod, prod1, prod2, and so on, you would use the tag prefix prod to specify all of them. If you specify multiple tags, only the images with all specified tags are selected.
        /// </summary>
        public InputList<string> TagPrefixList
        {
            get => _tagPrefixList ?? (_tagPrefixList = new InputList<string>());
            set => _tagPrefixList = value;
        }

        /// <summary>
        /// Determines whether the lifecycle policy rule that you are adding specifies a tag for an image. Acceptable options are tagged, untagged, or any. If you specify any, then all images have the rule evaluated against them. If you specify tagged, then you must also specify a tagPrefixList value. If you specify untagged, then you must omit tagPrefixList.
        /// </summary>
        [Input("tagStatus", required: true)]
        public Input<Pulumi.AwsxGo.Ecr.LifecycleTagStatus> TagStatus { get; set; } = null!;

        public LifecyclePolicyRuleArgs()
        {
        }
    }
}
