

# API Gateway でのサービスリンクロールの使用
<a name="using-service-linked-roles"></a>

Amazon API Gateway は、AWS Identity and Access Management (IAM) [サービスリンクロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用します。サービスにリンクされたロールは、API Gateway に直接リンクされた一意のタイプの IAM ロールです。サービスリンクロールは API Gateway によって事前定義されており、サービスがユーザーに代わって AWS の他のサービスを呼び出すために必要なすべての許可が含まれています。

サービスにリンクされたロールを使用することで、必要なアクセス許可を手動で追加する必要がなくなるため、API Gateway の設定が簡単になります。API Gateway は、サービスにリンクされたロールのアクセス許可を定義します。別の指定がない限り、API Gateway のみがそのロールを引き受けることができます。定義される許可は、信頼ポリシーと許可ポリシーに含まれており、その許可ポリシーを他の IAM エンティティにアタッチすることはできません。

サービスにリンクされたロールを削除するには、まずその関連リソースを削除します。これにより、リソースに対するアクセス許可が誤って削除されることがなくなり、API Gateway リソースは保護されます。

サービスにリンクされたロールをサポートする他のサービスについては、「[IAM と連携する AWS サービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照して、**[サービスにリンクされたロール]** 列が **[はい]** になっているサービスを見つけてください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[**はい**] リンクを選択します。

## API Gateway のサービスにリンクされたロールのアクセス許可
<a name="slr-permissions"></a>

API Gateway は、**AWSServiceRoleForAPIGateway** という名前のサービスリンクロールを使用します。これにより、API Gateway がユーザーに代わって Elastic Load Balancing、Amazon Data Firehose、その他のサービスリソースにアクセスすることが許可されます。

AWSServiceRoleForAPIGateway サービスリンクロールは、以下のサービスを信頼してロールを引き受けます。
+ `ops.apigateway.amazonaws.com`

ロールのアクセス許可ポリシーは、指定したリソースに対して以下のアクションを完了することを API Gateway に許可します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:AddListenerCertificates",
                "elasticloadbalancing:RemoveListenerCertificates",
                "elasticloadbalancing:ModifyListener",
                "elasticloadbalancing:DescribeListeners",
                "elasticloadbalancing:DescribeLoadBalancers",
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords",
                "xray:GetSamplingTargets",
                "xray:GetSamplingRules",
                "logs:CreateLogDelivery",
                "logs:GetLogDelivery",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "servicediscovery:DiscoverInstances"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "firehose:DescribeDeliveryStream",
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            ],
            "Resource": "arn:aws:firehose:*:*:deliverystream/amazon-apigateway-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "acm:DescribeCertificate",
                "acm:GetCertificate"
            ],
            "Resource": "arn:aws:acm:*:*:certificate/*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateNetworkInterfacePermission",
            "Resource": "arn:aws:ec2:*:*:network-interface/*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:network-interface/*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "Owner",
                        "VpcLinkId"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface",
                "ec2:AssignPrivateIpAddresses",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeNetworkInterfaceAttribute",
                "ec2:DescribeVpcs",
                "ec2:DescribeNetworkInterfacePermissions",
                "ec2:UnassignPrivateIpAddresses",
                "ec2:DescribeSubnets",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "servicediscovery:GetNamespace",
            "Resource": "arn:aws:servicediscovery:*:*:namespace/*"
        },
        {
            "Effect": "Allow",
            "Action": "servicediscovery:GetService",
            "Resource": "arn:aws:servicediscovery:*:*:service/*"
        }
    ]
}
```

------

サービスにリンクされたロールの作成、編集、削除を IAM エンティティ (ユーザー、グループ、ロールなど) に許可するには、アクセス許可を設定する必要があります。詳細については、*IAM ユーザーガイド*の「[サービスにリンクされたロールの許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)」を参照してください。

## API Gateway のサービスにリンクされたロールの作成
<a name="create-slr"></a>

サービスにリンクされたロールを手動で作成する必要はありません。AWS マネジメントコンソール、AWS CLI、または AWS API で、API、カスタムドメイン名、または VPC リンクを作成すると、API Gateway がサービスリンクロールを作成します。

このサービスにリンクされたロールを削除した後で再度作成する必要が生じた場合は、同じ方法でアカウントにロールを再作成できます。API、カスタムドメイン名、または VPC リンクを作成すると、API Gateway によってサービスリンクされたロールが再び作成されます。

## API Gateway のサービスにリンクされたロールの編集
<a name="edit-slr"></a>

API Gateway では、AWSServiceRoleForApigateWay サービスリンクロールを編集することはできません。サービスリンクロールを作成した後は、さまざまなエンティティがロールを参照する可能性があることから、ロール名を変更することはできません。ただし、IAM を使用したロール記述の編集はできます。詳細については、*IAM ユーザーガイド*の「[サービスにリンクされたロールの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)」を参照してください。

## API Gateway のサービスにリンクされたロールの削除
<a name="delete-slr"></a>

サービスにリンクされたロールが必要な機能またはサービスが不要になった場合には、そのロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。ただし、手動で削除する前に、サービスにリンクされたロールのリソースをクリーンアップする必要があります。

**注記**  
リソースを削除する際に、API Gateway サービスでそのロールが使用されている場合、削除は失敗することがあります。失敗した場合は、数分待ってから再度オペレーションを実行してください。

**AWSServiceRoleForApigateWay で使用される API Gateway リソースを削除するには**

1. API Gateway ([https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway/)) コンソールを開きます。

1. サービスにリンクされたロールを使用する API、カスタムドメイン名、または VPC リンクに移動します。

1. コンソールを使用してリソースを削除します。

1. この手順を繰り返して、サービスにリンクされたロールを使用するすべての API、カスタムドメイン名、または VPC リンクを削除します。

**サービスリンクロールを IAM で手動削除するには**

IAM コンソール、AWS CLI、または AWS API を使用して、AWSServiceRoleForAPIGateway サービスリンクロールを削除します。詳細については、*IAM ユーザーガイド*の「[サービスにリンクされたロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)」を参照してください。

## API Gateway サービスリンクロールでサポートされるリージョン
<a name="slr-regions"></a>

API Gateway は、サービスを利用できるすべてのリージョンで、サービスにリンクされたロールの使用をサポートします。詳細については、「[AWS サービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html)」を参照してください。

## AWS 管理ポリシーに対する API Gateway の更新
<a name="security-iam-awsmanpol-updates"></a>



API Gateway の AWS 管理ポリシーの更新に関する詳細を、このサービスがこれらの変更の追跡を開始した以降の分について表示します。このページの変更に関する自動通知については、API Gateway の[ドキュメントの履歴](history.md)ページの RSS フィードを購読してください。


| 変更 | 説明 | 日付 | 
| --- | --- | --- | 
|  `acm:GetCertificate` のサポートが `AWSServiceRoleForAPIGateway` ポリシーに追加されました。  |  `AWSServiceRoleForAPIGateway` ポリシーに ACM `GetCertificate` API アクションを呼び出すアクセス許可が含まれるようになりました。  | 2021 年 7 月 12 日 | 
|  API Gateway が変更の追跡を開始しました  |  API Gateway が AWS 管理ポリシーの変更の追跡を開始しました。  | 2021 年 7 月 12 日 | 