Back to all operators

DateNotEqualsIfExists

DateNotEqualsIfExists

compares a datetime in a request to a list of datetimes in your policy. Datetime comparisons compare down to the second; so for everything except the precise second specified in your policy will match the condition.

To match a request, the context key can be absent, but if present it must NOT match any of the datetimes in your policy.

You can NOT use policy variables in the value of this operator.

So you know

DateNotEqualsIfExists behaves exactly the same as DateNotEquals. "Negative" operators such as DateNotEquals already match requests when the key is not present, so the IfExists suffix has no effect. There is no harm in adding IfExists — it arguably makes the intent clearer.

DateNotEqualsIfExists in an Allow Statement

Simulate in IAM Simulate
Policy ConditionRequest ContextResult
"DateNotEqualsIfExists": {
"aws:CurrentTime": [
"2011-05-03T00:00:00Z",
"2012-10-17T00:00:00Z"
]
}
aws:CurrentTime: null✓ Allowed Assuming no explicit Deny elsewhere
"DateNotEqualsIfExists": {
"aws:CurrentTime": [
"2011-05-03T00:00:00Z",
"2012-10-17T00:00:00Z"
]
}
aws:CurrentTime:
   2021-07-05T00:00:00Z
✓ Allowed Assuming no explicit Deny elsewhere
"DateNotEqualsIfExists": {
"aws:CurrentTime": [
"2011-05-03T00:00:00Z",
"2012-10-17T00:00:00Z"
]
}
aws:CurrentTime:
   2011-05-03T00:00:00Z
− Not Allowed Statement does not apply

DateNotEqualsIfExists in a Deny Statement

Simulate in IAM Simulate
Policy ConditionRequest ContextResult
"DateNotEqualsIfExists": {
"aws:CurrentTime": [
"2011-05-03T00:00:00Z",
"2012-10-17T00:00:00Z"
]
}
aws:CurrentTime: null✕ Denied
"DateNotEqualsIfExists": {
"aws:CurrentTime": [
"2011-05-03T00:00:00Z",
"2012-10-17T00:00:00Z"
]
}
aws:CurrentTime:
   2021-07-05T00:00:00Z
✕ Denied
"DateNotEqualsIfExists": {
"aws:CurrentTime": [
"2011-05-03T00:00:00Z",
"2012-10-17T00:00:00Z"
]
}
aws:CurrentTime:
   2011-05-03T00:00:00Z
− Not Denied May be allowed by another statement