

# Amazon ECS コンソールに必要なアクセス許可
<a name="console-permissions"></a>

最小権限の付与のベストプラクティスに従い、`AmazonECS_FullAccess` 管理ポリシーを、独自のカスタムポリシーを作成するためのテンプレートとして使用できます。これにより、特定の要件に基づいて、管理ポリシーに権限を追加し、管理ポリシーから権限を追加、または権限を取り上げることができます。詳細については、「*AWS マネージドポリシーリファレンスガイド*」の「[AmazonECS\$1FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonECS_FullAccess.html)」を参照してください。

## IAM ロールを作成するための許可
<a name="console-create-roles"></a>

以下のアクションでは、操作を完了するために追加のアクセス許可が必要です。
+ 外部インスタンスの登録 - 詳細は、[Amazon ECS Anywhere IAM ロール](iam-role-ecsanywhere.md) を参照してください。
+ タスク定義の登録 - 詳細は、[Amazon ECS タスク実行IAM ロール](task_execution_IAM_role.md) を参照してください。
+ タスクのスケジューリングに使用する EventBridge ルールの作成 - 詳細は、[Amazon ECS EventBridge IAM ロール](CWE_IAM_role.md) を参照してください。

Amazon ECS コンソールで使用する前に IAM でロールを作成することで、これらのアクセス許可を追加できます。ロールを作成しない場合、Amazon ECS コンソールがユーザーに代わってロールを作成します。

## 外部インスタンスをクラスターに登録するために必要なアクセス許可
<a name="register-external-instance"></a>

外部インスタンスをクラスターに登録し、新しい外部インスタンス (`ecsExternalInstanceRole`) ロールを作成する場合は、追加のアクセス許可が必要です。

以下に示す追加のアクセス許可が必要です。
+ `iam` — プリンシパルが IAM ロールとそれにアタッチするポリシーを作成し、一覧表示できるようにします。
  + iam:AttachRolePolicy
  + iam:CreateRole
  + am:CreateInstanceProfile
  + iam:AddRoleToInstanceProfile
  + iam:ListInstanceProfilesForRole
  + iam:GetRole
+ `ssm` — プリンシパルが外部インスタンスを Systems Manager に登録できるようにします。

**注記**  
既存の `ecsExternalInstanceRole` を選択するには、`iam:GetRole` および `iam:PassRole` のアクセス許可が必要です。

次のポリシーには必要なアクセス許可が含まれており、アクションは `ecsExternalInstanceRole` ロールに限定されます。

------
#### [ JSON ]

****  

```
{
"Statement": [
      {
          "Effect": "Allow",
          "Action": [
              "iam:AttachRolePolicy",
              "iam:CreateRole",
              "iam:CreateInstanceProfile",
              "iam:AddRoleToInstanceProfile",
              "iam:ListInstanceProfilesForRole",
              "iam:GetRole"
          ],
          "Resource": "arn:aws:iam::*:role/ecsExternalInstanceRole"
      },
      {
          "Effect": "Allow",
          "Action": ["iam:PassRole","ssm:CreateActivation"],
          "Resource": "arn:aws:iam::*:role/ecsExternalInstanceRole"
      }
    ]
}
```

------

## タスク定義を登録するために必要なアクセス許可
<a name="register-task-def"></a>

タスク定義を登録し、新しいタスク実行 (`ecsTaskExecutionRole`) ロールを作成する場合は、追加のアクセス許可が必要です。

以下に示す追加のアクセス許可が必要です。
+ `iam` — プリンシパルが IAM ロールとそれにアタッチするポリシーを作成し、一覧表示できるようにします。
  + iam:AttachRolePolicy
  + iam:CreateRole
  + iam:GetRole

**注記**  
既存の `ecsTaskExecutionRole` を選択するには、`iam:GetRole` のアクセス許可が必要です。

次のポリシーには必要なアクセス許可が含まれており、アクションは `ecsTaskExecutionRole` ロールに限定されます。

------
#### [ JSON ]

****  

```
{
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iam:AttachRolePolicy",
            "iam:CreateRole",
            "iam:GetRole"
        ],
        "Resource": "arn:aws:iam::*:role/ecsTaskExecutionRole"
        }
    ]
}
```

------

## Amazon Q Developer を使用して、コンソールで推奨事項を提供するために必要なアクセス許可
<a name="amazon-q-permission"></a>

 Amazon Q Developer が Amazon ECS で推奨事項を提供するには、IAM ユーザーまたはロールの正しい IAM アクセス許可を有効にする必要があります。`codewhisperer:GenerateRecommendations` アクセス許可を追加する必要があります。

