// *** 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.aws.ecs.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs extends com.pulumi.resources.ResourceArgs {

    public static final TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs Empty = new TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs();

    /**
     * Access point ID to use. If an access point is specified, the root directory value will be relative to the directory set for the access point. If specified, transit encryption must be enabled in the EFSVolumeConfiguration.
     * 
     */
    @Import(name="accessPointId")
    private @Nullable Output<String> accessPointId;

    /**
     * @return Access point ID to use. If an access point is specified, the root directory value will be relative to the directory set for the access point. If specified, transit encryption must be enabled in the EFSVolumeConfiguration.
     * 
     */
    public Optional<Output<String>> accessPointId() {
        return Optional.ofNullable(this.accessPointId);
    }

    /**
     * Whether or not to use the Amazon ECS task IAM role defined in a task definition when mounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used.
     * 
     */
    @Import(name="iam")
    private @Nullable Output<String> iam;

    /**
     * @return Whether or not to use the Amazon ECS task IAM role defined in a task definition when mounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used.
     * 
     */
    public Optional<Output<String>> iam() {
        return Optional.ofNullable(this.iam);
    }

    private TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs() {}

    private TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs $) {
        this.accessPointId = $.accessPointId;
        this.iam = $.iam;
    }

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

    public static final class Builder {
        private TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs $;

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

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

        /**
         * @param accessPointId Access point ID to use. If an access point is specified, the root directory value will be relative to the directory set for the access point. If specified, transit encryption must be enabled in the EFSVolumeConfiguration.
         * 
         * @return builder
         * 
         */
        public Builder accessPointId(@Nullable Output<String> accessPointId) {
            $.accessPointId = accessPointId;
            return this;
        }

        /**
         * @param accessPointId Access point ID to use. If an access point is specified, the root directory value will be relative to the directory set for the access point. If specified, transit encryption must be enabled in the EFSVolumeConfiguration.
         * 
         * @return builder
         * 
         */
        public Builder accessPointId(String accessPointId) {
            return accessPointId(Output.of(accessPointId));
        }

        /**
         * @param iam Whether or not to use the Amazon ECS task IAM role defined in a task definition when mounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used.
         * 
         * @return builder
         * 
         */
        public Builder iam(@Nullable Output<String> iam) {
            $.iam = iam;
            return this;
        }

        /**
         * @param iam Whether or not to use the Amazon ECS task IAM role defined in a task definition when mounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used.
         * 
         * @return builder
         * 
         */
        public Builder iam(String iam) {
            return iam(Output.of(iam));
        }

        public TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs build() {
            return $;
        }
    }

}
