

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 如何允许或不允许输入位置类型
<a name="disallow-inputs"></a>

AWS Elemental MediaConvert 支持您的输入媒体和文件的 Amazon S3、HTTPS 和 HTTP 输入位置类型。您可以使用 MediaConvert 策略允许或禁止访问其中一种或多种输入位置类型。

默认情况下，您 AWS 账户中的每个区域都没有政策，并且 MediaConvert允许所有支持的输入位置类型。仅当您想要不允许访问其中一种或多种输入位置类型时，才需要创建输入策略。

要防止作业使用不允许的输入位置类型运行，请创建 MediaConvert*输入策略*。

此外，为了防止在没有输入策略的情况下将任务提交给 MediaConvert API，请使用*条件键*创建 IAM 策略。您可以将这些 IAM policy 应用于您的组织中的 IAM 角色。

以下各节介绍如何创建输入策略以及如何使用 IAM 条件键来允许或不允许输入位置类型。

**Topics**
+ [如何使用输入策略允许或不允许输入位置类型](#input-policies)
+ [如何将 IAM 条件键与输入策略一起使用](#input-policy-condition-keys)

## 如何使用输入策略允许或不允许输入位置类型
<a name="input-policies"></a>

要创建或更改策略，请使用 API、SDK 或命令行界面 (CLI) 提交 **put-policy** 命令，并将策略包含在 JSON 中。访问 [MediaConvert API 参考](https://docs.aws.amazon.com/mediaconvert/latest/apireference/policy.html)以了解有关支持的策略命令和预期响应代码的更多信息。

下面显示了如何使用 CLI 提交策略的示例。此示例允许使用 Amazon S3 和 HTTPS 输入的任务，不允许使用 HTTP 输入的任务：

```
aws mediaconvert put-policy --policy '{"S3Inputs":"ALLOWED", "HttpsInputs":"ALLOWED", "HttpInputs":"DISALLOWED"}'
```

如果您未在策略 JSON 中指定输入位置，则 MediaConvert 会将输入位置视为允许。以下是另一个示例，它允许使用 Amazon S3 和 HTTPS 输入的任务，不允许使用 HTTP 输入的任务：

```
aws mediaconvert put-policy --policy '{"HttpInputs":"DISALLOWED"}'
```

请注意，put-policy 命令会覆盖该区域中的任何现有策略。

**检索当前的策略**

要在 JSON 中检索当前策略，请提交 **get-policy** 命令：

```
aws mediaconvert get-policy
```

**删除当前的策略**

要删除当前策略并允许所有输入（恢复为默认行为），请提交 **delete-policy** 命令：

```
aws mediaconvert delete-policy
```

**当您尝试提交一个使用不允许的输入位置的任务时会发生什么？**

如果您尝试提交指定您的策略不允许的输入位置的作业，则 MediaConvert 会返回 HTTP 400 (BadRequestException) 错误。错误消息将是：You specified an input location that your policy disallows. Specify an allowed input location and resubmit your job. 由于 MediaConvert 阻止提交这些作业，因此它们不会出现在您的工作历史记录中。

如果您提交一个指定了允许的输入位置的任务，但该任务需要访问另一个不允许的输入位置，则您的任务也将失败。例如，如果您在允许的 Amazon S3 位置上指定 Apple HLS 清单，并在不允许的 HTTP 位置上引用其他输入分段文件，就可能会遇到这种情况。任务失败错误代码将是 3457，消息将是：您指定了您的策略不允许的输入位置。指定允许的输入位置并重新提交您的任务。

## 如何将 IAM 条件键与输入策略一起使用
<a name="input-policy-condition-keys"></a>

如果您在 IAM policy 中提供了用于提交创建作业请求的*条件键*，IAM 将检查您的账户是否具有与该条件匹配的输入策略。您指定的条件必须与您账户的输入策略相匹配，API 请求才能获得授权。您可以使用以下任一布尔型条件键：
+ **HttpInputsAllowed**
+ **HttpsInputsAllowed**
+ **S3InputsAllowed**

在使用条件键时，请注意以下情形：

如果条件和输入策略匹配，例如，如果您将 “**HTTPInputs允许**” 设置为，`true`并且您的账户的输入策略允许 HTTP 输入，则您的创建任务请求将提交到 MediaConvert API。

如果条件和输入策略不匹配，例如，如果您将 “**HTTPInputs允许**” 设置为，`false`并且您的账户的输入策略允许 HTTP 输入，则您的创建任务请求将不会提交给 MediaConvert API。相反，你会收到以下错误消息：“消息”：“用户：arn: aws: iam:: 111122223333：” user/User is not authorized to perform: mediaconvert:CreateJob on resource: arn:aws:mediaconvert:us-west-2:111122223333:queues/Default

如果条件和输入策略匹配，例如，如果您将 “**HTTPInputs允许**” 设置为，`false`而您的账户的输入策略*不允许* HTTP 输入，则您的创建任务请求将提交到 MediaConvert API。但是，API 随后将返回一个 HTTP 400 (BadRequestException) 错误。错误消息将是：You specified an input location that your policy disallows. Specify an allowed input location and resubmit your job.

有关条件键的更多信息，请参阅 *IAM 用户指南*中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

以下 JSON 是一个使用 MediaConvert 条件键的 IAM 策略示例，用于检查您的账户是否有不允许 HTTP 输入的输入策略：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "BlockHTTPInputsExample",
            "Effect": "Allow",
            "Action": "mediaconvert:CreateJob",
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "mediaconvert:HttpInputsAllowed": false
                }
            }
        }
    ]
}
```

------

有关中支持条件键的更多信息 MediaConvert，请参阅[如何 AWS Elemental MediaConvert 与 IAM 配合使用](security_iam_service-with-iam.md)。