------
#### [ JSON ]

****  

```
{
"Statement": [
      {
            "Sid": "AmazonQDeveloperPermissions",
            "Effect": "Allow",
            "Action": ["codewhisperer:GenerateRecommendations"],
            "Resource": "*"
        }
    ]
}
```

------

 Amazon ECS コンソールでインラインチャットを使用するには、IAM ユーザーまたはロールの正しい IAM アクセス許可を有効にする必要があります。`q:SendMessage` アクセス許可を追加する必要があります。

------
#### [ JSON ]

****  

```
{
"Statement": [
    {
        "Sid": "AmazonQDeveloperInlineChatPermissions",
        "Effect": "Allow",
        "Action": ["q:SendMessage"],
        "Resource": "*"
    }
  ]
}
```

------

## スケジュールされたタスクの EventBridge ルールを作成するために必要なアクセス許可
<a name="schedule-task"></a>

タスクをスケジュールし、新しい CloudWatch Events ロール (`ecsEventsRole`) ロールを作成する場合は、追加のアクセス許可が必要です。

以下に示す追加のアクセス許可が必要です。
+ `iam` — プリンシパルが IAM ロールとそれにアタッチするポリシーを作成して一覧表示し、Amazon ECS がそのロールを他のサービスに渡してロールを引き継ぐことができるようにします。

**注記**  
既存の `ecsEventsRole` を選択するには、`iam:GetRole` および `iam:PassRole` のアクセス許可が必要です。

次のポリシーには必要なアクセス許可が含まれており、アクションは `ecsEventsRole` ロールに限定されます。

------
#### [ JSON ]

****  

```
{
 "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iam:AttachRolePolicy",
            "iam:CreateRole",
            "iam:GetRole",
            "iam:PassRole"
        ],
        "Resource": "arn:aws:iam::*:role/ecsEventsRole"
        }
    ]
}
```

------

## サービスデプロイを表示するために必要なアクセス許可
<a name="service-deployments"></a>

 最小権限のベストプラクティスに従うと、コンソールでサービスデプロイを表示するには、アクセス許可を追加する必要があります。

次のアクションへのアクセスが必要です。
+ ListServiceDeployments
+ DescribeServiceDeployments
+ DescribeServiceRevisions

次のリソースへのアクセスが必要です。
+ サービス
+ サービスデプロイ
+ サービスリビジョン

次のポリシー例には必要なアクセス許可が含まれており、アクションは指定されたサービスに限定されます。

`account`、`cluster-name`、および `service-name` を独自の値に置き換えます。

------
#### [ JSON ]

****  

```
{
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ecs:ListServiceDeployments",
            "ecs:DescribeServiceDeployments",
            "ecs:DescribeServiceRevisions"
        ],
        "Resource": [
            "arn:aws:ecs:us-east-1:123456789012:service/cluster-name/service-name",
            "arn:aws:ecs:us-east-1:123456789012:service-deployment/cluster-name/service-name/*",
            "arn:aws:ecs:us-east-1:123456789012:service-revision/cluster-name/service-name/*"
            ]
        }
   ]
}
```

------

## Amazon ECS ライフサイクルイベントを Container Insights で表示するには、以下のアクセス許可が必要です。
<a name="required-permissions-view"></a>

