AWS Data Pipeline の IAM ロール - AWS Data Pipeline

AWS Data Pipeline の IAM ロール

AWS Data Pipeline では、パイプラインでどのようなアクションを実行でき、どのリソースにアクセスできるかを IAM ロールで定義する必要があります。さらに、パイプラインで EC2 インスタンスや EMR クラスターなどのリソースを作成すると、IAM ロールによって、アプリケーションが実行できるアクションとアクセスできるリソースが決まります。

AWS Data Pipeline コンソールでは、次のロールが自動的に作成されます。

  • DataPipelineDefaultRole - AWS Data Pipeline に AWS リソースへのアクセスを許可する

  • DataPipelineDefaultResourceRole - アプリケーションに AWS リソースへのアクセスを付与する

CLI または API を使用しており、これまでに AWS Data Pipeline コンソールを使用してパイプラインを作成したことがない場合は、AWS Identity and Access Management (IAM) を使用してこれらのロールを手動で作成する必要があります。詳細については、「必須の IAM ロールの作成 (CLI または API のみ)」を参照してください。

また、代わりにカスタムロールを作成できます。EmrCluster オブジェクトに対してこれらのロールを指定する方法の例については、「カスタム IAM ロールを指定する」を参照してください。

AWS Data Pipeline の既存の IAM ロールを更新する

DataPipelineDefaultRole ロールと DataPipelineDefaultResourceRole ロールが管理ポリシーではなくインラインポリシーを使用して作成された場合、AWS アカウント所有者は、管理ポリシーを使用するようにこれらのロールを更新できます。AWS 管理ポリシーを使用するようにロールを更新したら、これらのロールは更新を自動的に受け取るようになります。

DataPipelineDefaultRole ロールと DataPipelineDefaultResourceRole ロールを更新するには、次の手順に従います。

管理ポリシーを使用して既存の IAM ロールを更新するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. 次のように DataPipelineDefaultRole ロールを更新します。

    1. ナビゲーションペインで [Roles] をクリックし、DataPipelineDefaultRole ロールの行をクリックします。

    2. [Permissions] でインラインポリシーの [Remove Policy] をクリックします。確認を求めるメッセージが表示されたら、[Remove] をクリックします。

    3. [Permissions] で、[Attach Policy] をクリックします。

    4. [Attach Policy] ページで [AWSDataPipelineRole] ポリシーの横にあるボックスをクリックし、[Attach Policy] をクリックします。

  3. 次のように DataPipelineDefaultResourceRole ロールを更新します。

    1. ナビゲーションペインで [Roles] をクリックし、DataPipelineDefaultResourceRole ロールの行をクリックします。

    2. [Permissions] でインラインポリシーの [Remove Policy] をクリックします。確認を求めるメッセージが表示されたら、[Remove] をクリックします。

    3. [Permissions] で、[Attach Policy] をクリックします。

    4. [Attach Policy] ページで [AmazonEC2RoleforDataPipelineRole] ポリシーの横にあるボックスをクリックし、[Attach Policy] をクリックします。

次の手順に従って、インラインポリシーを自分で維持することもできます。

インラインポリシーを使用して既存の IAM ロールを更新するには

  1. 次のポリシーを使用するように DataPipelineDefaultRole を更新します。

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudwatch:*", "datapipeline:DescribeObjects", "datapipeline:EvaluateExpression", "dynamodb:BatchGetItem", "dynamodb:DescribeTable", "dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateTable", "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotInstanceRequests", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteTags", "ec2:Describe*", "ec2:ModifyImageAttribute", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RunInstances", "ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances", "ec2:AuthorizeSecurityGroupEgress", "ec2:DeleteSecurityGroup", "ec2:RevokeSecurityGroupEgress", "ec2:DescribeNetworkInterfaces", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DetachNetworkInterface", "elasticmapreduce:*", "iam:GetInstanceProfile", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:ListInstanceProfiles", "iam:PassRole", "rds:DescribeDBInstances", "rds:DescribeDBSecurityGroups", "redshift:DescribeClusters", "redshift:DescribeClusterSecurityGroups", "s3:CreateBucket", "s3:DeleteObject", "s3:Get*", "s3:List*", "s3:Put*", "sdb:BatchPutAttributes", "sdb:Select*", "sns:GetTopicAttributes", "sns:ListTopics", "sns:Publish", "sns:Subscribe", "sns:Unsubscribe", "sqs:CreateQueue", "sqs:Delete*", "sqs:GetQueue*", "sqs:PurgeQueue", "sqs:ReceiveMessage" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": ["elasticmapreduce.amazonaws.com","spot.amazonaws.com"] } } }] }
  2. 次の信頼済みエンティティリストを使用するように DataPipelineDefaultRole を更新します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "elasticmapreduce.amazonaws.com", "datapipeline.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. 次のポリシーを使用するように DataPipelineDefaultResourceRole を更新します。

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudwatch:*", "datapipeline:*", "dynamodb:*", "ec2:Describe*", "elasticmapreduce:AddJobFlowSteps", "elasticmapreduce:Describe*", "elasticmapreduce:ListInstance*", "rds:Describe*", "redshift:DescribeClusters", "redshift:DescribeClusterSecurityGroups", "s3:*", "sdb:*", "sns:*", "sqs:*" ], "Resource": ["*"] }] }
  4. 次の信頼済みエンティティリストを使用するように DataPipelineDefaultResourceRole を更新します。

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

既存のパイプラインのロールの変更

カスタムロールがあり、AWS Data Pipeline コンソールのパイプラインを編集して、既存のパイプラインのロールを変更する必要がある場合:

  1. https://console.aws.amazon.com/datapipeline/ で AWS Data Pipeline コンソールを開きます。

  2. パイプライン ID をクリックして、編集するパイプラインを選択します。

  3. [Edit Pipeline] を選択します。

  4. [Others] ドロップダウンメニューを選択し、適切な [Role] と [Resource Role] を入力します。