Как создать политику IAM для очередей SQS для определенной идентификации Cognito

Я пытаюсь создать политику IAM для применения к очереди SQS. Политика должна ограничивать доступ к очереди одним федеративным удостоверением Cognito.

Я нашел эту ссылку от Amazon на том, как этого добиться, но у меня возникли проблемы с применением политики в очереди SQS.

Вот политика, которую я пытаюсь применить.

{
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:us-west-2:604080725100:Test2.fifo/SQSDefaultPolicy",
  "Statement": [
    {
      "Sid": "Sid1528133390193",
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "SQS:*",
      "Condition": {
        "StringEquals": {
            "cognito-identity.amazonaws.com:aud": "us-east-1:ff1b33f4-7f66-47a5-b7ff-9696b0e1fb52",
            "cognito-identity.amazonaws.com:sub": ["us-east-1:4a6d7e43-4522-41fb-9248-b5b79933b8e9"]
        }
      }
    }
  ]
}

Онлайн-интерфейс для редактирования политики отображается на экране обзора:

Allow   None    
All SQS Actions (SQS:*)
StringEquals
cognito-identity.amazonaws.com:aud: "us-east-1:ff1b33f4-7f66-47a5-b7ff-9696b0e1fb52"
cognito-identity.amazonaws.com:sub: "us-east-1:4a6d7e43-4522-41fb-9248-b5b79933b8e9"

Когда я нажимаю "Применить", появляется следующая ошибка:

Failed to save changes to the policy document. Reason: com.amazonaws.services.sqs.model.AmazonSQSException: We encountered an internal error. Please try again.

Я не уверен, что не так с политикой. Я ищу любую помощь в исправлении политики или другой политики, которая позволяет ограничить очередь SQS одной идентификацией Cognito.

1 ответ

К сожалению, SQS поддерживает только подмножество ключей условия, и идентификатор пользователя Cognito не является одним из них. Я прочитал статью, в которой эта проблема решена путем создания случайных имен очереди, которые могут быть прочитаны всеми пользователями, но практически не угадываются.

Другие вопросы по тегам