ライフサイクルイベントを表示するには、以下のアクセス権限が必要です。次のアクセス許可をインラインポリシーとしてロールに追加します。詳細については、「[IAM ポリシーの追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。
+ events:DescribeRule
+ events:ListTargetsByRule
+ logs:DescribeLogGroups

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "events:DescribeRule",
        "events:ListTargetsByRule",
        "logs:DescribeLogGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Amazon ECS ライフサイクルイベントを Container Insights で表示するために必要なアクセス許可
<a name="required-permissions-configure"></a>

ライフサイクルイベントを設定するには、以下のアクセス権限が必要です。
+ events:PutRule
+ events:PutTargets
+ logs:CreateLogGroup

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "events:PutRule",
        "events:PutTargets",
        "logs:CreateLogGroup"
      ],
      "Resource": "*"
    }
  ]
}
```

------

# CloudFormation を使用する Amazon ECS コンソールに必要なアクセス許可
<a name="cloudformation-console-permissions"></a>

AWS マネジメントコンソール を使用してリソースを作成する前に、適切な IAM アクセス許可を持っていることを確認する必要があります。最初に Amazon ECS コンソールのアクセス許可を設定する方法については、「[Amazon ECS コンソールに必要なアクセス許可](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/console-permissions.html)」を参照してください。

Amazon ECS コンソールは AWS CloudFormation を利用しているため、以下の場合には追加の IAM アクセス許可が必要になります。
+ クラスターの作成
+ サービスの作成
+ キャパシティープロバイダーの作成

追加のアクセス許可のポリシーを作成して、コンソールへのアクセスに使用する IAM ロールにアタッチできます。詳細については、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)」を参照してください。

## クラスターを作成するために必要なアクセス許可
<a name="create-cluster"></a>

コンソールでクラスターを作成するときには、CloudFormation スタックを管理するための追加のアクセス許可が必要です。

 以下に示す追加のアクセス許可が必要です。
+ `cloudformation` — プリンシパルの作成と管理を許可する CloudFormation スタック。これは、AWS マネジメントコンソール を使用して Amazon ECS クラスターを作成し、それらのクラスターのその後の管理に必要です。
+ `ssm` – CloudFormation が最新の Amazon ECS 最適化 AMI を参照できるようにします。これは、AWS マネジメントコンソール を使用して Amazon ECS クラスターを作成するときに必要です。

次のポリシーには必要な CloudFormation アクセス許可が含まれており、アクションは Amazon ECS コンソールで作成されたリソースに限定されます。

------
#### [ JSON ]

****  

```
{
  "Statement": [
      {
          "Effect": "Allow",
          "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStack*",
                "cloudformation:UpdateStack"
             ],
            "Resource": [
                "arn:*:cloudformation:*:*:stack/Infra-ECS-Cluster-*"
            ]
      },
      {
          "Effect": "Allow",
          "Action": "ssm:GetParameters",
          "Resource": [
            "arn:aws:ssm:*:*:parameter/aws/service/ecs/optimized-ami/amazon-linux-2*/*",
            "arn:aws:ssm:*:*:parameter/aws/service/ecs/optimized-ami/amazon-linux-2023*/*"
          ]
      }
   ]
}
```

------

Amazon ECS コンテナインスタンスロール (`ecsInstanceRole`) をまだ作成していない状態で Amazon EC2 インスタンスを使用するクラスターを作成する場合は、コンソールがユーザーに代わってロールを作成します。

さらに、Auto Scaling グループを使用する場合は、クラスターの自動スケーリング機能を使用する際にコンソールが Auto Scaling グループにタグを追加できるようにするための追加のアクセス許可が必要です。

以下に示す追加のアクセス許可が必要です。
+ `autoscaling` — コンソールが Amazon EC2 Auto Scaling グループにタグ付けできるようにします。これは、クラスターのオートスケーリング機能を使用する場合、Amazon EC2 Auto Scaling グループを管理する場合に必要です。このタグは、ECS によって管理され、コンソールで作成されたことを示すためにコンソールによって自動的にグループに追加されます。
+ `iam` — プリンシパルに IAM ロールとアタッチされたポリシーの一覧表示を許可します。プリンシパルは、Amazon EC2 インスタンスで利用できるインスタンスプロファイルを一覧表示することもできます。

次のポリシーには必要な IAM アクセス許可が含まれており、アクションは `ecsInstanceRole` ロールに限定されます。

自動スケーリング許可は制限されません。

------
#### [ JSON ]

****  

```
{
  "Statement": [
      {
          "Effect": "Allow",
            "Action": [
              "iam:AttachRolePolicy",
              "iam:CreateRole",
              "iam:CreateInstanceProfile",
              "iam:AddRoleToInstanceProfile",
              "iam:ListInstanceProfilesForRole",
              "iam:GetRole"
            ],
            "Resource": "arn:aws:iam::*:role/ecsInstanceRole"
        },
        {
            "Effect": "Allow",
            "Action": "autoscaling:CreateOrUpdateTags",
            "Resource": "*"
        }
    ]
}
```

------

## サービスを作成するために必要なアクセス許可
<a name="create-service-permissions"></a>

コンソールでサービスを作成するときには、CloudFormation スタックを管理するための追加のアクセス許可が必要です。以下に示す追加のアクセス許可が必要です。
+ `cloudformation` — プリンシパルの作成と管理を許可する CloudFormation スタック。これは、AWS マネジメントコンソール を使用して Amazon ECS サービスを作成する際に、またその後それらのサービスを管理する際に必要です。

次のポリシーには必要なアクセス許可が含まれており、アクションは Amazon ECS コンソールで作成されたリソースに限定されます。

------
#### [ JSON ]

****  

```
{
  "Statement": [
      {
          "Effect": "Allow",
          "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStack*",
                "cloudformation:UpdateStack"
             ],
            "Resource": [
                "arn:*:cloudformation:*:*:stack/ECS-Console-V2-Service-*"
            ]
      }
   ]
}
```

------