AWS Лямбда, вызываемая через Cloudfront перед корзиной S3, не может взять на себя роль Cognito User Pool для аутентификации - PullRequest
1 голос
/ 16 января 2020

У меня есть AWS Lambda, который запускается как запрос средства просмотра на экземпляре CloudFront, который ограничивает доступ к настройке S3 bucket для статического c хостинга веб-сайта. Он использует Cognito User Pool для ограничения доступа и проверяет учетные данные с помощью AdminInitiateAuth.

. Лямбда работает нормально, используя тестовые данные, непосредственно полученные из регистрации события CloudFront, однако при фактическом вызове с помощью триггера из CloudFront I получить ошибку:

An error occurred (AccessDeniedException) when calling the AdminInitiateAuth operation:
User: arn:aws:sts::<AWS_ACCOUNT_ID>:assumed-role/cloudfront_trigger_s3_auth_http_service/us-east-1.s3_service_resources_auth
is not authorized to perform: cognito-idp:AdminInitiateAuth on resource:
arn:aws:cognito-idp:us-west-2:<AWS_ACCOUNT_ID>:userpool/<USER_POOL_ID>

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

cloudfront_trigger_s3_auth_http_service роль доверительные отношения :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "cognito-idp.amazonaws.com",
          "edgelambda.amazonaws.com",
          "sts.amazonaws.com",
          "lambda.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

arcimoto-service-resources-user-pool-auth политика, прикрепленная к роли cloudfront_trigger_s3_auth_http_service, которая обеспечивает когнитивный доступ

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "cognito-idp:AdminInitiateAuth",
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::511596272857:role/cloudfront_trigger_s3_auth_http_service/us-east-1.s3_service_resources_auth",
                "arn:aws:cognito-idp:us-east-1:511596272857:userpool/us-east-1_sES7sBpcg"
            ]
        }
    ]
}
...