Skip to content

put_domain_permissions_policy

put_domain_permissions_policy(
    domain: DomainName,
    policy_document: PolicyDocument,
    *,
    config_overrides: Optional[codeartifactClientConfig] = None,
    domain_owner: Optional[AccountId] = None,
    policy_revision: Optional[PolicyRevision] = None,
) -> PutDomainPermissionsPolicyResult

Sets a resource policy on a domain that specifies permissions to access it.

When you call PutDomainPermissionsPolicy, the resource policy on the domain is ignored when evaluting permissions. This ensures that the owner of a domain cannot lock themselves out of the domain, which would prevent them from being able to update the resource policy.

Parameters:

  • domain (DomainName) –

    The name of the domain on which to set the resource policy.

  • domain_owner (Optional[AccountId], default: None ) –

    The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces.

  • policy_revision (Optional[PolicyRevision], default: None ) –

    The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy.

  • policy_document (PolicyDocument) –

    A valid displayable JSON Aspen policy string to be set as the access control resource policy on the provided domain.

Raises:

  • AccessDeniedException –

    The operation did not succeed because of an unauthorized access attempt.

  • ConflictException –

    The operation did not succeed because prerequisites are not met.

  • InternalServerException –

    The operation did not succeed because of an error that occurred inside CodeArtifact.

  • ResourceNotFoundException –

    The operation did not succeed because the resource requested is not found in the service.

  • ServiceQuotaExceededException –

    The operation did not succeed because it would have exceeded a service limit for your account.

  • ThrottlingException –

    The operation did not succeed because too many requests are sent to the service.

  • ValidationException –

    The operation did not succeed because a parameter in the request was sent with an invalid value.

  • UnknownServiceError –

    The service returned an error code this client does not model.

Source code in docs_src/capo_codeartifact/_services/codeartifact.py
def put_domain_permissions_policy(
    self,
    domain: "capo_codeartifact.types.domain_name.DomainName",
    policy_document: "capo_codeartifact.types.policy_document.PolicyDocument",
    *,
    config_overrides: Optional[codeartifactClientConfig] = None,
    domain_owner: Optional["capo_codeartifact.types.account_id.AccountId"] = None,
    policy_revision: Optional[
        "capo_codeartifact.types.policy_revision.PolicyRevision"
    ] = None,
) -> "capo_codeartifact.types.put_domain_permissions_policy_result.PutDomainPermissionsPolicyResult":
    """<p> Sets a resource policy on a domain that specifies permissions to access it. </p> <p> When you call <code>PutDomainPermissionsPolicy</code>, the resource policy on the domain is ignored when evaluting permissions. This ensures that the owner of a domain cannot lock themselves out of the domain, which would prevent them from being able to update the resource policy. </p>

    Args:
        domain: <p> The name of the domain on which to set the resource policy. </p>
        domain_owner: <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        policy_revision: <p> The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. </p>
        policy_document: <p> A valid displayable JSON Aspen policy string to be set as the access control resource policy on the provided domain. </p>

    Raises:
        capo_codeartifact.errors.access_denied_exception.AccessDeniedException: <p> The operation did not succeed because of an unauthorized access attempt. </p>
        capo_codeartifact.errors.conflict_exception.ConflictException: <p> The operation did not succeed because prerequisites are not met. </p>
        capo_codeartifact.errors.internal_server_exception.InternalServerException: <p> The operation did not succeed because of an error that occurred inside CodeArtifact. </p>
        capo_codeartifact.errors.resource_not_found_exception.ResourceNotFoundException: <p> The operation did not succeed because the resource requested is not found in the service. </p>
        capo_codeartifact.errors.service_quota_exceeded_exception.ServiceQuotaExceededException: <p> The operation did not succeed because it would have exceeded a service limit for your account. </p>
        capo_codeartifact.errors.throttling_exception.ThrottlingException: <p> The operation did not succeed because too many requests are sent to the service. </p>
        capo_codeartifact.errors.validation_exception.ValidationException: <p> The operation did not succeed because a parameter in the request was sent with an invalid value. </p>
        capo_codeartifact.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    def _handler(
        req: "OperationRequest[capo_codeartifact.types.put_domain_permissions_policy_request.PutDomainPermissionsPolicyRequest]",
    ) -> OperationResponse[
        "capo_codeartifact.types.put_domain_permissions_policy_result.PutDomainPermissionsPolicyResult"
    ]:
        import capo_codeartifact._operations.code_artifact_control_plane_service.put_domain_permissions_policy

        output, http_response = (
            capo_codeartifact._operations.code_artifact_control_plane_service.put_domain_permissions_policy.put_domain_permissions_policy(
                req.options, req.input
            )
        )
        return OperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("PutDomainPermissionsPolicy")
    )
    input_: capo_codeartifact.types.put_domain_permissions_policy_request.PutDomainPermissionsPolicyRequest = {
        "domain": domain,
        "policy_document": policy_document,
    }
    if domain_owner is not None:
        input_["domain_owner"] = domain_owner
    if policy_revision is not None:
        input_["policy_revision"] = policy_revision

    response = execute_pipeline(
        OperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    response.response.close()
    return response.output