All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.awsconnector.inputs.AwsEcrRepositoryPropertiesArgs Maven / Gradle / Ivy

// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azurenative.awsconnector.inputs;

import com.pulumi.azurenative.awsconnector.enums.ImageTagMutability;
import com.pulumi.azurenative.awsconnector.inputs.EncryptionConfigurationArgs;
import com.pulumi.azurenative.awsconnector.inputs.ImageScanningConfigurationArgs;
import com.pulumi.azurenative.awsconnector.inputs.LifecyclePolicyArgs;
import com.pulumi.azurenative.awsconnector.inputs.TagArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.Object;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


/**
 * Definition of awsEcrRepository
 * 
 */
public final class AwsEcrRepositoryPropertiesArgs extends com.pulumi.resources.ResourceArgs {

    public static final AwsEcrRepositoryPropertiesArgs Empty = new AwsEcrRepositoryPropertiesArgs();

    /**
     * Property arn
     * 
     */
    @Import(name="arn")
    private @Nullable Output arn;

    /**
     * @return Property arn
     * 
     */
    public Optional> arn() {
        return Optional.ofNullable(this.arn);
    }

    /**
     * If true, deleting the repository force deletes the contents of the repository. If false, the repository must be empty before attempting to delete it. If true, deleting the repository force deletes the contents of the repository. Without a force delete, you can only delete empty repositories.
     * 
     */
    @Import(name="emptyOnDelete")
    private @Nullable Output emptyOnDelete;

    /**
     * @return If true, deleting the repository force deletes the contents of the repository. If false, the repository must be empty before attempting to delete it. If true, deleting the repository force deletes the contents of the repository. Without a force delete, you can only delete empty repositories.
     * 
     */
    public Optional> emptyOnDelete() {
        return Optional.ofNullable(this.emptyOnDelete);
    }

    /**
     * The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES-256 encryption algorithm. This does not require any action on your part. For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.
     * 
     */
    @Import(name="encryptionConfiguration")
    private @Nullable Output encryptionConfiguration;

    /**
     * @return The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES-256 encryption algorithm. This does not require any action on your part. For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.
     * 
     */
    public Optional> encryptionConfiguration() {
        return Optional.ofNullable(this.encryptionConfiguration);
    }

    /**
     * The image scanning configuration for the repository. This determines whether images are scanned for known vulnerabilities after being pushed to the repository. The image scanning configuration for a repository.
     * 
     */
    @Import(name="imageScanningConfiguration")
    private @Nullable Output imageScanningConfiguration;

    /**
     * @return The image scanning configuration for the repository. This determines whether images are scanned for known vulnerabilities after being pushed to the repository. The image scanning configuration for a repository.
     * 
     */
    public Optional> imageScanningConfiguration() {
        return Optional.ofNullable(this.imageScanningConfiguration);
    }

    /**
     * The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.
     * 
     */
    @Import(name="imageTagMutability")
    private @Nullable Output> imageTagMutability;

    /**
     * @return The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.
     * 
     */
    public Optional>> imageTagMutability() {
        return Optional.ofNullable(this.imageTagMutability);
    }

    /**
     * Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html). The ``LifecyclePolicy`` property type specifies a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html) in the *Amazon ECR User Guide*.
     * 
     */
    @Import(name="lifecyclePolicy")
    private @Nullable Output lifecyclePolicy;

    /**
     * @return Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html). The ``LifecyclePolicy`` property type specifies a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html) in the *Amazon ECR User Guide*.
     * 
     */
    public Optional> lifecyclePolicy() {
        return Optional.ofNullable(this.lifecyclePolicy);
    }

    /**
     * The name to use for the repository. The repository name may be specified on its own (such as ``nginx-web-app``) or it can be prepended with a namespace to group the repository into a category (such as ``project-a/nginx-web-app``). If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html). The repository name must start with a letter and can only contain lowercase letters, numbers, hyphens, underscores, and forward slashes.  If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
     * 
     */
    @Import(name="repositoryName")
    private @Nullable Output repositoryName;

    /**
     * @return The name to use for the repository. The repository name may be specified on its own (such as ``nginx-web-app``) or it can be prepended with a namespace to group the repository into a category (such as ``project-a/nginx-web-app``). If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html). The repository name must start with a letter and can only contain lowercase letters, numbers, hyphens, underscores, and forward slashes.  If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
     * 
     */
    public Optional> repositoryName() {
        return Optional.ofNullable(this.repositoryName);
    }

