AWSサービスやリソースへのアクセス許可を与えるために、対象のサービスやリソースにIAMロールをアタッチする必要があります。IAMロールに割り当てるポリシーについて、以下に説明します。
参照
ポリシー、IAMロールの詳細については、AWSの公式ドキュメントを参照してください。
クラスタノードのインスタンスに以下をインストールするため、インスタンス(EC2)にIAMロールをアタッチします。
リソース監視機構の動作に必要なCloudWatchエージェント
Amazon EFSクライアント(amazon-efs-utils)
IAMロールを作成するときに、以下のポリシーを追加してください。
CloudWatchAgentServerPolicy
注意
クラスタノードのインスタンスにIAMロールがアタッチされていない場合、インスタンスはEFSのマウントに失敗し、リソース監視機構はインスタンスからのメトリクスとログの収集に失敗します。
切替機構の動作に必要なAWS Lambdaに、IAMロールをアタッチします。IAMロールを作成するときに、以下のポリシーを追加してください。
AWSLambdaBasicExecutionRole
新規作成するポリシー
切替機構のLambda関数がAWSのリソースを操作できるように、アクセスを許可する範囲をポリシーで定義します。新規作成するポリシーは、JSONを基に作成してください。JSONの中には、書き換えが必要な文字列が存在します。その文字列を、以下に示します。
文字列 | 書き換える値 | 説明 |
|---|---|---|
${Region} | AWSのリージョン リージョンを指定しない場合は、${Region}を「*」に書き換えてください。 | アクセスを許可するAWSのリージョンを指定します。 リージョンを指定する場合は、リージョンごとにポリシーとIAMロールを用意してください。リージョンを指定しない場合は、ポリシーとIAMロールを兼用できます。 |
${Account} | AWSのアカウント | アクセスを許可するAWSのアカウントを指定します。 |
JSONを以下に示します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": [
"arn:aws:ec2:${Region}:${Account}:volume/*",
"arn:aws:ec2:${Region}:${Account}:instance/*",
"arn:aws:ec2:${Region}:${Account}:network-interface/*"
],
"Condition": {
"StringEquals": {
"ec2:CreateAction": "RunInstances"
}
}
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricAlarm",
"cloudwatch:DescribeAlarms",
"ec2:TerminateInstances",
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:RunInstances",
"elasticloadbalancing:RegisterTargets",
"elasticloadbalancing:DeregisterTargets",
"dynamodb:ConditionCheckItem",
"dynamodb:PutItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:UpdateItem"
],
"Resource": [
"arn:aws:cloudwatch:${Region}:${Account}:alarm:*",
"arn:aws:ec2:${Region}:${Account}:volume/*",
"arn:aws:ec2:${Region}:${Account}:subnet/*",
"arn:aws:ec2:${Region}:${Account}:security-group/*",
"arn:aws:ec2:${Region}:${Account}:instance/*",
"arn:aws:ec2:${Region}:${Account}:network-interface/*",
"arn:aws:ec2:${Region}:${Account}:key-pair/*",
"arn:aws:ec2:*::image/*",
"arn:aws:elasticloadbalancing:${Region}:${Account}:targetgroup/*/*",
"arn:aws:dynamodb:${Region}:${Account}:table/*"
]
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": [
"ec2:DescribeImages",
"ec2:DescribeInstances",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"elasticloadbalancing:DescribeTargetHealth",
"elasticloadbalancing:DescribeTargetGroups"
],
"Resource": "*"
},
{
"Sid": "VisualEditor3",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::${Account}:role/*",
"Condition": {
"StringEquals": {
"iam:PassedToService": "ec2.amazonaws.com"
}
}
},
{
"Sid": "VisualEditor4",
"Effect": "Allow",
"Action": [
"elasticloadbalancing:RegisterTargets",
"elasticloadbalancing:DeregisterTargets"
],
"Resource": "arn:aws:elasticloadbalancing:${Region}:${Account}:targetgroup/*/*"
}
]
}