跳转至

部署解决方案

在部署解决方案之前,建议您先查看本指南中有关架构图和区域支持等信息。然后按照下面的说明配置解决方案并将其部署到您的帐户中。

部署时间:约10分钟

概述

在您的亚马逊云科技账户中完成以下步骤。

  • 步骤1: 启动AWS CloudFormation模板
  • 步骤2: 创建超分任务

重要提示

请确保有足够的EC2配额(例如inf1实例vcpu)用于运行Batch作业。

步骤1: 启动AWS CloudFormation模板

此自动化AWS CloudFormation模板在亚马逊云科技中部署解决方案。

  1. 登录亚马逊云科技管理控制台,选择下面的链接启动AWS CloudFormation模板。您还可以选择直接下载模板进行部署。

  2. 默认情况下,该模板将在您登录控制台后默认的区域启动。要在不同的亚马逊云科技区域中启动解决方案,请使用控制台导航栏中的区域选择器。

  3. 创建堆栈页面,验证正确的模板URL位于Amazon S3 URL文本框中,然后选择下一步
  4. 指定堆栈详细信息页面,为您的解决方案堆栈分配一个账户内唯一且符合命名要求的名称。有关命名字符限制的信息,请参阅 AWS Identity and Access Management 用户指南中的IAM 和 STS 限制
  5. 参数部分,查看本解决方案模板的参数并根据需要进行修改。以下为参数的默认值。

    参数 默认值 描述
    MaxvCpus 16 Batch作业所调用实例的最大vcpu限制,这将影响Batch所启动的节点数。默认情况下,使用的inf1.xlarge实例有4个vcpu。当MaxvCpus设置为16时,将启动16/4=4台实例。
  6. 选择下一步

  7. 配置堆栈选项页面,选择下一步
  8. 审核页面,查看并确认设置。选中确认模板将创建Identity and Access Management (IAM)资源的框。
  9. 选择创建堆栈以部署堆栈。

    您可以在CloudFormation控制台的状态列中查看堆栈的状态。正常情况下,大约十分钟内可以看到CREATE_COMPLETE状态。

  10. 堆栈成功创建之后,您可以在CloudFormation的Outputs页签查看endpoint URL。

步骤2: 创建超分任务

您需要发送请求给endpoint URL以创建超分任务。请求中包含的参数如下所示:

参数 默认值 说明
key S3桶中的文件名。
scale 2 超分缩放倍数(单边)。可取值为2或4。
task inference 任务类型。可取值为debug或inference。当设置为debug时,会将所有中间文件传到S3,以供调试使用。默认为inference,即正常推理。
env spot 运行作业的环境。可取值为onDemand或spot。
segment_time 60 并行处理分片的时长(秒)。

以下为使用默认设置部署后使用各种语言发送请求的代码示例。

cURL

curl --location --request POST 'https://xxxxx.execute-api.xxxxx.amazonaws.com/prod' \
--header 'Content-Type: application/json' \
--data-raw '{
    "key": "xxxx.mp4"
}'

Python (requests)

import requests
import json

url = "https://xxxxx.execute-api.xxxxx.amazonaws.com/prod"

payload = json.dumps({
  "key": "xxxx.mp4"
})
headers = {
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

Java (OkHttp)

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"key\": \"xxxx.mp4\"\n}");
Request request = new Request.Builder()
  .url("https://xxxxx.execute-api.xxxxx.amazonaws.com/prod")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();

PHP (curl)

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://xxxxx.execute-api.xxxxx.amazonaws.com/prod',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "key": "xxxx.mp4"
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;