    /**
     * The JSON repository policy text to apply to the repository. For more information, see [Amazon ECR repository policies](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) in the *Amazon Elastic Container Registry User Guide*.
     * 
     */
    @Import(name="repositoryPolicyText")
    private @Nullable Output repositoryPolicyText;

    /**
     * @return The JSON repository policy text to apply to the repository. For more information, see [Amazon ECR repository policies](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) in the *Amazon Elastic Container Registry User Guide*.
     * 
     */
    public Optional> repositoryPolicyText() {
        return Optional.ofNullable(this.repositoryPolicyText);
    }

    /**
     * Property repositoryUri
     * 
     */
    @Import(name="repositoryUri")
    private @Nullable Output repositoryUri;

    /**
     * @return Property repositoryUri
     * 
     */
    public Optional> repositoryUri() {
        return Optional.ofNullable(this.repositoryUri);
    }

    /**
     * An array of key-value pairs to apply to this resource.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return An array of key-value pairs to apply to this resource.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    private AwsEcrRepositoryPropertiesArgs() {}

    private AwsEcrRepositoryPropertiesArgs(AwsEcrRepositoryPropertiesArgs $) {
        this.arn = $.arn;
        this.emptyOnDelete = $.emptyOnDelete;
        this.encryptionConfiguration = $.encryptionConfiguration;
        this.imageScanningConfiguration = $.imageScanningConfiguration;
        this.imageTagMutability = $.imageTagMutability;
        this.lifecyclePolicy = $.lifecyclePolicy;
        this.repositoryName = $.repositoryName;
        this.repositoryPolicyText = $.repositoryPolicyText;
        this.repositoryUri = $.repositoryUri;
        this.tags = $.tags;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(AwsEcrRepositoryPropertiesArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private AwsEcrRepositoryPropertiesArgs $;

        public Builder() {
            $ = new AwsEcrRepositoryPropertiesArgs();
        }

        public Builder(AwsEcrRepositoryPropertiesArgs defaults) {
            $ = new AwsEcrRepositoryPropertiesArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param arn Property arn
         * 
         * @return builder
         * 
         */
        public Builder arn(@Nullable Output arn) {
            $.arn = arn;
            return this;
        }

        /**
         * @param arn Property arn
         * 
         * @return builder
         * 
         */
        public Builder arn(String arn) {
            return arn(Output.of(arn));
        }

        /**
         * @param emptyOnDelete If true, deleting the repository force deletes the contents of the repository. If false, the repository must be empty before attempting to delete it. If true, deleting the repository force deletes the contents of the repository. Without a force delete, you can only delete empty repositories.
         * 
         * @return builder
         * 
         */
        public Builder emptyOnDelete(@Nullable Output emptyOnDelete) {
            $.emptyOnDelete = emptyOnDelete;
            return this;
        }

        /**
         * @param emptyOnDelete If true, deleting the repository force deletes the contents of the repository. If false, the repository must be empty before attempting to delete it. If true, deleting the repository force deletes the contents of the repository. Without a force delete, you can only delete empty repositories.
         * 
         * @return builder
         * 
         */
        public Builder emptyOnDelete(Boolean emptyOnDelete) {
            return emptyOnDelete(Output.of(emptyOnDelete));
        }

        /**
         * @param encryptionConfiguration The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES-256 encryption algorithm. This does not require any action on your part. For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.
         * 
         * @return builder
         * 
         */
        public Builder encryptionConfiguration(@Nullable Output encryptionConfiguration) {
            $.encryptionConfiguration = encryptionConfiguration;
            return this;
        }

        /**
         * @param encryptionConfiguration The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES-256 encryption algorithm. This does not require any action on your part. For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.
         * 
         * @return builder
         * 
         */
        public Builder encryptionConfiguration(EncryptionConfigurationArgs encryptionConfiguration) {
            return encryptionConfiguration(Output.of(encryptionConfiguration));
        }

        /**
         * @param imageScanningConfiguration The image scanning configuration for the repository. This determines whether images are scanned for known vulnerabilities after being pushed to the repository. The image scanning configuration for a repository.
         * 
         * @return builder
         * 
         */
        public Builder imageScanningConfiguration(@Nullable Output imageScanningConfiguration) {
            $.imageScanningConfiguration = imageScanningConfiguration;
            return this;
        }

