7

Dokładnie postępując zgodnie z instrukcjami krok po kroku pod numerem this page Próbuję wyeksportować zawartość jednego z moich tabel DynamoDB do zasobnika S3. Utworzyć potok dokładnie zgodnie z instrukcją, ale nie działa. Wygląda na to, że ma problem ze zidentyfikowaniem/uruchomieniem zasobu EC2 do wykonania eksportu. Kiedy uzyskuję dostęp do EMR za pośrednictwem konsoli AWS, widzę takie wpisy:Automatyczne wywołanie AWS DynamoDB do S3 z błędem "rola/DataPipelineDefaultRole jest nieprawidłowe"

Cluster: [email protected]_2015-03-06T00:33:04Terminated with errorsEMR service role arn:aws:iam::...:role/DataPipelineDefaultRole is invalid 

Dlaczego otrzymuję tę wiadomość? Czy muszę skonfigurować/skonfigurować coś innego, aby potok działał?

UPDATE: W IAM->Roles w konsoli AWS widzę to dla DataPipelineDefaultResourceRole:

{ 
    "Version": "2012-10-17", 
    "Statement": [{ 
    "Effect": "Allow", 
    "Action": [ 
     "s3:List*", 
     "s3:Put*", 
     "s3:Get*", 
     "s3:DeleteObject", 
     "dynamodb:DescribeTable", 
     "dynamodb:Scan", 
     "dynamodb:Query", 
     "dynamodb:GetItem", 
     "dynamodb:BatchGetItem", 
     "dynamodb:UpdateTable", 
     "rds:DescribeDBInstances", 
     "rds:DescribeDBSecurityGroups", 
     "redshift:DescribeClusters", 
     "redshift:DescribeClusterSecurityGroups", 
     "cloudwatch:PutMetricData", 
     "datapipeline:PollForTask", 
     "datapipeline:ReportTaskProgress", 
     "datapipeline:SetTaskStatus", 
     "datapipeline:PollForTask", 
     "datapipeline:ReportTaskRunnerHeartbeat" 
    ], 
    "Resource": ["*"] 
    }] 
} 

a to dla DataPipelineDefaultRole:

{ 
    "Version": "2012-10-17", 
    "Statement": [{ 
    "Effect": "Allow", 
    "Action": [ 
     "s3:List*", 
     "s3:Put*", 
     "s3:Get*", 
     "s3:DeleteObject", 
     "dynamodb:DescribeTable", 
     "dynamodb:Scan", 
     "dynamodb:Query", 
     "dynamodb:GetItem", 
     "dynamodb:BatchGetItem", 
     "dynamodb:UpdateTable", 
     "ec2:DescribeInstances", 
     "ec2:DescribeSecurityGroups", 
     "ec2:RunInstances", 
     "ec2:CreateTags", 
     "ec2:StartInstances", 
     "ec2:StopInstances", 
     "ec2:TerminateInstances", 
     "elasticmapreduce:*", 
     "rds:DescribeDBInstances", 
     "rds:DescribeDBSecurityGroups", 
     "redshift:DescribeClusters", 
     "redshift:DescribeClusterSecurityGroups", 
     "sns:GetTopicAttributes", 
     "sns:ListTopics", 
     "sns:Publish", 
     "sns:Subscribe", 
     "sns:Unsubscribe", 
     "iam:PassRole", 
     "iam:ListRolePolicies", 
     "iam:GetRole", 
     "iam:GetRolePolicy", 
     "iam:ListInstanceProfiles", 
     "cloudwatch:*", 
     "datapipeline:DescribeObjects", 
     "datapipeline:EvaluateExpression" 
    ], 
    "Resource": ["*"] 
    }] 
} 

Czy te muszą zostać zmodyfikowane w jakiś sposób?

+0

Czy możesz dodać, jakie są twoje zasady IAM? – mkobit

+0

@MikeKobit Czy możesz mi wyjaśnić, w jaki sposób mogę uzyskać dostęp do tych zasad z konsoli internetowej AWS? thx –

+0

Sprawdź role kont i ich zasady IAM. Zobacz [Konfigurowanie ról IAM] (http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) – mkobit

Odpowiedz

2

Jest podobne pytanie w AWS forum i wydaje się, że jest związany z problemem z zarządzanych polityk

https://forums.aws.amazon.com/message.jspa?messageID=606756

W tej kwestii, to zalecamy stosowanie konkretnych polityk inline zarówno dla dostępu i zaufanie polityki do Zdefiniuj te role, zmieniając niektóre uprawnienia. Co dziwne, specyficzne zasady inline można znaleźć na

http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html

1

wpadłem na ten sam błąd.

W IAM przymocować AWSDataPipelineRole zarządzaną politykę DataPipelineDefaultRole

miałem również zaktualizować relacji zaufania do następnego (potrzebnego EC2, który nie jest w dokumentacji):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "Service": [ 
      "ec2.amazonaws.com", 
      "elasticmapreduce.amazonaws.com", 
      "datapipeline.amazonaws.com" 
     ] 
     }, 
     "Action": "sts:AssumeRole" 
    } 
    ] 
} 
0

miałem ten sam problem. Zarządzane zasady były poprawne w moim przypadku, ale musiałem zaktualizować relacje zaufania dla obu ról DataPipelineDefaultRole i DataPipelineDefaultResourceRole, korzystając z dokumentacji Gonfva powiązanej z powyższymi, ponieważ były nieaktualne.