

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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)，並尋找 **Service-Linked Role** (服務連結角色) 欄顯示為 **Yes** (是) 的服務。選擇具有連結的 **Yes (是)**，以檢視該服務的服務連結角色文件。

## 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 API 中建立 API AWS 管理主控台、自訂網域名稱 AWS CLI或 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 日 | 