        /**
         * @param imageScanningConfiguration The image scanning configuration for the repository. This determines whether images are scanned for known vulnerabilities after being pushed to the repository. The image scanning configuration for a repository.
         * 
         * @return builder
         * 
         */
        public Builder imageScanningConfiguration(ImageScanningConfigurationArgs imageScanningConfiguration) {
            return imageScanningConfiguration(Output.of(imageScanningConfiguration));
        }

        /**
         * @param imageTagMutability The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.
         * 
         * @return builder
         * 
         */
        public Builder imageTagMutability(@Nullable Output> imageTagMutability) {
            $.imageTagMutability = imageTagMutability;
            return this;
        }

        /**
         * @param imageTagMutability The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.
         * 
         * @return builder
         * 
         */
        public Builder imageTagMutability(Either imageTagMutability) {
            return imageTagMutability(Output.of(imageTagMutability));
        }

        /**
         * @param imageTagMutability The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.
         * 
         * @return builder
         * 
         */
        public Builder imageTagMutability(String imageTagMutability) {
            return imageTagMutability(Either.ofLeft(imageTagMutability));
        }

        /**
         * @param imageTagMutability The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.
         * 
         * @return builder
         * 
         */
        public Builder imageTagMutability(ImageTagMutability imageTagMutability) {
            return imageTagMutability(Either.ofRight(imageTagMutability));
        }

        /**
         * @param lifecyclePolicy Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html). The ``LifecyclePolicy`` property type specifies a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html) in the *Amazon ECR User Guide*.
         * 
         * @return builder
         * 
         */
        public Builder lifecyclePolicy(@Nullable Output lifecyclePolicy) {
            $.lifecyclePolicy = lifecyclePolicy;
            return this;
        }

        /**
         * @param lifecyclePolicy Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html). The ``LifecyclePolicy`` property type specifies a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html) in the *Amazon ECR User Guide*.
         * 
         * @return builder
         * 
         */
        public Builder lifecyclePolicy(LifecyclePolicyArgs lifecyclePolicy) {
            return lifecyclePolicy(Output.of(lifecyclePolicy));
        }

        /**
         * @param repositoryName The name to use for the repository. The repository name may be specified on its own (such as ``nginx-web-app``) or it can be prepended with a namespace to group the repository into a category (such as ``project-a/nginx-web-app``). If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html). The repository name must start with a letter and can only contain lowercase letters, numbers, hyphens, underscores, and forward slashes.  If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
         * 
         * @return builder
         * 
         */
        public Builder repositoryName(@Nullable Output repositoryName) {
            $.repositoryName = repositoryName;
            return this;
        }

        /**
         * @param repositoryName The name to use for the repository. The repository name may be specified on its own (such as ``nginx-web-app``) or it can be prepended with a namespace to group the repository into a category (such as ``project-a/nginx-web-app``). If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html). The repository name must start with a letter and can only contain lowercase letters, numbers, hyphens, underscores, and forward slashes.  If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
         * 
         * @return builder
         * 
         */
        public Builder repositoryName(String repositoryName) {
            return repositoryName(Output.of(repositoryName));
        }

        /**
         * @param repositoryPolicyText The JSON repository policy text to apply to the repository. For more information, see [Amazon ECR repository policies](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) in the *Amazon Elastic Container Registry User Guide*.
         * 
         * @return builder
         * 
         */
        public Builder repositoryPolicyText(@Nullable Output repositoryPolicyText) {
            $.repositoryPolicyText = repositoryPolicyText;
            return this;
        }

        /**
         * @param repositoryPolicyText The JSON repository policy text to apply to the repository. For more information, see [Amazon ECR repository policies](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) in the *Amazon Elastic Container Registry User Guide*.
         * 
         * @return builder
         * 
         */
        public Builder repositoryPolicyText(Object repositoryPolicyText) {
            return repositoryPolicyText(Output.of(repositoryPolicyText));
        }

        /**
         * @param repositoryUri Property repositoryUri
         * 
         * @return builder
         * 
         */
        public Builder repositoryUri(@Nullable Output repositoryUri) {
            $.repositoryUri = repositoryUri;
            return this;
        }

        /**
         * @param repositoryUri Property repositoryUri
         * 
         * @return builder
         * 
         */
        public Builder repositoryUri(String repositoryUri) {
            return repositoryUri(Output.of(repositoryUri));
        }

        /**
         * @param tags An array of key-value pairs to apply to this resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags An array of key-value pairs to apply to this resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(List tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param tags An array of key-value pairs to apply to this resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(TagArgs... tags) {
            return tags(List.of(tags));
        }

        public AwsEcrRepositoryPropertiesArgs build() {
            return $;
        }
    }

}