AccessDeniedException при развертывании лямбда-функции - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь создать лямбда-функцию в aws с помощью команды AWS. Когда я выполняю команду, появляется ошибка ниже.Но роль, о которой я упомянул в команде AWS, имеет достаточно разрешений для развертывания лямбда-функции. Я не уверен, что пошло не так, хотя у роли есть разрешение.

Команда:

aws lambda create-function --function-name ukmon-appd-disabled- 
health-rules --runtime python3.7 --zip-file 
fileb://bin/disabled_health_rules.zip --handler index.handler --timeout 10 - 
-memory-size 1024 --role arn:aws:iam::99999999999:role/crossaccount

Политики:

"AllowLambdaFunctionStack": {
      "Type": "AWS::IAM::ManagedPolicy",
      "Properties": {
        "Description": "Policy for allowing jenkins cross account service role to create, update, delete lambda functions.",
        "Path": "/",
        "PolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Action": [
                "lambda:InvokeFunction",
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction",
                "lambda:ListFunctions",
                "lambda:UpdateFunctionCode",
                "lambda:GetFunctionConfiguration",
                "lambda:UpdateFunctionConfiguration",
                "lambda:AddPermission",
                "lambda:RemovePermission",
                "lambda:CreateAlias",
                "lambda:DeleteAlias",
                "lambda:GetAlias",
                "lambda:ListAliases",
                "lambda:UpdateAlias",
                "lambda:GetPolicy",
                "lambda:InvokeAsync",
                "lambda:ListVersionsByFunction",
                "lambda:PublishVersion",
                "lambda:CreateEventSourceMapping",
                "lambda:GetEventSourceMapping",
                "lambda:ListEventSourceMappings",
                "lambda:DeleteEventSourceMapping",
                "lambda:UpdateEventSourceMapping",
                "lambda:TagResource",
                "lambda:ListTags",
                "lambda:UntagResource"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:lambda:eu-west-1:999999999999:function:crossaccount-*",
              "Sid": "AllowLambdaFuctionsStacks"
            }
          ]
        },

Ошибка:

Произошла ошибка (AccessDeniedException) при вызове операции CreateFunction: пользователь: arn: aws: sts :: 999999999999: предполагаемая роль / crossaccount / i-0d2dd689c2784f174 не авторизована для выполнения: lambda: CreateFunction на ресурсе: arn: aws: lambda: eu-west-1: 999999999999: function: ukmon-appd-disabled-health-rules

Заранее спасибо.

1 Ответ

2 голосов
/ 06 марта 2019

Я думаю, что вы путаете роли IAM в своем вопросе. Роль IAM, которую вы передаете вызову CLI create-function AWS, - это роль, которую служба Lambda примет на себя во время выполнения: то есть разрешения, которые вы даете своей лямбда-функции во время выполнения.
Для авторизации на выполнение вызова aws lambda create-function CLI ваша среда должна иметь авторизацию CreateFunction.

Но если вы не смешиваете роли, в вашей политике есть проблема. Он разрешает все перечисленные вызовы API для ресурсов Lambda, соответствующих

"Resource": "arn:aws:lambda:eu-west-1:999999999999:function:crossaccount-*",

Лямбда-функция, которую вы пытаетесь создать, имеет имя ukmon-appd-disabled- health-rules Будет разрешено только имя функции, начинающееся с crossaccount-.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...